您的位置:首页 > 产品设计 > UI/UE

在普通类中获取request和session

2016-04-04 11:38 337 查看
在使用spring时,经常需要在普通类中获取session,request等对像.

比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.struts2.ServletActionContext即可很方便的取到session对像.

用法:ServletActionContext.getRequest().getSession();

但在单独使用spring时如何在普通类中获取session,reuqest呢?

第一种:

在web.xml增加如下代码:

[html] view
plain copy







<listener>

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

</listener>

注解方式

[html] view
plain copy







@Autowired

private HttpSession session;

@Autowired

private HttpServletRequest request;

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

第二种:

[java] view
plain copy







public class RequestUtils {

private static final Logger log = LoggerFactory

.getLogger(RequestUtils.class);

private static ThreadLocal<HttpServletRequest> requestLocal= new ThreadLocal<HttpServletRequest>();

public static HttpServletRequest getRequest() {

return (HttpServletRequest)requestLocal.get();

}

public static void setRequest(HttpServletRequest request) {

requestLocal.set(request);

}

}

[java] view
plain copy







public class GetRequest implements Filter {

/**

* Default constructor.

*/

public GetRequest() {

// TODO Auto-generated constructor stub

}

/**

* @see Filter#destroy()

*/

public void destroy() {

// TODO Auto-generated method stub

}

/**

* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)

*/

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

// TODO Auto-generated method stub

// place your code here

RequestUtils.setRequest((HttpServletRequest)request);

// pass the request along the filter chain

chain.doFilter(request, response);

}

/**

* @see Filter#init(FilterConfig)

*/

public void init(FilterConfig fConfig) throws ServletException {

// TODO Auto-generated method stub

}

}

在web.xml增加如下代码:

[html] view
plain copy







<filter>

<filter-name>GetRequest</filter-name>

<filter-class>com.filter.GetRequest</filter-class>

</filter>

<filter-mapping>

<filter-name>GetRequest</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: