`
jinji713
  • 浏览: 42114 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

告诉你如何获得request response session 对象

阅读更多
         刚刚写了一个小例子,可是发现页面的属性值都是通过setter getter方法赋值的,(这里感觉有些类似一些面向组建的框架如:tapestry,同样使用了功能强大的ognl表达式)如果我们想要通过request 得到某个值 那么struts2中是如何得到的呢
        众所周知在struts1中 public ActionForward execute(ActionMapping mapping, ActionForm form,
     HttpServletRequest request, HttpServletResponse response) { } 就有request ,respongse对象

那么在struts2中有两种方式可以得到这些对象

1、非IoC方式

要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。有了这个对象我们想获得其他几个对象就好办了


ActionContext ctx = ActionContext.getContext();
        Map session = ctx.getSession();
细心的朋友可以发现这里的session是个map对象在Struts2中底层的session都被封装成了Map类型我们可以直接操作这个map 进行对session的写入和读取操作而不用去直接操作HttpSession对象

另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。

HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
如果你只是想访问session的属性(Attribute),你也可以通过ActionContext.getContext().getSession()获取或添加session范围(Scoped)的对象。



2、IoC方式(这种方式在tapestry中也是这样实现的)
     要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。具体实现

publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
    private String message;
    private Map att;
    private HttpServletRequest request;
    private HttpServletResponse response;   
   
    public String getMessage() {
        return message;       
    }
   
    publicvoid setSession(Map att) {
        this.att = att;
    }
   
    publicvoid setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
   
    publicvoid setServletResponse(HttpServletResponse response) {
        this.response = response;
    }
   
    @Override
    public String execute() {       
        att.put("msg", "Hello World from Session!");
       
        HttpSession session = request.getSession();
       
        StringBuffer sb =new StringBuffer("Message from request: ");
        sb.append(request.getParameter("msg"));
        sb.append("<br>Response Buffer Size: ");
        sb.append(response.getBufferSize());
        sb.append("<br>Session ID: ");
        sb.append(session.getId());
       
        message = sb.toString();
        return SUCCESS;
    }
}
分享到:
评论

相关推荐

    Struts2的Action中获得request response session几种方法

    通过`ActionContext`的`getContext()`方法可以得到当前的`ActionContext`实例,然后通过这个实例进一步获取到request、response和session。 #### 示例代码: ```java import ...

    struts2创建 request response session application

    在Struts2框架中,理解并正确使用request、response、session和application范围对于有效地管理数据和状态至关重要。这些范围帮助我们在Web应用程序中实现逻辑和数据流的分离,提高代码的可维护性和可扩展性。通过...

    访问或添加三个范围的属性与获取Request-Session-ServletContext-Response对象.rar

    标题中的“访问或添加三个范围的属性与获取Request-Session-ServletContext-Response对象”指的是在Java Web开发中,如何操作四个重要的请求处理对象:HttpServletRequest(Request)、HttpSession(Session)、...

    session对象及其常用方法

    在 JSP 页面中可以直接使用 Session 对象,也可以通过 pageContext.getSession() 或 request.getSession() 方法重新获取 Session 对象。Session 对象可以保存用户的登录信息,实现购物车功能等。 HTTP 协议是一种无...

    ASP内置对象 ASp5大内置对象

    目前的 ASP 版本总共提供了六个内建对象,分别是Request对象、Response对象、Server对象、Session对象、Application对象及ObjectContext对象,其各自功能简述如下: Request对象:负责从客户机接收信息; Response ...

    Java Web程序设计-1期 项目库_单元案例_Request和Response-Session对象案例.doc

    【Java Web程序设计】在开发Web应用程序时,理解并熟练运用`Request`、`Response`以及`Session`对象是至关重要的。这三个对象是Java Servlet API的核心组成部分,它们在处理HTTP请求和响应时扮演着关键角色。 `...

    JAVA Web程序设计-3期(KC006) 05单元案例_Request和Response-Session对象案例.doc

    在Java Web程序设计中,Request和Response对象以及Session对象是核心概念,它们在处理客户端请求和响应时起着至关重要的作用。在这个文档中,我们通过两个课堂案例来深入理解这些概念。 首先,我们来看第一个案例,...

    JSP request&response;&out;.ppt

    什么是JSP的内置对象 JSP的内置对象有哪些? request对象 与 response对象 session对象 application对象 out对象

    各种常用方法,包括request与response对象的获取,session数据的操作

    总结来说,理解request和response对象的使用,掌握session数据的管理,以及熟悉MongoDB与Node.js的结合,是构建高效、稳定的Web系统的基础。在实际项目中,这些知识点可以帮助开发者构建出具有用户认证、状态追踪等...

    struts2使用request、response

    相较于Struts1,Struts2对request、response、session等核心对象的处理方式有所不同。在Struts1中,可以直接访问这些对象;而在Struts2中,为了更好地实现解耦,这些对象被封装了起来,开发者需要通过特定的方式才能...

    六大对象Response,Request,Server,Application,Session,Cookie

    在ASP.NET编程中,了解和熟练使用六大对象——Response,Request,Server,Application,Session,Cookie至关重要。这些对象是ASP.NET框架中用于处理客户端请求和服务器响应的核心组件,它们提供了丰富的功能来帮助...

    Struts2通过使用ActionContext类获取request和response对象

    在Struts2中,ActionContext类扮演着重要的角色,它提供了与请求(Request)和响应(Response)对象交互的能力。了解如何通过ActionContext类获取和操作这些对象是开发Struts2应用的基础。 ActionContext类位于`org...

    2022年实习十七-使用ASP对象Request对象和Response对象.ppt

    在ASP中,Request和Response是两个非常重要的内置对象,它们分别用于处理客户端发送的请求和向客户端发送响应。 Request对象主要用于获取客户端发送到服务器的数据。在ASP程序中,数据可以通过多种方式传递,如GET...

    struts2访问request,session,application作用域

    在 Struts2 中,处理用户请求时经常需要使用到 Servlet 的内置对象,比如 Request、Session 和 Application,这些对象可以帮助开发者存储和获取数据。然而,在实际应用中,为了避免代码与 Servlet API 过度耦合,...

    request和response实现跳转和重定向的区别

    在处理用户操作时,我们常常需要对页面进行跳转或重定向,这通常通过`request`和`response`对象来实现。这两者在实现页面跳转时有明显的区别,下面将详细阐述它们的不同之处。 首先,我们了解`request`和`response`...

    Laravel框架Request、Response及Session操作示例

    可以通过`Request`对象的`session()`方法,`session()`全局辅助函数,或者`Session` Facade。例如,`$request-&gt;session()-&gt;put('key1','value1')`。 2. **获取值**:获取Session数据通常使用`get`方法,如`session...

    jsp内置对象

    response 响应对象 session 会话对象 request 请求对象 pageContext 页面上下文对象 application 应用程序对象 exception 异常对象 说明:有几种对象看起来和ASP的内置对象差不多,功能也类似,这是因为这些内置对象...

    JSP内置对象:Request和Response的简单介绍及使用

    **JSP内置对象Request与Response详解** 在JavaServer Pages (JSP) 技术中,Request和Response是两个非常重要的内置对象,它们分别代表了HTTP请求和响应的生命周期中的关键部分。了解并熟练掌握这两个对象的使用对于...

Global site tag (gtag.js) - Google Analytics