`
youjin
  • 浏览: 22478 次
  • 来自: ...
社区版块
存档分类
最新评论

如何在Java的普通类中获取Session以及request对象

    博客分类:
  • web
阅读更多
转载: http://www.zhangriguang.cn/blog/20121010123838.html

  曾经有多少人因为不知如何在业务类中获取自己在Action或页面上保存在Session中值,当然也包括我,但是本人已经学到一种办法可以解决这个问题,来分享下,希望对你有多多少少的帮助!

前期准备:创建一个项目,并配置好一些需要的文件。

创建好项目后就创建一个类RequestFilter。

创建RequestFilter类是需要继承一接口,必须是javax.servlet包下的Filter接口。

创建好后在RequestFilter中创建线程:
//创建线程
threadLocalRequest、threadLocalResponse
在doFilter()方法中写
//把request、response传入
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
public  class RequestFilter implements Filter {
   //创建线程
   public static ThreadLocal<HttpServletRequest> threadLocalRequest = new ThreadLocal<HttpServletRequest>();
   public static ThreadLocal<HttpServletResponse> threadLocalResponse = new ThreadLocal<HttpServletResponse>();
   public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
       threadLocalRequest.set((HttpServletRequest) arg0);
       threadLocalResponse.set((HttpServletResponse) arg1);
        arg2.doFilter(arg0, arg1);
    }
   public void destroy() {}
   public void init(FilterConfig arg0) throws ServletException {}
}
  在类RequestFilter中写好代码后在WEB-INF目录下的web.xml文件中注册此类,
<filter>
   <filter-name>RequestFilter</filter-name>
   <filter-class>架包名.RequestFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>RequestFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
   <filter-name>RequestFilter</filter-name>
   <url-pattern>*.do</url-pattern>
</filter-mapping>
注册好后就可以在Java类中轻松获取自己在Action或页面上保存在Session中值,具体调用
//获取request
  HttpServletRequest request = RequestFilter.threadLocal.get();
  request.getSession().getAttribute("所保存的名称");
  HttpServletRequest request = RequestFilter.threadLocal.get();这句话一定要放在方法里面,不能放在方法外面。

只是简单的一些操作,希望对你有一定的帮助!
分享到:
评论

相关推荐

    普通java类 获取Request

    在Java Web开发中,经常需要在非Servlet类(如普通Java类)中获取`HttpServletRequest`对象,以便访问请求中的参数、头信息等。通常情况下,`HttpServletRequest`对象是在Servlet或者过滤器(Filter)中获取的。然而,...

    struts2中request和session的获取

    本文将深入探讨Struts2中如何获取request和session,以及这两种对象的作用和应用场景。 ### Struts2框架简介 Struts2是基于Java Servlet API的一个开源MVC(Model-View-Controller)框架,它提供了强大的功能来...

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

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

    STRUTS2获得session和request

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

    普通类传入对象request

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

    Cookie与Session机制

    开发者可以通过`HttpServletRequest`的`getSession()`方法获取当前用户的Session对象,然后像操作普通的Java对象一样操作它。 ```java // 获取或创建Session HttpSession session = request.getSession(true); // ...

    java测试题

    12. **JavaBean的特性**:JavaBean可以是一个普通的Java类,但它通常遵循一定的设计规范,如提供getter和setter方法,以便于属性的访问和修改。它的作用范围可以被容器控制,如session或application,这意味着...

    某公司Java面试试题

    在Java面试中,经常会遇到各种类型的问题,涉及到语言基础、数据结构、异常处理、容器理解、内存模型以及对象比较等多个方面。以下是对给定题目中涉及知识点的详细解释: 1. `equals()` 和 `hashCode()` 方法:在...

    java 获取路径的各种方法(总结)

    在JSP页面或者Servlet中,常用的方法来获取路径包括使用`request`对象提供的方法,通过`session`和`servletContext`获取,以及利用Java类加载器`ClassLoader`。下面详细介绍这些方法: - `request.getRealPath("/")...

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

    在Spring Boot框架中,普通类调用bean是常见的操作,特别是在构建复杂应用时。这篇博客“17. Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中...

    JSP隐含对象.ppt

    这些对象使得开发者能够方便地与Servlet环境进行交互,执行诸如获取客户端数据、向客户端发送数据、控制数据的作用域以及处理异常等操作。 1. **隐含对象概述** JSP隐含对象是在JSP页面中可以直接使用的预定义对象...

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

    ==在Java中用于比较基本类型时比较数值,对于引用类型比较的是内存中的引用地址。equals方法默认也是比较引用,但如String、Integer等类重写了equals方法,用于比较对象的内容。 3. **hashCode()与equals()关系**...

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

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    java EE复习重点

    - **解析请求**:通过 `HttpServletRequest` 对象获取请求参数,如 `getParameter(String name)`。 - **设置属性**:使用 `HttpServletRequest` 的 `setAttribute(String name, Object value)` 方法设置属性。 - ...

    Java面试题,jsp&servlet面试题

    Java是企业级应用开发的重要语言,面试中常常会考察开发者对基础概念、设计模式以及并发处理等核心知识的掌握程度。以下是对给定文件中提到的一些Java面试知识点的详细解释: 1. **ArrayList 和 Vector 的区别**: ...

    会话中用户登录记录

    在Java Web开发中,会话(Session)是一种用于跟踪用户状态的技术。当用户登录系统时,通常需要记录并存储他们的登录信息,以便在下次访问时能够识别和验证用户。在这个场景中,"会话中用户登录记录"涉及了几个关键...

    笔试题_java

    1. **JSP内置对象**:JSP(JavaServer Pages)提供了九个内置对象,它们分别是:request(请求对象)、response(响应对象)、session(会话对象)、application(应用程序对象)、out(输出对象)、pageContext...

    九歌在线java笔试题

    26. **JSP内置对象**:request对象用于获取客户端请求信息,response对象用于响应客户端,session对象用于管理用户会话,application对象代表整个Web应用,pageContext对象用于访问JSP页面的上下文信息,还包括out、...

    java-servlet-api.doc

    如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到Session中,这时,你需要使用HttpSession对象。任何绑定到Session上的对象都可以被处理同一会话的...

Global site tag (gtag.js) - Google Analytics