在普通类中获取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>
比如一些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>
相关文章推荐
- Building Telephony Systems With OpenSIPS---Introduction to SIP
- uedit的简单使用案例
- hdu 1711 Number Sequence
- POJ2479&&POJ2593 Maximum sum&&Max Sequence(最大连续和)
- iOS学习笔记03-UITableView
- iOS学习笔记02-UIScrollView
- 设计模式-builder
- Arduino101 中使用 Mirf 库的问题(2016-04-04)
- iPhone/iPad UI尺寸规范
- Builder
- firefox 扩展开发笔记(三):高级ui交互编程
- solution Of Pat 1099. Build A Binary Search Tree (30)
- IOS开发之UI布局
- [Elixir006]CSV(Comma-separated values)处理
- Textarea - 百度富文本编辑器插件UEditor
- php函数mysql_query批量执行多句sql语句
- Ant_的最完整build.xml解释
- Apue学习:线程
- UITableView优化
- DuiLib(6)——界面管家CPaintManagerUI的函数简介