Struts2-Action概述和在Action中访问WEB资源
来源:互联网 发布:淘宝学历提升是真的吗 编辑:程序博客网 时间:2024/04/29 18:10
前边讲过了Struts2概述,今天来讲一讲Struts2中在struts.xml配置文件中用到的用于反射创建对象和提供操作方法的Action类,还有在Action类中如何访问WEB资源。
1.Action类
我们知道在struts.xml配置文件中,每个action节点都有一个class属性,要填写上用于处理action请求的处理类的全类名。
创建一个Action类需要满足什么条件呢?这个Action类可以使任何一个普通的Java类,类中必须包含一个无参的构造器(用于反射创建对象)、至少一个处理action请求的方法、多个属性(和表单参数一一对应且需符合JavaBean的属性命名规则,属性类型可以任意,因为非字符串到字符串的转换自动发生)。
2.在Action类中访问WEB资源
①WEB资源:是指在访问WEB程序时产生的一些源生的Servlet的API,如HttpServletRequest、HttpSession、ServletContext等。
②为何访问WEB资源:我们做的WEB项目都是B/S架构的,所以无可避免的必须访问WEB资源,如从域对象中读取属性、获取cookie、获取realPath等。
③如何访问WEB资源
大体上分为两类,一是通过和Servlet解耦的方式,二是通过和Servlet耦合的方式。
解耦的方式又可以分为两类,通过ActionContext访问预对象对应的Map;通过Action类实现XXXAware接口来访问WEB资源。
通过ActionContext:我们知道每个action请求都会对应一个Action类的实例,同时都有一个ActionContext的对象可用于获取域对象对应的Map。我们通过ActionContext的静态方法getContext()先获取这个Actioncontext对象,然后通过AcctionContext对象获取域对象对应的Map,四种getSession(),getApplication(),get("request"),getParameters(),返回各自对应的Map<String,Object>对象。其中需要注意的是我们可以将Session对应的Map转换成(SessionMap),然后调用invalidate()方法是这个session失效。
通过实现XXXAware接口的方法来访问WEB资源:实现的接口有四种,ApplicationAware,SessionAware,RequestAware,ParameterAware。实现接口之后定义一个私有变冷了private Map<String,Object> requestMap,会重写setRequest(Map request)方法(以RequestMap来举例),这个方法会被Struts2框架自动调用,相当于将Struts2框架封装好的RequestMap框架注入到这个Action类中,就可以使用了。
耦合的方式也可以分为两种:使用ServletActionContext和实现ServletXXXAware接口。
使用ServletActionContext:和上边使用ActionContext的方式基本一致。
实现ServletXXXAware接口:和上边的实现XXXAware接口的方式基本一致。
需要注意的是:
① 解耦的方式获取的仅仅是Struts2框架帮助我们将域对象封装成的Map集合,这些集合中key对应的对象是无法像源生的WEB域对象那样有很多方法的。而通过和Servlet耦合的方式获取的WEB对象,就是源生的Servlet的域对象,拥有完整的Servlet域对象的方法,如getRealPath()等。解耦和耦合的使用情况需要看你的需求来定。
② 同时,使用(Servlet)ActionContext和实现(Servlet)XXXAware接口这两种方式也要分情况:因为Servlet)ActionContext只能在Action方法中使用,所以当一个Action中有多个用于处理请求的action方法时,我们用实现接口的方式比较方便,这样就不必再每个方法中都通过(Servlet)ActionContext.getContext()方法来获取对象了。
- Struts2-Action概述和在Action中访问WEB资源
- Struts2在Action中访问WEB资源
- struts2 在Action中访问WEB资源
- 详解Struts2如何在Action中访问web资源
- 在Action中访问WEB资源
- 在 Action 中访问 WEB 资源(struts2获取HttpServletRequest, HttpSession, ServletContext)
- struts2学习笔记(六) Action访问web资源的方式
- Struts2中Action访问ServletAPI
- Struts2中Action访问ServletAPI
- strtus2学习总结之Action中访问Web资源
- Struts2学习笔记(四):action中访问request,session以及applicationContext等web资源的方法
- Struts2学习笔记(四):action中访问request,session以及applicationContext等web资源的方法
- struts2在Action中访问request、session、application属性
- 在Struts2的Action中访问Servlet内置对象
- 基于Struts2在jsp中通过href访问Action
- struts2之Action获取web资源
- Action访问web资源的方式
- struts2中的action访问web对象
- 给第三方apk进行系统签名的几种方式
- UVALive
- HDU-5878-I Count Two Three
- 我的学习之路_第二十章_JDBC
- 利用python编程实现两excel表格的快速信息融合(xls文件的读和写)
- Struts2-Action概述和在Action中访问WEB资源
- 用js面向对象写的选项卡
- 企业搭建私有云
- git log的常见用法
- EJB系列
- linkedblockingqueue
- java中io流介绍
- Proxool Problem getting connection java.lang.IndexOutOfBoundsException(bug)
- 抓取某个进程的fd 信息,debug相关