1. 程式人生 > >普通類中獲取request,session

普通類中獲取request,session

在使用spring時,經常需要在普通類中獲取session,request等對像. 
比如一些AOP攔截器類,在有使用struts2時,因為struts2有一個介面使用org.apache.struts2.ServletActionContext即可很方便的取到session對像. 

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

但在單獨使用spring時如何在普通類中獲取session,reuqest呢? 

第一種:
在web.xml增加如下程式碼: 

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

註解方式

  1. @Autowired    
  2. private HttpSession session;      
  3. @Autowired    
  4. private HttpServletRequest request;    
  1. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();   

第二種:

  1. publicclass RequestUtils {  
  2.     privatestaticfinal Logger log = LoggerFactory  
  3.             .getLogger(RequestUtils.class);  
  4.     privatestatic ThreadLocal<HttpServletRequest> requestLocal= new ThreadLocal<HttpServletRequest>();  
  5.     publicstatic HttpServletRequest getRequest() {  
  6.          return (HttpServletRequest)requestLocal.get();    
  7.     }  
  8.     publicstaticvoid setRequest(HttpServletRequest request) {  
  9.           requestLocal.set(request);    
  10.     }  
  11. }  
  1. publicclass GetRequest implements Filter {  
  2.     /** 
  3.      * Default constructor.  
  4.      */
  5.     public GetRequest() {  
  6.         // TODO Auto-generated constructor stub
  7.     }  
  8.     /** 
  9.      * @see Filter#destroy() 
  10.      */
  11.     publicvoid destroy() {  
  12.         // TODO Auto-generated method stub
  13.     }  
  14.     /** 
  15.      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) 
  16.      */
  17.     publicvoid doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
  18.         // TODO Auto-generated method stub
  19.         // place your code here
  20.         RequestUtils.setRequest((HttpServletRequest)request);  
  21.         // pass the request along the filter chain
  22.         chain.doFilter(request, response);  
  23.     }  
  24.     /** 
  25.      * @see Filter#init(FilterConfig) 
  26.      */
  27.     publicvoid init(FilterConfig fConfig) throws ServletException {  
  28.         // TODO Auto-generated method stub
  29.     }  
  30. }  
在web.xml增加如下程式碼: 
  1. <filter>
  2.                 <filter-name>GetRequest</filter-name>
  3.         <filter-class>com.filter.GetRequest</filter-class>
  4. </filter>
  5.     <filter-mapping>
  6.         <filter-name>GetRequest</filter-name>
  7.         <url-pattern>/*</url-pattern>
  8.     </filter-mapping>
本文轉載於:http://blog.csdn.net/chenzenan/article/details/25387977