在Struts1.*中,要想访问request、response以及session等Servlet对象是很方便的,因为它们一直是作为形参在各个方法之间进行传递的,而在Struts2中我们就很难看到它们的芳踪了,因为我们获得表单中的值都是通过预先设置好了的get方法来得到的,那么如果有些参数我们必须通过request.getParametre或者session.getAttribute来得到,那么应该怎么做呢?按照Max的教程上的说法,可以分为两种:IoC方式和非IoC方式,如何理解这两种方式的区别呢?IoC是Spring里面的特征之一,字面意思是反转控制,说白了就是依赖注入,比方说类A依赖类B,那么就主动的给A注入一个类B的对象,下面看一下这两种方法的具体实现。
1.非Ioc方式
这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。
获得request对象:
A.HttpServletRequest request = ServletActionContext.getRequest ();
B.ActionContext ct= ActionContext.getContext()
HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);
获得session对象:
在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。
A.Map session=ActionContext.getSession();
B.Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了。
2.IoC方式
这种方式相对来说变化就比较少了,具体流程如下所示。
获得request对象:
第一步:让action实现ServletRequestAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现ServletRequestAware接口的setServletRequest方法,实现方式很简单,如下所示。
private HttpServletRequest request;
publicvoid setServletRequest(HttpServletRequest request) {
this.request = request;
}
获得Session对象(注意,此时的session是SessionMap类型):
第一步:让action实现SessionAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现SessionAware接口的setSession方法,实现方式很简单,如下所示。
private Map session;
publicvoid setSession(Map session) {
this. session = session;
分享到:
相关推荐
Struts2支持依赖注入(Dependency Injection, DI),可以通过配置让框架自动将request、response、session等对象注入到Action中。这通常在Action的定义中通过注解或配置文件指定。 #### 示例代码: ```java import...
本文将详细介绍如何在Struts2中使用request和response。 #### 二、Struts2中request与response的获取方式 在Struts2中,可以通过以下几种方式来获取request和response对象: 1. **使用Struts2提供的拦截器:** - ...
在 Struts2 中,处理用户请求时经常需要使用到 Servlet 的内置对象,比如 Request、Session 和 Application,这些对象可以帮助开发者存储和获取数据。然而,在实际应用中,为了避免代码与 Servlet API 过度耦合,...
在Struts2中,ActionContext不仅仅是获取request和response的工具,它还包含了其他有用的上下文信息,如session、application等。例如,你可以通过ActionContext获取session中的数据: ```java Map, Object> ...
本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个...
在Struts2中,获取Response对象是常见的操作,用于设置HTTP响应头、重定向、或者向客户端发送数据。以下是对"struts2获取response的方法"的详细说明。 1. **ActionSupport类的实现** Struts2中的Action类通常会...
在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...
本文将通过一个具体的示例来详细介绍如何在Struts2项目中配置过滤器。 #### 二、过滤器配置实例分析 ##### 2.1 web.xml配置解析 在给定的web.xml配置文件中,可以看到对`SessionInvalidate`过滤器进行了定义和...
JSP的主要特点包括能够与JavaBean技术结合,实现业务逻辑与表示层的分离,它还提供了丰富的内置对象,比如request、response、session等,这些都是JSP页面可以直接使用的对象。 Servlet是Java Servlet的简称,是一...
1. 在软件设计方面Struts2没有像Struts1那样和servlet API和Struts API那样紧密的耦合。Struts2可以不依赖它们。Struts2属于无侵入式设计。而Struts1属于侵入式设计。 例如:public class HelloWordAction extends ...
3. **Action上下文(Action Context)**:`org.apache.struts2.dispatcher`包下的`ActionContext`类存储了请求处理过程中的上下文信息,如值栈(Value Stack)、session、request、response等。 4. **值栈(Value ...
然而,在实现业务逻辑时,经常需要访问 Servlet 中的对象,如 request、session 和 application 等。因此,Struts2 提供了三种方式来访问 Servlet API,这三种方式分别是实现特定接口、通过 ServletActionContext 类...
2. Struts2的ActionContext保存了当前请求的上下文信息,包括参数、session、request和response等。 3. 拦截器链开始执行,其中的ParameterInterceptor负责将请求参数绑定到Action实例的属性上,使用OGNL(Object-...
JSP通过内置对象如Request、Response、Session、Application等提供与用户的交互,同时支持自定义标签库,使得开发更加灵活和模块化。 **Servlet** 是Java EE的一部分,它是一个服务器端的Java类,用于处理客户端...
- ActionContext是Struts2中存储请求上下文信息的对象,包括Value Stack、Parameters、Session、Request、Response等。 通过研究Struts2的源代码,我们可以更深入地理解这些概念如何协同工作,有助于我们在实际...
以下是关于如何在Struts2中Action获取JSP页面参数以及相关上下文对象的详细说明: 1. **ActionContext获取请求参数** - `ActionContext`是Struts2框架中的一个重要组件,它是一个存储执行Action时所需对象的容器,...
OGNL(Object-Graph Navigation Language)是Struts2中使用的表达式语言,用于访问Java对象的属性和调用方法,增强了视图层的表达能力和灵活性。 #### 表达式语言主要好处 OGNL的主要好处包括简洁的语法、强大的...
2. **ActionContext**:存储Action执行时的上下文信息,包括Action实例、值栈、session、request、response等。 3. **ValueStack**:用于管理模型对象,提供了一种从视图到模型的动态绑定机制。 4. **...
本学习笔记结合测试源代码深入探讨了如何在Struts2框架下获取并使用`request`、`session`、`ServletContext`以及`response`对象,这些都是在Web开发中不可或缺的基础组件。 ### request对象 `HttpServletRequest`...
8. **ActionContext**:ActionContext封装了当前请求的上下文信息,包括参数、session、request、response等,提供了一种在Action与视图之间共享数据的途径。 9. ** strut2的注解**:Struts2支持注解方式的配置,...