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

Struts2 ActionContext与ServletActionContext

阅读更多

    我们知道struts2接受客户端请求,在Action中进行处理后,将视图结果返回。struts2容器自身不依赖于web容器,不用和servlet对象中的请求(request)、响应(response)进行关联,对于请求的参数,通过paramerInterceptor将参数封装在Action中,然后通过调用get、set方法将参数值设置进Action之中。如果仅仅获取参数,可能有时候满足不了开发的需求,有时我们要获取request或者response中的信息,要对其进行设置、处理。

一、ActionConext(Action执行的上下文,通过它可以获取参数、会话、local信息、servletContext等)
   它是保存在ThreadLocal中,线程是安全的,每次执行Action之前就会创建唯一的ActionContext实例,由于Action是运行在多线程中,那么就可以在任意Action中调用它。
 获取session:
  Map session=ActionContext.getContext().getSession();
request获取页面参数:  
  Map map=ActionContext.getContext().getParameters();//获取客户端参数并封装成MAP
  String username=map.get("username");//这里就获得了客户端参数;


   提示:这里的session信息以及客户端参数都被封装成了Map类型,struts2考虑不与底层servlet API打交
道,那么对很多web的相关对象进行封装,这样可以达到Action与web层解耦。                         
  
 二、
ServletActionContext
(ActionContext的子类,提供直接与servletSession、response、request、config、pageContext对象访问,当然也有父类的一些特性在可以访问Action中的信息、以及值栈中的信息)
 
获取HttpRequest对象:HttpServletRequest request = ServletActionContext. getRequest();
  获取HttpSession对象:HttpSession session = ServletActionContext. getRequest().getSession();

总结:不难看出,两者之间还是存在很多共同功能,那么我们还是根据自己的需求进行选择,能用ActionContext对象满足就尽量使用ActionContext,避免让我们直接去访问Servlet对象。另外,不要在Action还没实例化的时候去通过ActionContext调用方法,因为Action实例在ActionContext实例之前创建,ActionContext中一些值还没有设置,会返回null。

分享到:
评论

相关推荐

    ActionContext介绍(在Struts2中)

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

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

    本文将详细讨论如何在Struts2的Action中获取JSP页面的参数,以及相关的上下文类ActionContext和ServletActionContext。 1. **ActionContext获取请求参数** 当用户在JSP页面上提交表单时,表单数据会被封装到HTTP...

    ActionContext在struts2.0中的详细应用

    这时,Struts2提供了ServletActionContext类,它继承自ActionContext并扩展了与Servlet相关的功能。通过ServletActionContext,可以直接获取以下对象: 1. javax.servlet.http.HttpServletRequest:HTTP servlet...

    struts2 Https 配置

    在"28_Struts2ImgCode"这个文件名中,虽然没有实际的文件内容,但我们可以推测它可能包含了与Struts2和图像验证码相关的代码示例。在HTTPS环境中,如果涉及到图片验证码,需要注意的是,验证码图片也需要通过HTTPS...

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

    2. **ServletActionContext类**:这是ActionContext的一个扩展,提供了更方便的访问Servlet相关对象的方法,如`ServletActionContext.getRequest()`和`ServletActionContext.getResponse()`分别用于获取...

    struts2使用request、response

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

    Struts2访问ServletAPI

    在Struts2框架中,我们有时需要直接与Servlet API交互,例如处理HTTP请求、响应,或者使用Session、Cookie等。本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求...

    Struts2获取request的四种方式

    这种方式与第一种方式相似,但使用了Struts2提供的`ServletActionContext`来获取Request,而不是从`ActionContext`中获取。 4. **Servlet相关的IoC取得Request等对象的方式** 最后一种方式也是通过注解,但是使用...

    struts2中request和session的获取

    这种方法利用了Struts2中的ActionContext对象,它包含了当前执行环境的信息,可以通过它来获取request对象。 2. **使用`ServletActionContext`**: ```java HttpServletRequest request = ServletActionContext....

    Struts2_TypeConvertion

    这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。 获得request对象: A . HttpServletRequest request = ServletActionContext....

    struts2集成struts-ssl-plugin插件实现https访问例子

    确保使用的版本与Struts2主框架版本兼容。 2. **配置struts.xml** 在`struts.xml`配置文件中,启用SSL插件并指定哪些URL需要强制使用HTTPS。例如: ```xml <constant name="struts.plugins" value=...

    Struts2学习文档

    3. **Struts2与MVC的关系**:分析了Struts2框架如何实现MVC模式,解释了Struts2中的Model、View和Controller分别对应哪些组件,以及它们之间的交互机制。 #### 二、Struts2的HelloWorld示例 1. **概述**:通过一个...

    Struts2框架笔记

    2. **使用servletActionContext类**: 提供了一种更简单的方法来访问HttpServletRequest对象。 3. **实现ServletRequestAware接口**: 实现该接口的Action类可以直接访问HttpServletRequest对象。 以上就是关于Struts...

Global site tag (gtag.js) - Google Analytics