`

struts2 action中获取request session application的方法

 
阅读更多
struts2 action中获取request session application的方法

sessionapplicationstrutsactionstringobject
共四种方式:
其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象
而Map就是把request对象中的属性取出做成了键值对而已。
【方法一】
[java] view plaincopy
public class LoginAction { 
    private Map request; 
    private Map session; 
    private Map application; 
     
    public String execute() { 
        request = (Map)ActionContext.getContext().get("request"); 
        session = ActionContext.getContext().getSession(); 
        application = ActionContext.getContext().getApplication();
 
        request.put("username1", "jingjing1"); 
        session.put("username2", "jingjing2"); 
        application.put("username3", "jingjing3"); 
        return "success"; 
    } 


取出结果
[html] view plaincopy
<body> 
   <% 
      String username1 = (String)request.getAttribute("username1"); 
      String username2 = (String)session.getAttribute("username2"); 
      String username3 = (String)application.getAttribute("username3"); 
   %> 
   <%=username1 %> 
   <%=username2 %> 
   <%=username3 %> 
</body> 

【方法二】
[java] view plaincopy
public class LoginAction implements RequestAware,SessionAware,ApplicationAware
    private Map<String, Object> request; 
    private Map<String, Object> session; 
    private Map<String, Object> application; 
     
    public void setRequest(Map<String, Object> request) { 
        // TODO Auto-generated method stub 
        this.request = request; 
    } 
 
    public void setSession(Map<String, Object> session) { 
        // TODO Auto-generated method stub 
        this.session = session; 
    } 
 
    public void setApplication(Map<String, Object> application) { 
        // TODO Auto-generated method stub 
        this.application = application; 
    } 
    public String execute() { 
        request.put("username1", "jingjing11"); 
        session.put("username2", "jingjing222"); 
        application.put("username3", "jingjing33"); 
        return "success"; 
    } 

【方法三】
[java] view plaincopy
public class LoginAction { 
    private HttpServletRequest request; 
    private HttpSession session; 
    private ServletContext application; 
    public String execute() { 
             
       request = ServletActionContext.getRequest(); 
        session = request.getSession(); 
        application = session.getServletContext(); 

         
        //application = ServletActionContext.getRequest().getSession().getServletContext(); 
         
        request.setAttribute("aaa", "aaa"); 
        session.setAttribute("bbb", "bbb"); 
        application.setAttribute("ccc", "ccc"); 
         
        return "success"; 
    } 


【方法四】
[java] view plaincopy
public class LoginAction implements ServletRequestAware
    private HttpServletRequest request; 
    private HttpSession session; 
    private ServletContext application; 
     
    public void setServletRequest(HttpServletRequest request) { 
        // TODO Auto-generated method stub 
        this.request = request; 
        this.session = request.getSession(); 
        this.application = session.getServletContext(); 
    } 
     
    public String execute() {        
        request.setAttribute("111", "111"); 
        session.setAttribute("222", "222"); 
        application.setAttribute("333", "333"); 
        return "success"; 
    }        


HttpServletRequest方法总结:
HttpServletRequest接口是继承自ServletRequest接口的,增加了和HTTP相关的一些方法
getScheme() 方法返回请求的计划,比如http,https或者ftp.
getServerName() 方法返回被发送请求的服务器的主机名
getServerPort() 方法返回被发送请求的端口号。
getContextPath() 返回请求地址的根目录,以"/"开关,但不是以"/"结尾。

一个常用的获得服务器地址的连接字符串是:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

getCookies() 取得cookie
getMethod() 取得请求方法,如get,post或put
getRequestURL() 取得请求URL(统一资源定位符)
getRequestURI() 取得请求URI(统一资源标识符)
getSession() 取得对应session
public HttpSession getSession();
public HttpSession getSession(boolean create);
返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。

ServletRequestAware与RequestAware的区别
ServletRequestAware——提供对HttpServletRequest对象的访问
RequestAware ——通过Map来提供对所有request属性的访问
分享到:
评论

相关推荐

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

    以下将详细介绍如何在Struts2的Action中获取request、response、session。 ### 1. 使用ActionContext获取request、response、session Struts2的Action可以通过`ActionContext`来间接获取`request`、`response`和`...

    Struts2访问request,session,application的四种方式

    OGNL是Struts2中强大的表达式语言,它允许开发者直接在JSP或Action中通过表达式来访问request、session和application中的数据。例如,`&lt;s:property value="#session['key']" /&gt;`可以在页面上显示session中的值。在...

    struts2访问request,session,application作用域

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

    Struts2学习笔记(三) Struts2中访问request,session,和application对象

    在Struts2中,访问request、session和application对象是进行数据共享和传递的重要手段。这篇学习笔记主要探讨了如何在Struts2框架下有效地利用这三种域对象。 首先,request对象代表一次HTTP请求,它存储的数据仅...

    struts2创建 request response session application

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

    struts2访问application、session以及request等web资源的示例代码

    在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...

    struts2的API耦合与动态方法调用

    本文将重点讨论Struts2中的API耦合和动态方法调用,这两种特性对于理解框架的工作原理和提高代码的灵活性至关重要。 首先,我们来看看Struts2 API耦合的几种方式: 1. **ActionContext类**:ActionContext是Struts...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...

    struts2之Action访问Servlet API

    在本文中,我们将详细介绍 Struts2 访问 Servlet API 的几种方法。 一、使用 ActionContext 类 ActionContext 类是 Struts2 框架中一个重要的类,它提供了多种方法来访问 Servlet API。该类可以模拟获取 request、...

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

    在Struts2中,ActionContext不仅仅是获取request和response的工具,它还包含了其他有用的上下文信息,如session、application等。例如,你可以通过ActionContext获取session中的数据: ```java Map, Object&gt; ...

    Struts2_OGNL

    4. 命名对象:包括在Servlet作用范围内的对象信息,如Request、Session、Application等。 在实际开发中,开发者可以通过OGNL表达式访问值栈中的Action属性、对象和其他信息。例如,使用标签可以输出Action中的属性...

    struts2中的ActionContext与ognl

    ActionContext是Struts2框架中一个关键的组件,它提供了当前请求上下文的信息,而OGNL(Object-Graph Navigation Language)则是Struts2中的表达式语言,用于在模型和视图之间进行数据传递。下面将详细探讨这两个...

    struts2学习心得

    本文总结了Struts2的常用方法和经验,涵盖了配置问题、EL表达式、Struts2的架构和Namespace等方面的知识点。 一、配置问题 Struts2的最新版本为GA 2.2.1,需要以下几个类库: 1.commons-fileupload-1.2.1.jar 2....

    struts2简单案例

    - **Action类**:在Struts2中,Action类是处理用户请求的中心组件,它封装了业务逻辑,并通过调用Service层来处理实际的业务操作。 - **配置文件**:`struts.xml`是Struts2的主要配置文件,用于定义Action、结果...

    ActionContext介绍(在Struts2中)

    象,如HttpServletRequest、HttpServletResponse,或者需要访问Session和Application等信息,在Struts2框架中,我们可以利用ActionContext和ServletActionContext这两个类。ActionContext是Struts2提供的一个核心上...

    Struts1.2Action之处理多个业务

    在处理多个业务时,ActionContext提供了访问当前请求上下文的桥梁,可以用来获取请求参数,或者设置值到Request、Session、Application域中。这对于共享数据或在多个Action之间传递信息非常有用。 **五、异常处理**...

    Struts2五种数据封装Demo

    在这个“Struts2五种数据封装Demo”中,我们将深入探讨Struts2的数据封装机制,以及如何通过配置文件来操作Servlet的三大核心对象——Request、Session和Application。同时,我们还将了解如何从表单中获取数据并进行...

    struts2 ognl的用法

    ### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现...

    Struts2内置拦截器简介

    - **说明**:用于控制Action的属性和状态信息存储的位置,可以选择存储在Request、Session或Application等不同的作用域中。 20. **Servlet Config (Servlet配置)** - **功能**:如果某个Action需要直接访问...

Global site tag (gtag.js) - Google Analytics