用过Struts2的兄弟们都知道,在action中不需要再使用 response ,request,因为架构设计中已经将Action和servlet解耦,可是如果一旦需要使用response,request等等的时候,怎么办?
比如 需要用session,cookie之类的,remoteAddr等等
一般怎么处理呢
HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
这样既可得到request
但是ActionContext.getContext()里面一定有HTTP_REQUEST这个值对吗,不一定
简单说 ,如果Http请求没有使用Action请求,那么这个ActionContext.getContext(),其实是个Map,里面的key大概是6个,没有request,response,比如你某个请求是一个jsp,在jsp中使用了某个帮助类,比如CookieUtil来判断并获取cookie,这时候就出问题了
request.getCookies();就有问题了,debug发现request是null
不过如果把这个jsp写成一个没有Action类的action
<action name="testCookie">
<result>testCookiePage.jsp</result>
</action>
这样就可以得到正常的request,一切都正常
debug发现,这个时候ActionContext.getContext()的map中有27个key,包括request,response,
有时间还得把ActionContext初始化过程仔细看看
分享到:
相关推荐
1. **拦截器(Interceptors)**:Struts2的核心特性之一,拦截器负责在Action调用前后执行额外的逻辑,如日志记录、权限验证等。在`org.apache.struts2.interceptor`包下,你可以找到各种预定义的拦截器类。 2. **...
Struts2-core-2.0.12.jar是Apache Struts框架的一个核心组件包,它在Java Web开发中扮演着至关重要的角色。Struts2是一个开源的MVC(Model-View-Controller)框架,用于构建高效、可扩展的Web应用程序。这个版本号...
1. **StrutsPrepareAndExecuteFilter**: 这是Struts2的过滤器,负责初始化框架并处理请求。 2. **ActionContext**: 包含了当前请求的所有上下文信息,如session、request、response、value stack等。 3. **...
Struts2是一个非常流行的Java Web框架,用于构建可维护性和可扩展性良好的企业级应用程序。在Web应用中,为了确保数据传输的安全性,通常会使用HTTPS协议,它基于SSL/TLS来加密通信,保护用户的隐私信息。Struts2...
可解决java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get(Ljava/lang/Object;)Ljava/lang/Object; java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils struts2.1.8...
2. **拦截器(Interceptors)**:Struts2的拦截器是其强大的特性之一,允许开发者在Action执行前后添加自定义逻辑。这些拦截器可以实现登录验证、日志记录、性能监控等多种功能。在源码中,你可以看到`...
2. **Struts2的初始化参数** - 可以设置一些全局属性,如配置文件的位置、开发模式等。例如: ```xml <context-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </context-...
- `struts2-core.jar`: 这是Struts2的核心库,包含了Action、Result、Interceptor等核心类,以及配置解析器和ActionContext等。它是处理HTTP请求、执行业务逻辑和渲染视图的核心。 2. **插件支持** - `struts2-...
10. **国际化与本地化(I18N & L10N)**:Struts2支持多语言环境,开发者可以通过资源文件轻松实现应用的国际化。 总的来说,Struts2-core-2.0.11.jar是Struts2框架的心脏,包含了许多关键组件,使得开发人员能够...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。这个“struts2-blank-2.0.12.war”文件是一个基于Struts2框架的空项目,版本为2.0.12,非常适合初学者或者开发者用于学习和参考。下面将详细...
例如,`PrepareInterceptor`负责初始化Action属性,`ParamsInterceptor`处理请求参数注入,`ValidationInterceptor`执行字段验证等。 4. **表达式语言(OGNL)**:Struts2使用OGNL(Object-Graph Navigation ...
XWork负责Action的生命周期管理,包括Action的创建、初始化、执行和销毁。此外,XWork还提供了类型转换、参数验证等功能。XWork的ActionContext对象持有与当前请求相关的所有上下文信息,如值栈(Value Stack)和...
2. **减少样板代码**:通过插件,开发者不再需要在Action类中编写getter和setter方法,以及实现Servlet相关的初始化和销毁方法。 3. **增强的事务管理**:插件支持Spring的事务管理,使得Action方法内的数据库操作...
- **xwork-core.jar**:XWork是Struts2的基础,提供了ActionContext、ValueStack等基础功能。 - **ognl.jar**:包含了OGNL的实现,用于对象图导航和表达式处理。 - **freemarker.jar** 或 **velocity.jar**:视图...
2. **struts-plugin.xml**:这是Struts2插件的核心配置文件,定义了插件的初始化参数、拦截器、结果类型等,使得Struts2框架能识别并加载该插件。 3. **META-INF**:这是一个元数据目录,通常包含关于软件包的元信息...
3. **xwork-core.jar**:XWork是Struts2的基础,它提供了许多基础组件,如ActionContext、ObjectFactory等。 4. **ognl.jar**:Object-Graph Navigation Language,用于对象属性的获取和设置,以及表达式语言的支持...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、模块化和高度结构化的Web应用程序。这个框架是基于MVC(Model-View-Controller)设计模式的,旨在简化开发过程并提供更好的控制流。《Struts2技术...
Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型转换、数据验证和国际化等功能。在这个压缩包中,包含了该核心库的源代码,对于学习和理解Struts2的工作原理及其内部机制极具...
除了ActionSupport,Struts2还提供了ActionContext,它封装了请求、响应、session以及应用上下文等关键信息,使得在Action中访问这些对象变得简单。另外,`com.opensymphony.xwork2.ObjectFactory`负责创建对象,...
了解源码可以帮助开发者深入理解Struts2的内部运作,优化性能,解决遇到的问题,甚至开发自定义的插件和扩展。对于初学者,可以通过阅读这些源码来学习如何使用OGNL表达式,如何编写Action和拦截器,以及如何配置...