`
uule
  • 浏览: 6359279 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

[转]struts2的action中获得request response session几种方法【基础】

 
阅读更多

来源:http://blog.csdn.net/yaerfeng/article/details/7210639

在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式。分别为

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

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

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

servlet 相关的 IoC 取得Request等对象的方式以下分别叙述。首先请看struts.xml文件文件内容:

 

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<String, Object> arg0) {  
        // TODO Auto-generated method stub  
        this.request = arg0;  
    }  
  
    @Override  
    public void setSession(Map<String, Object> arg0) {  
        // TODO Auto-generated method stub  
        this.session = arg0;  
    }  
  
    @Override  
    public void setApplication(Map<String, Object> arg0) {  
        // TODO Auto-generated method stub  
        this.application = arg0;  
    }  
}  
  
  
3,servlet 相关的 非IoC 取得Request等对象的方式  
这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。  
取出方法,请参看代码中的蓝字部分。  
  
Action文件:  
package struts2.login;  
  
import javax.servlet.ServletContext;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpSession;  
  
import org.apache.struts2.ServletActionContext;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class Login3Action  extends ActionSupport{  
    private HttpServletRequest request;  
    private HttpSession session;  
    private ServletContext application;  
     
    @Override  
    public String execute() throws Exception {  
        // TODO Auto-generated method stub  
        this.request = ServletActionContext.getRequest();  
        this.session = this.request.getSession();  
        this.application = ServletActionContext.getServletContext();  
        this.request.setAttribute("attribute", "request value servlet 相关的非IoC ");  
        this.session.setAttribute("attribute", "session value servlet 相关的非IoC ");  
        this.application.setAttribute("attribute", "application value servlet 相关的 非IoC ");  
        return SUCCESS;  
    }  
     
}  
  
  
4,servlet 相关的 IoC 取得Request等对象的方式  
  
这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。  
但是取出方法是通过接口进行实现,也就是由struts2的container来设定,请参看代码中的红字部分。  
  
Action文件:  
package struts2.login;  
  
import javax.servlet.ServletContext;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpSession;  
  
import org.apache.struts2.interceptor.ServletRequestAware;  
import org.apache.struts2.util.ServletContextAware;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class Login4Action  extends ActionSupport  
    implements ServletRequestAware , ServletContextAware{  
    private HttpServletRequest request;  
    private HttpSession session;  
    private ServletContext application;  
     
    @Override  
    public String execute() throws Exception {  
        // TODO Auto-generated method stub  
        this.request.setAttribute("attribute", "request value servlet 相关的 IoC ");  
        this.session = this.request.getSession();  
        this.session.setAttribute("attribute", "session value servlet 相关的 IoC ");  
        this.application.setAttribute("attribute", "application value servlet 相关的 IoC ");  
        return SUCCESS;  
    }  
  
    @Override  
    public void setServletRequest(HttpServletRequest arg0) {  
        // TODO Auto-generated method stub  
        this.request = arg0;  
    }  
  
    @Override  
    public void setServletContext(ServletContext arg0) {  
        // TODO Auto-generated method stub  
        this.application = arg0;  
    }  
}   

文件名: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>  
 

 

另一篇文章:http://www.iteye.com/topic/581820

 

分享到:
评论

相关推荐

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

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

    struts2使用request、response

    在Struts2中,可以通过以下几种方式来获取request和response对象: 1. **使用Struts2提供的拦截器:** - Struts2提供了一组内置的拦截器,包括`ServletRequestAware`和`ServletResponseAware`,它们分别用于注入...

    struts2创建 request response session application

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

    struts2访问request,session,application作用域

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

    struts2获取response的方法

    Struts2中的Action类通常会继承自`org.apache.struts2.interceptor.StrutsPrepareAndExecuteInterceptor`或`com.opensymphony.xwork2.ActionSupport`。`ActionSupport`类已经为我们提供了对HTTP响应的间接访问。...

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

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

    Struts2 part 3:在Action中使用ServletAPI

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

    struts2简单案例

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

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

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

    struts2api.zip

    10. **Action上下文(ActionContext)**:存储了当前请求的环境信息,如Session、Request、Response、Parameters等,是Action与其他组件通信的桥梁。 通过深入学习并熟练运用这些知识点,开发者可以高效地利用...

    struts2学习心得

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

    Struts2访问ServletAPI

    本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个...

    Struts2_API(API文档)

    7. **ActionContext**:封装了当前请求的所有上下文信息,包括session、request、response、parameters等,可以用来在Action之间共享数据。 8. **Struts2的注解支持**:Struts2提供了丰富的注解,如@Action、@...

    struts2-core-2.0.11源码

    3. **Action上下文(Action Context)**:`org.apache.struts2.dispatcher`包下的`ActionContext`类存储了请求处理过程中的上下文信息,如值栈(Value Stack)、session、request、response等。 4. **值栈(Value ...

    struts2配置过滤器

    通过以上分析可以看出,在Struts2项目中配置过滤器是一种非常实用的方法,可以有效地实现对用户请求的预处理工作。需要注意的是,在实际应用中还应考虑更多细节问题,比如如何处理不同环境下的配置差异、如何更灵活...

    struts2源码最新

    1. **Action与结果**:在Struts2中,业务逻辑处理主要由Action类负责。Action类执行特定的操作,并通过Result返回不同的视图。Result可以是JSP、FreeMarker模板或者其他类型的视图。 2. **拦截器(Interceptors)**...

    详解Struts2中Action访问Servlet API的几种方法

    总结来说,在Struts2中,Action访问Servlet API主要有三种途径,推荐使用IOC方式,通过ActionContext进行间接访问,既能避免直接耦合,又方便测试。如果需要直接操作Servlet API对象,可以考虑使用...

    java Struts2中文学习文档

    Struts2是Java Web开发中的一个强大框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种高效、灵活且可扩展的解决方案。本篇文档将深入探讨Struts2的核心概念、架构以及实际应用,旨在帮助...

    struts2中action如何获取jsp页面参数1.pdf

    以下是关于如何在Struts2中Action获取JSP页面参数以及相关上下文对象的详细说明: 1. **ActionContext获取请求参数** - `ActionContext`是Struts2框架中的一个重要组件,它是一个存储执行Action时所需对象的容器,...

    struts2的jar包.zip

    8. **ActionContext**:ActionContext封装了当前请求的上下文信息,包括参数、session、request、response等,提供了一种在Action与视图之间共享数据的途径。 9. ** strut2的注解**:Struts2支持注解方式的配置,...

Global site tag (gtag.js) - Google Analytics