ActionContext介绍
摘自:http://blog.csdn.net/babydavic/archive/2006/06/04/773265.aspx
在Web应用程序开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息, 甚至需要直接对JavaServlet Http的请求(HttpServletRequest)、响应(HttpServletResponse)操作。
我们需要在Action中取得request请求参数“username”的值:
ActionContext context = ActionContext.getContext();
Map params = context.getParameters();
String username = (String) params.get(“username”);
ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放放的是Action在执行时需要用到的对象
一般情况,我们的ActionContext都是通过:ActionContext context = (ActionContext) actionContext.get();来获取的。我们再来看看这里的actionContext对象的创建:static ThreadLocal actionContext = new ActionContextThreadLocal();,ActionContextThreadLocal是实现ThreadLocal的一个内部类。ThreadLocal可以命名为“线程局部变量”,它为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。这样,我们ActionContext里的属性只会在对应的当前请求线程中可见,从而保证它是线程安全的。
下面我们看看怎么通过ActionContext取得我们的HttpSession:
Map session = ActionContext.getContext().getSession();
ServletActionContext(com.opensymphony.webwork. ServletActionContext),这个类直接继承了我们上面介绍的ActionContext,它提供了直接与JavaServlet相关对象访问的功能,它可以取得的对象有:
1、 javax.servlet.http.HttpServletRequest:HTTPservlet请求对象
2、 javax.servlet.http.HttpServletResponse;:HTTPservlet相应对象
3、 javax.servlet.ServletContext:Servlet 上下文信息
4、 javax.servlet.ServletConfig:Servlet配置对象
5、 javax.servlet.jsp.PageContext:Http页面上下文
下面我们看看几个简单的例子,让我们了解如何从ServletActionContext里取得JavaServlet的相关对象:
1、 取得HttpServletRequest对象:
HttpServletRequest request = ServletActionContext. getRequest();
2、 取得HttpSession对象:
HttpSession session = ServletActionContext. getRequest().getSession();
ServletActionContext和ActionContext有着一些重复的功能,在我们的Action中,该如何去抉择呢?我们遵循的原则是:如果ActionContext能够实现我们的功能,那最好就不要使用ServletActionContext,让我们的Action尽量不要直接去访问JavaServlet的相关对象。在使用ActionContext时有一点要注意:不要在Action的构造函数里使用ActionContext.getContext(),因为这个时候ActionContext里的一些值也许没有设置,这时通过ActionContext取得的值也许是null。
分享到:
相关推荐
安装WebWork前,需先从官方网站下载最新版本的WebWork压缩包,解压后可获得关键文件和目录,包括webwork-2.x.jar(主库)、webwork-example.war(示例应用)、webwork-migration.jar(迁移工具)等,以及docs(文档...
10. **ActionContext**:ActionContext是WebWork中的一个重要组件,它保存了请求上下文中的所有信息,包括session、request和application范围的对象,以及OGNL表达式上下文。 11. **Ajax Support**:WebWork 2.1.7...
通过以上内容的介绍,我们可以看出WebWork框架不仅功能强大,而且具有很高的灵活性和扩展性。无论是对于新手还是有经验的开发者来说,WebWork都是一个值得深入学习和掌握的优秀框架。随着技术的发展,虽然WebWork...
### WebWork教程知识点...通过以上详细内容的介绍,读者可以对WebWork框架有一个全面的了解,并能够基于此文档进行深入的学习和实践。无论是对于新手还是有一定经验的开发者来说,都能够从中获得有价值的指导和帮助。
### WebWork中文学习资料 #### WebWork框架概览 WebWork是一个由OpenSymphony组织开发的J2EE Web框架,其设计目标在于组件化和代码重用,采用MVC(Model-View-Controller)模式。WebWork框架的核心分为两部分:...
在详细介绍WebWork的具体功能之前,首先需要搭建其运行环境。这通常涉及从官方站点下载最新版本的WebWork压缩包,解压后会得到包括`webwork-2.x.jar`、`webwork-example.war`、`webwork-migration.jar`等关键文件,...
ActionContext.getContext().getValueStack().setValue("message", "Hello, World!"); return SUCCESS; // 返回视图名,如JSP页面 } } ``` 然后在WebWork的配置文件(如`struts.xml`)中声明这个Action: ```...
### WebWork框架详解 #### WebWork概述 WebWork是由OpenSymphony组织开发的一款专注于组件化和代码重用的MVC模式的J2EE Web框架。其设计初衷在于提供一种更简洁、灵活且功能强大的框架解决方案,相较于传统的MVC...
- **ActionContext介绍**:ActionContext提供了对当前执行环境的访问,如`getRequest()`、`getSession()`等方法。 - **ServletActionContext**:针对Servlet环境的ActionContext实现,封装了对Servlet API的访问。 ...
- **介绍**:ActionContext是Action执行过程中所需的各种信息的容器,如Request、Response、Session等。 - **ServletActionContext**:特定于Servlet容器的ActionContext实现。 - **ServletDispatcher原理**:...
- **ActionContext**:提供了一个线程安全的上下文环境,用于存储与当前请求相关的数据。 - **Interceptor**:拦截器框架允许在Action执行前后插入自定义行为,如日志记录、性能监控等。 - **ResultType**:定义...
- **实战G-Roller-WW**:介绍如何使用WebWork实现一个完整的博客系统。 - **WebWork与其他开源项目的集成**:包括Spring、Hibernate、Xml-RPC等,通过这些集成可以增强WebWork的功能性和灵活性。 #### 十、总结与...
### WebWork简明教程知识点详解 ...通过上述知识点的详细介绍,读者可以全面了解WebWork框架的核心概念、基本用法以及实际开发中的应用场景。这对于初学者来说是一个很好的起点,也为进阶学习打下了坚实的基础。
5. **ActionContext集成**:WebWork的ActionContext可以与Spring的ApplicationContext交互,共享上下文信息,提供更丰富的环境支持。 6. **国际化和本地化**:Spring和WebWork都支持国际化和本地化,它们可以协同...
**WebWork介绍** WebWork作为一个强大的Web开发框架,它简化了Java Web应用的开发过程,通过提供动作(Action)和控制器(Controller)的概念,将业务逻辑、数据处理和用户界面进行了清晰的分离。WebWork的特点包括...
### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...