在使用spring时,经常需要在普通类中获取session,request等对像.
比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.struts2.ServletActionContext即可很方便的取到session对像.
用法:ServletActionContext.getRequest().getSession();
一、在单独使用spring时如何在普通类中获取session,reuqest呢?
1、首先要在web.xml增加如下代码:<listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener>
2、使用方法:
2.1 在普通bean中
@Autowired private HttpSession session; @Autowired private HttpServletRequest request;
2.2 在普通类中
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
二、使用springmvc时,怎在普通类中获取到session对象?
你必须要有一个request的引用,否则是取不到的。request可以通过控制器传入,有了request自然就可以取到session了,或者可以通过spring的WebUtils取Session数据,如下:
拦截器举例:
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String context = (String) WebUtils.getSessionAttribute(request, "context_key");
return context != null ;
}