Struts2学习笔记(3)-如何访问Web资源
来源:互联网 发布:mysql不支持emoji表情 编辑:程序博客网 时间:2024/05/16 15:37
一、web资源是什么?
web资源是HttpServletRequest、HttpSession、ServletContext等原生的Servlet API。
二、为什么要访问web资源?
B/S的应用的controller中必然需要访问web资源,比如:向域对象中读写属性、读写Cookie、获取realPath等...
三、怎么访问web资源?
访问web资源有两种方式:
和Servlet API解耦的方式:
只能访问到有限的servlet API对象,而且只能访问到有限的方法(读取请求参数、访问域对象的属性、使session失效等...)
(1)实现ActionContext
为了避免与servlet API耦合在一起,方便Action做单元测试。 ActionContext是Action执行的上下文对象。 在ActionContext中保存了Action执行所需要的所有对象。 包括parameters、request、session、application等。 获取HttpServletRequest对应的Map对象:
public Object get(Object key):ActionContext类中没有提供类似getRequest()这样的方法来获取HttpServletRequest对应的Map对象。要得到HttpServletRequest对应的Map对象,可以通过为get()方法传递“request”参数实现。
获取HttpSession对应的Map对象: public Map getSession(); 获取ServletContext对应的Map对象: public Map getApplication(); 获取请求参数对应的Map对象: public Map getParameters();
(2)实现XxxAware接口 Struts2提供了4种分别来访问ActionContext、Request、Response和Session对象的接口, 根据具体需要选择就可以了。4个接口如下:
org.apache.struts2.interceptor.ApplicationAware org.apache.struts2.interceptor.SessionAware org.apache.struts2.interceptor.RequestAware org.apache.struts2.interceptor.ParameterAware
选用建议:若一个Action类中有多个action方法,且多个方法都需要使用域对象的Map或parameters,则建议使用Aware接口的方式。因为只要定义成员变量就可以了(不用在每个方法里获取)。
和Servlet API耦合的方式:
可以访问更多的servlet API对象,且可以调用其原生的方法。 在动作类里,可以通过ServletActionContext对象或通过实现Aware接口去访问Web资源。 实现Aware接口是依赖注入技术的一种实现,这也是推荐的方法,因为它将使你的动作类更容易测试。
(1)实现ServletActionContext
ServletActionContext包括ActionContext,并且比ActionContext更容易使用。有以下方法:public static javax.servlet.http.HttpServletRequest getRequest(),返回当前HttpServletRequest对象;public static javax.servlet.http.HttpServletResponse getResponse(),返回当前HttpServletResponse对象;public static javax.servlet.ServletContext getServletContext(),返回ServletContext对象; 可以通过在HttpServletRequest对象上调用一个getSession方法的办法来获得HttpSession对象。如果使用了basicStack或defaultStack拦截器栈,HttpSession对象将被自动创建。 注意:不应该从动作类的构造器里调用ServletActionContext类的方法. 因为在这个阶段,底层的ActionContext对象还没有被传递给它。 从某个动作的构造器里调用ServletActionContext.getServletContext方法将返回空值;
(2)实现ServletXxxAware接口
Struts2提供了4种分别来访问ServletContext、HttpServletRequest、HttpServletResponse和HttpSession对象的接口,根据具体选择即可。 4个接口如下:
org.apache.struts2.util.ServletContextAware; org.apache.struts2.interceptor.ServletRequestAware; org.apache.struts2.interceptor.ServletReponseAware; org.apache.struts2.interceptor.SessionAware;
阅读全文
0 0
- Struts2学习笔记(3)-如何访问Web资源
- struts2学习笔记(六) Action访问web资源的方式
- Struts2学习——(四)访问web资源
- Struts2 学习系列 (2) 访问web资源
- Struts2-访问web 资源
- Struts2-访问Web资源
- Struts2学习笔记(四):action中访问request,session以及applicationContext等web资源的方法
- Struts2学习笔记(四):action中访问request,session以及applicationContext等web资源的方法
- Struts2学习笔记(访问Web元素和Result_Type)
- Struts2 学习笔记 09 访问Web元素
- 详解Struts2如何在Action中访问web资源
- Struts2学习(三)Web资源获取
- Struts2学习笔记——AccessWebElements(访问web元素)
- Struts2两种解耦访问WEB资源的方式
- Struts2在Action中访问WEB资源
- struts2 在Action中访问WEB资源
- 【Struts2】struts2学习(3) 资源国际化
- Android学习笔记--资源访问
- python学习笔记一
- 2017NOIp 普及组第一题
- 论文<Algorithms for non-negative matrix Factorization>
- 窗口背景随弹窗的出现而渐变
- MySQL 数据类型与存储长度
- Struts2学习笔记(3)-如何访问Web资源
- AD DRC检测不能查出断连的线
- [问题-已解决]arm-none-linux-gnueabi-gcc没有那个文件或目录
- 推荐算法
- Mybatis基于注解的方式获取新增记录的自增长id
- 链表栈的基本操作的实现---入栈、出栈、清空
- MyCat是什么?
- android 验证URL是否合法
- ionic2 url不安全问题 caused by: unsafe value used in a resource URL context