很多人在找,在一个普通类里如何才能取系统的request或session,我也找了下,但没有,就自己实现了一下,期待需要的有缘人,希望能帮到一点点。南京Java软件培训
具体如下:
实现步骤:
1.定义一个线程类,普通的:
类里最主要的就是定义了一个参数:
private static ThreadLocal<HttpServletRequest> httpRequest = new ThreadLocal<HttpServletRequest>();
另外给了set get remove和线程相关的三个方法;
具体如下:南京Java软件培训
[java]
public class SystemRequestContext {
private static ThreadLocal<HttpServletRequest> httpRequest = new ThreadLocal<HttpServletRequest>();
private static ThreadLocal<HttpSession> session = new ThreadLocal<HttpSession>();
public static void removeHttpSession()南京Java软件培训
{
session.remove();
}
public static HttpSession getSession() {
return session.get();
}
public static void setSession(HttpSession _session) {
session.set(_session);
}
2.定义一个filter,拦截所有的请求,把request装入
[java]
SystemRequestContext
代码如下:
[java]
public void doFilter(ServletRequest req, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
SystemRequestContext.setHttpRequest(request);
SystemRequestContext.setSession(request.getSession());
try{
chain.doFilter(request, response);
}finally{
SystemRequestContext.removeHttpRequest();
SystemRequestContext.removeHttpSession();
}
}
3.如何使用:
[java]
public class UserModuleValidateTag {
public static boolean validateModule(String module)
{
HttpServletRequest request = SystemRequestContext.getHttpRequest();
if(null!=request)南京Java软件培训
System.out.println("^_^"+request);
Java是计算机领域的“普通话”,是打开计算机科学之门的钥匙;学好Java使你能真正从“计算机系统底层”角度理解计算机;学好Java能把计算机玩弄于股掌之上,成为计算机系统的专家;学好Java是成为编程高手的必经之路。
93年成立至今,江苏万和计算机培训中心培养的Java软件工程师数万名,万名学员在众多合作企业中就职,他们当中有很多人已经走上了管理岗位,在业界不仅树立起良好的口碑,同时也增加了良好的人脉关系,为学员构筑无障碍就业提供独有通道。