我们知道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的子类,提供直接与servlet中Session、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。
分享到:
相关推荐
象,如HttpServletRequest、HttpServletResponse,或者需要访问Session和Application等信息,在Struts2框架中,我们可以利用ActionContext和ServletActionContext这两个类。ActionContext是Struts2提供的一个核心上...
本文将详细讨论如何在Struts2的Action中获取JSP页面的参数,以及相关的上下文类ActionContext和ServletActionContext。 1. **ActionContext获取请求参数** 当用户在JSP页面上提交表单时,表单数据会被封装到HTTP...
这时,Struts2提供了ServletActionContext类,它继承自ActionContext并扩展了与Servlet相关的功能。通过ServletActionContext,可以直接获取以下对象: 1. javax.servlet.http.HttpServletRequest:HTTP servlet...
在"28_Struts2ImgCode"这个文件名中,虽然没有实际的文件内容,但我们可以推测它可能包含了与Struts2和图像验证码相关的代码示例。在HTTPS环境中,如果涉及到图片验证码,需要注意的是,验证码图片也需要通过HTTPS...
2. **ServletActionContext类**:这是ActionContext的一个扩展,提供了更方便的访问Servlet相关对象的方法,如`ServletActionContext.getRequest()`和`ServletActionContext.getResponse()`分别用于获取...
### Struts2中request与response的使用方法 #### 一、引言 Struts2作为Struts1的后续版本,在架构设计与实现机制上进行了大量的改进。相较于Struts1,Struts2对request、response、session等核心对象的处理方式有所...
在Struts2框架中,我们有时需要直接与Servlet API交互,例如处理HTTP请求、响应,或者使用Session、Cookie等。本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求...
这种方式与第一种方式相似,但使用了Struts2提供的`ServletActionContext`来获取Request,而不是从`ActionContext`中获取。 4. **Servlet相关的IoC取得Request等对象的方式** 最后一种方式也是通过注解,但是使用...
这种方法利用了Struts2中的ActionContext对象,它包含了当前执行环境的信息,可以通过它来获取request对象。 2. **使用`ServletActionContext`**: ```java HttpServletRequest request = ServletActionContext....
这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。 获得request对象: A . HttpServletRequest request = ServletActionContext....
确保使用的版本与Struts2主框架版本兼容。 2. **配置struts.xml** 在`struts.xml`配置文件中,启用SSL插件并指定哪些URL需要强制使用HTTPS。例如: ```xml <constant name="struts.plugins" value=...
3. **Struts2与MVC的关系**:分析了Struts2框架如何实现MVC模式,解释了Struts2中的Model、View和Controller分别对应哪些组件,以及它们之间的交互机制。 #### 二、Struts2的HelloWorld示例 1. **概述**:通过一个...
2. **使用servletActionContext类**: 提供了一种更简单的方法来访问HttpServletRequest对象。 3. **实现ServletRequestAware接口**: 实现该接口的Action类可以直接访问HttpServletRequest对象。 以上就是关于Struts...