`
liuxinglanyue
  • 浏览: 557262 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Action中取得request,session的四种方法(Struts2)

阅读更多

在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?

  Struts2为我们提供了四种方式。

  分别为

  servlet 不相关的 非IoC 取得Request等对象的方式

  servlet 不相关的 IoC 取得Request等对象的方式

  servlet 相关的 非IoC 取得Request等对象的方式

  servlet 相关的 IoC 取得Request等对象的方式

  以下分别叙述。

  首先请看struts.xml文件

  文件内容:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
 
<struts> 
 
    <package name="default" extends="struts-default"> 
        <action name="login" class="struts2.login.LoginAction"> 
            <result name="success" >result.jsp</result> 
        </action> 
         
        <action name="login2" class="struts2.login.Login2Action"> 
            <result name="success" >result.jsp</result> 
        </action> 
         
        <action name="login3" class="struts2.login.Login3Action"> 
            <result name="success" >result.jsp</result> 
        </action> 
         
        <action name="login4" class="struts2.login.Login4Action"> 
            <result name="success" >result.jsp</result> 
        </action> 
    </package> 
     
</struts>

 

其中的LoginAction,Login2Action,Login3Action,Login4Action分别对应四种方式的Action。

  文件名:result.jsp

  文件内容:

<%@ page contentType="text/html; charset=gb2312" %> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
 
<html> 
request 属性是 ${requestScope.attribute}<br> 
session 属性是 ${sessionScope.attribute}<br> 
application 属性是 ${applicationScope.attribute}<br> 
</html>
 

文件名:getrequest.jsp

  文件内容:

 

 

<%@ page contentType="text/html; charset=gb2312" %> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<html> 
<a href="login.action">servlet 不相关的 非IoC 取得Request等对象的方式</a><br> 
<a href="login2.action">servlet 不相关的 IoC 取得Request等对象的方式</a><br> 
<a href="login3.action">servlet 相关的 非IoC 取得Request等对象的方式</a><br> 
<a href="login4.action">servlet 相关的 IoC 取得Request等对象的方式</a><br> 
</form> 
</html>
 然后分别叙述4种方式,


  1,servlet 不相关的 非IoC 取得Request等对象的方式

  这种方法先取得ActionContext,然后获取Map类型的request等对象

  Action文件:

 

package struts2.login;  
  import java.util.Map;  
  import com.opensymphony.xwork2.ActionContext;  
  import com.opensymphony.xwork2.ActionSupport;  
  public class LoginAction extends ActionSupport{  
  private ActionContext context;  
  private Map request;  
  private Map session;  
  private Map application;  
  @Override  
  public String execute() throws Exception {  
  // TODO Auto-generated method stub  
  this.context = ActionContext.getContext();  
  this.request = (Map)this.context.get("request");  
  this.session = this.context.getSession();  
  this.application = this.context.getApplication();  
  this.request.put("attribute", "request value servlet 不相关的 非IoC ");  
  this.session.put("attribute", "session value servlet 不相关的 非IoC ");  
  this.application.put("attribute", "application value servlet 不相关的 非IoC ");  
  return SUCCESS;  
  }  
  } 
  2,servlet 不相关的 IoC 取得Request等对象的方式


  这种方法,是实现特定的接口,由container来设定request等对象。请注意如下代码示例中红色文字的部分。

  Action文件:

 

package struts2.login;  
  import java.util.Map;  
  import org.apache.struts2.interceptor.ApplicationAware;  
  import org.apache.struts2.interceptor.RequestAware;  
  import org.apache.struts2.interceptor.SessionAware;  
  import com.opensymphony.xwork2.ActionSupport;  
  public class Login2Action extends ActionSupport  
  implements RequestAware , SessionAware, ApplicationAware{  
  private Map request;  
  private Map session;  
  private Map application;  
  @Override  
  public String execute() throws Exception {  
  // TODO Auto-generated method stub  
  this.request.put("attribute", "request value servlet 不相关的 IoC ");  
  this.session.put("attribute", "session value servlet 不相关的 IoC ");  
  this.application.put("attribute", "application value servlet 不相关的 IoC ");  
  return SUCCESS;  
  }  
  @Override  
  public void setRequest(Map arg0) {  
  // TODO Auto-generated method stub  
  this.request = arg0;  
  }  
  @Override  
  public void setSession(Map arg0) {  
  // TODO Auto-generated method stub  
  this.session = arg0;  
  }  
  @Override  
  public void setApplication(Map arg0) {  
  // TODO Auto-generated method stub  
  this.application = arg0;  
  }  
  } 
 

 

 

 

 

分享到:
评论

相关推荐

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

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

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

    在Struts2中,有四种主要的方式可以用来操作request、session和application上下文中的数据。这篇内容将深入探讨这四种方法,并结合源码和实用工具来帮助理解。 1. **ActionContext**: Struts2的核心组件...

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

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

    struts2访问request,session,application作用域

    在 Struts2 的 Action 类中,可以通过以下方式间接地访问到 Request、Session 和 Application: ```java // 使用 ActionContext 来获取 ActionContext context = ActionContext.getContext(); Map request = (Map)...

    STRUTS2获得session和request

    ### STRUTS2中获取Session和Request的方法 在STRUTS2框架中,有多种方式可以访问`session`和`request`对象。下面我们将详细介绍其中的两种主要方法:实现接口法和使用ActionContext。 #### 实现接口法 STRUTS2...

    struts2使用request、response

    ### Struts2中request与response的使用方法 #### 一、引言 Struts2作为Struts1的后续版本,在架构设计与实现机制上进行了大量的改进。相较于Struts1,Struts2对request、response、session等核心对象的处理方式有所...

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

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

    struts2创建 request response session application

    接下来,我们将深入探讨Struts2中如何创建和使用这些范围。 1. 请求(Request)范围: 在HTTP协议中,每个请求都是无状态的,因此,如果要在多个Action之间共享数据,可以将数据存储在请求范围内。在Struts2中,...

    struts2综合复习习题

    - OGNL(对象图导航语言)是一种强大的表达式语言,用于在Struts2中访问和操作对象。OGNL的根对象是`ValueStack`,它是Struts2框架内部用于存储请求作用域中的所有对象的容器。 #### 九、在jsp页面中可以通过Struts2...

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

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

    Struts2 Request Process Procedure

    Struts2是一个流行的Java web框架,它为开发者提供了一种结构化的方式来构建MVC(Model-View-Controller)应用程序。其请求处理流程是Struts2的核心机制,它决定了当一个HTTP请求到达时,如何被转化为应用程序的动作...

    Struts2 如何使Action取得属性范围 通配符 国际化等内容

    根据给定文件的内容,我们将逐一介绍Struts2中Action获取属性范围的四种方式: 1. **Servlet不相关的非IoC方式** - **原理**: 这种方式通过`ActionContext`来获取`request`等范围对象。由于没有使用依赖注入(IoC)...

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

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

    struts2 学习重点笔记

    - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类中的 setter 方法相匹配的请求参数,并调用这些方法填充数据。 **3.3 数据传递...

    struts1.2增删改查分页Filter Session

    这些参数可以存储在ActionForm中,或者通过Request或Session范围的对象传递。同时,业务逻辑层需要根据这些参数计算出正确的数据范围,并返回给视图层进行展示。 3. Filter(过滤器): Filter在Servlet API中扮演...

    Struts2_OGNL

    OGNL(Object-Graph Navigation Language)是Struts2框架中的一个重要组件,用于在Web应用中访问和操作Java对象的属性,调用其方法,以及执行类型转换等操作。 OGNL是对象图导航语言的缩写,它是一种功能强大的...

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    2. Struts2的ActionContext保存了当前请求的上下文信息,包括参数、session、request和response等。 3. 拦截器链开始执行,其中的ParameterInterceptor负责将请求参数绑定到Action实例的属性上,使用OGNL(Object-...

    struts2标签使用方法

    在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的JSP标签,用于简化视图层的编码,提高代码的可读性和可维护性。下面我们将详细探讨Struts2标签的使用方法以及EL(Expression Language)表达式。 1. *...

    struts2之Action访问Servlet API

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

    Struts2 part 3:在Action中使用ServletAPI

    6. **URL重写和URL生成**:Servlet API提供了`RequestDispatcher`用于转发和重定向,而在Struts2中,`ActionSupport`类的`redirectAction()`和`generateUrl()`方法可以帮助我们生成和重定向到特定的Action。...

Global site tag (gtag.js) - Google Analytics