flexsession禁用_Flex控制session方法(转)

Flex控制session方法

1、在web.xml增加

AMFContextFilter

soft.flex.context.AMFContextFilter

AMFContextFilter

MessageBrokerServlet

2、增加AMFContextFilter文件

package soft.flex.context;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class AMFContextFilter implements Filter {

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws ServletException, IOException {

AMFContext.setCurrentContext((HttpServletRequest) request,

(HttpServletResponse) response);

chain.doFilter(request, response);

}

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

public void destroy() {

// TODO Auto-generated method stub

}

}

3、增加AMFContext文件

package soft.flex.context;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class AMFContext {

/**

* ThreadLocal object for storing object in current thread.

*/

@SuppressWarnings("unchecked")

private static ThreadLocal tl = new ThreadLocal();

/**

* Set current context

*

* @param request

*            The HttpRequest object

* @param response

*            The HttpResponses object

*/

@SuppressWarnings("unchecked")

static public void setCurrentContext(HttpServletRequest request,

HttpServletResponse response) {

AMFContext c = getCurrentContext();

if (c == null) {

c = new AMFContext(request, response);

tl.set(c);

} else {

c.setRequest(request);

c.setResponse(response);

}

}

/**

* Get current context value

*

* @return The current context

*/

static public AMFContext getCurrentContext() {

return (AMFContext) tl.get();

}

// ----------------------------------------------------------

//

// Class members

//

// ----------------------------------------------------------

/**

* The http request object. The lifecycle of the request object is defined

* as the request scope. It may be reused in another incoming connection, so

* dont use it in another thread.

*/

private HttpServletRequest request;

/**

* The http response object. The lifecycle of the response object is defined

* as the request scope. Dont use it in another thread. Also dont write

* output to the response when it is used in the context, but you may get or

* set some response header when it is safe.

*/

private HttpServletResponse response;

/**

* The constructor is private, to get an instance of the AMFContext, please

* use getCurrentContext() method.

*

* @param request

* @param response

*/

private AMFContext(HttpServletRequest request, HttpServletResponse response) {

this.request = request;

this.response = response;

}

/**

* Get request object

*

* @return Http request object

*/

public HttpServletRequest getRequest() {

return request;

}

/**

* Set request object

*

* @param Http

*            request object

*/

public void setRequest(HttpServletRequest request) {

this.request = request;

}

/**

* Get response object

*

* @return Http response object

*/

public HttpServletResponse getResponse() {

return response;

}

/**

* Set response object

*

* @param response

*            Http response object

*/

public void setResponse(HttpServletResponse response) {

this.response = response;

}

/**

* Get the servlet context

*

* @return

*/

public ServletContext getServletContext() {

HttpSession session = this.getSession();

return session.getServletContext();

}

/**

* Get the current running session

*

* @return

*/

public HttpSession getSession() {

return request.getSession();

}

/**

* Get an object stored in the session.

*

* @param attr

*            Attribute Name

* @return The value stored under the attribute name.

*/

public Object getSessionAttribute(String attr) {

HttpSession session = this.getSession();

return session.getAttribute(attr);

}

/**

* Store an object in the session.

*

* @param attr

*            Attribute Name

* @param value

*            The value.

*/

public void setSessionAttribute(String attr, Object value) {

HttpSession session = this.getSession();

session.setAttribute(attr, value);

}

/**

* Get an object stored in the servlet context.

*

* @param attr

*            Attribute Name

* @return The value stored under the attribute name.

*/

public Object getContextAttribute(String attr) {

ServletContext sc = this.getServletContext();

return sc.getAttribute(attr);

}

/**

* Store an object in the servlet context.

*

* @param attr

*            Attribute Name

* @param value

*            The value.

*/

public void setContextAttribute(String attr, Object value) {

ServletContext sc = this.getServletContext();

sc.setAttribute(attr, value);

}

/**

* Get an object stored in the current request.

*

* @param attr

*            Attribute Name

* @return The value stored under the attribute name.

*/

public Object getRequestAttribute(String attr) {

return request.getAttribute(attr);

}

/**

* Store an object in the current request.

*

* @param attr

*            Attribute Name

* @param value

*            The value.

*/

public void setRequestAttribute(String attr, Object value) {

request.setAttribute(attr, value);

}

}

4、增加FlexSessionInterceptor文件

package soft.flex.context;

import javax.servlet.http.HttpServletRequest;

import org.aopalliance.intercept.MethodInterceptor;

import org.aopalliance.intercept.MethodInvocation;

import soft.common.util.Constants;

public class FlexSessionInterceptor implements MethodInterceptor {

public Object invoke(MethodInvocation invocation) throws Throwable {

AMFContext context = AMFContext.getCurrentContext();

HttpServletRequest request = context.getRequest();

if (request.getSession().getAttribute(Constants.LOGIN_USER_INFO) == null) {

throw new Exception("Session超时,请您重新登陆!");

}

return invocation.proceed();

}

}

5、在applicationContext.xml增加以下内容

class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

formDesignerService

sessionAdvice

这样子的话,在所有的flex请求中都会先执行FlexSessionInterceptor类中的invoke方法如果要在任何java类中获取sessionr的话,使用AMFContext.getCurrentContext().getSession()即可

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-12-26 11:18

浏览 977

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值