`
vipshichg
  • 浏览: 267396 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java普通类中使用request和session

    博客分类:
  • java
阅读更多

很多人都想,在一个普通类里如何才能获取系统的request或session,我也找了,但没有,就自己实现了一下,期待需要的有缘人,希望能帮到一点点。

  具体如下:

  实现步骤:

  1.定义一个线程类,普通的:

  类里最主要的就是定义了一个参数:

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

  另外给了set  get  remove和线程相关的三个方法;

  具体如下:

Java代码  收藏代码
  1. public class SystemRequestContext {  
  2.   private static ThreadLocal<HttpServletRequest> httpRequest = new ThreadLocal<HttpServletRequest>();  
  3.   private static ThreadLocal<HttpSession> session = new ThreadLocal<HttpSession>();  
  4.   public static void removeHttpSession()  
  5.   {  
  6.   session.remove();  
  7.   }  
  8.   public static HttpSession getSession() {  
  9.   return session.get();  
  10.   }  
  11.   public static void setSession(HttpSession _session) {  
  12.   session.set(_session);  
  13.   }  

 2.定义一个filter,拦截所有的请求,把request装入

  SystemRequestContext

Java代码  收藏代码
  1. public void doFilter(ServletRequest req, ServletResponse response,  
  2.   FilterChain chain) throws IOException, ServletException {  
  3.       HttpServletRequest request = (HttpServletRequest)req;  
  4.       SystemRequestContext.setHttpRequest(request);  
  5.       SystemRequestContext.setSession(request.getSession());  
  6.   try{  
  7.        chain.doFilter(request, response);  
  8.   }finally{  
  9.        SystemRequestContext.removeHttpRequest();  
  10.        SystemRequestContext.removeHttpSession();  
  11.   }  
  12. }  

 3.如何使用:

Java代码  收藏代码
  1. public class UserModuleValidateTag {  
  2.   public static boolean validateModule(String module){  
  3.          HttpServletRequest request =    SystemRequestContext.getHttpRequest();  
  4.         ifnull!=request)  
  5.       System.out.println("^_^"+request);  
  6.     }  
  7. }  

 

12
15
分享到:
评论
3 楼 Tyrion 2013-10-10  
这玩法不走寻常路。
2 楼 奔三的小生 2013-10-10  
这是要坑死的节奏吗,如果是NIO,自寻死路?,不是NIO线程的重用也让你吃不了兜着走
1 楼 qincidong 2013-10-10  
呵呵。。。

相关推荐

    普通java类 获取Request

    ### 普通Java类获取Request的方法 在Java Web开发中,经常需要在非Servlet类(如普通Java类)中获取`HttpServletRequest`对象,以便访问请求中的参数、头信息等。通常情况下,`HttpServletRequest`对象是在Servlet...

    struts2中request和session的获取

    在Struts2框架中,对request和session的管理和获取是实现Web应用中用户交互和状态维护的重要手段。本文将深入探讨Struts2中如何获取request和session,以及这两种对象的作用和应用场景。 ### Struts2框架简介 ...

    struts中自定义的tag的Java类中如何获得session

    本篇文章将详细探讨如何在Struts自定义标签的Java类中获取`HttpSession`对象,并对其应用场景进行深入分析。 ### 一、Struts自定义标签简介 #### 1.1 Struts自定义标签的作用 在Web应用开发中,经常需要在JSP页面...

    普通类传入对象request

    本文将详细探讨如何在普通类中传入并使用`HttpServletRequest`(简称request)对象,以及通过示例展示如何通过过滤器(Filter)模式实现在业务逻辑类中访问session中的数据。 #### 重要概念解析 - **`...

    STRUTS2获得session和request

    在探讨STRUTS2框架中如何获取session和request这一核心知识点时,我们首先需要理解STRUTS2框架的运行机制以及session与request在Web开发中的基础概念。 ### STRUTS2框架简介 STRUTS2是Apache软件基金会下的一个...

    Cookie与Session机制

    Cookie是一种简单的机制,用于在客户端存储信息以便后续的请求中使用。它最初是由Netscape社区开发并在W3C的标准中得到采纳,几乎所有现代浏览器都支持Cookie。 ##### 2. Cookie的工作原理 当用户首次访问一个网站...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    总结来说,Spring Boot允许开发者轻松地在普通类中使用bean,通过Spring容器的强大功能来管理对象和依赖。通过理解并熟练运用上述知识点,可以更高效地开发Spring Boot应用。博客"17. Spring Boot普通类调用bean【从...

    java EE复习重点

    - **源代码配置节点**:在 `web.xml` 文件中使用 `&lt;servlet&gt;` 和 `&lt;servlet-mapping&gt;` 元素进行配置。 - **部署后目录结构**:部署后的目录结构通常包含 `WEB-INF` 目录,其中存放了 `.class` 文件、配置文件和...

    java测试题

    以上内容涵盖了Java Web开发中的基础概念和常见操作,包括JSP指令、Servlet生命周期、JavaBean使用、请求和会话管理以及JSP动作标签的应用。这些知识点是Java Web开发者必备的基础技能。在面试或培训中,掌握这些...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义...

    某公司Java面试试题

    1. `equals()` 和 `hashCode()` 方法:在Java中,`equals()` 方法用于比较对象的内容是否相等,而 `hashCode()` 方法用于计算对象的哈希值,通常在集合类如List、Set和Map中使用。在判断对象是否存在于集合中时,这...

    java自学路线图java自学路线图.doc

    学习Session接口,普通属性和关联关系的映射,以及Native SQL、inverse、lazy和cascade。探索HQL(Hibernate Query Language)和性能优化,包括一级缓存、二级缓存和查询缓存。 9. **Spring**:Spring是核心的IoC...

    JAVA程序员面试问题

    通过HttpServletRequest的getSession()方法,开发者可以获取或创建一个session,并通过setAttribute()和getAttribute()方法在session中存取数据。 #### 7. 文件系统与目录结构 文件系统是操作系统用于组织和管理...

    史上最全java面试,103项重点知识,带目录

    Java中的IO流分为字节流和字符流,又分为输入流和输出流,共四种:InputStream/OutputStream(字节流)和Reader/Writer(字符流)。 16. **BIO/NIO/AIO的区别**: BIO是同步阻塞I/O,NIO是同步非阻塞I/O,AIO...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    2.8.3 在JSP页面中使用Include指令后,JSP不能编译 2.9 精彩回顾 第3章前人栽树后人乘凉 ——、JSP内置对象 3.1 本章学习任务 3.1.1 本章知识体系 3.1.2 实例开发任务 3.2 简化开发JSP内置对象概述 3.2.1 为什么...

    简易java框架开源论坛系统源码

    在这个开源项目中,我们可以学习到如何使用JSP来构建交互式的用户界面,以及如何处理用户的请求和响应。 首先,让我们深入了解JSP的核心概念。JSP主要有以下几个组成部分: 1. **JSP元素**:包括指令(directives)...

    Java自学知识点参考.doc

    学习基本接口,特别是Session,以及普通属性和关联关系映射,处理继承关系,使用HQL进行查询优化。理解一级缓存、二级缓存和查询缓存的作用,以及事务和并发控制。 9. **Spring**: Spring的核心是IOC和DI,学习...

    学生管理系统(Java 和 jsp)

    在这个系统中,Java类作为模型处理数据,jsp作为视图展示结果,Servlet作为控制器协调两者。 三、系统功能模块 1. 用户认证:包括学生和管理员的登录、注册功能,通常涉及到密码加密和验证。 2. 学生信息管理:...

    Java面试题,jsp&servlet面试题

    - **同步性**:ArrayList是非线程安全的,如果在多线程环境中使用,需要手动进行同步控制。而Vector是线程安全的,内部实现了同步,但这也导致其在多线程环境下性能较低。 - **扩容策略**:当容量不足时,...

Global site tag (gtag.js) - Google Analytics