访问Servlet接口
- ActionContext
- 实现接口ServletContextAware...
- ServletActionContext工具类
配置Action
定义Action通过使用<package.../>下的<action.../>子元素来完成,而每一个package元素配置一个包
每个包就是多个Action、多个拦截器、多个拦截器引用的集合
子包可以从一个或多个父包中继承到拦截器、拦截器栈、action等配置
struts-default抽象包,该包下包含了大量结果类型定义、拦截器定义、拦截器引用定义等,这些定义是配置普通Action的基础,所以开发者定义的package通常应该继承struts-default包
Action的基本配置
每个<result.../>元素定义逻辑视图和物理视图之间的一次映射
使用Action的动态方法调用(Dynamic Method Invocation)
action="actionName!methodName"
指定method属性及使用通配符
一个Action处理类定义成多个逻辑Action
使用通配符
当用户请求的URL同时匹配多个Action时,究竟由哪个Action来处理用户请求呢?
配置默认Action
<default-action-ref.../>
配置Action的默认处理类
<default-class-ref.../>
配置处理结果
理解处理结果
Action处理完用户请求后,并未直接将请求转发给任何具体的视图资源,而是返回一个逻辑视图(这个逻辑视图只是一个普通字符串),Struts 2框架收到这个逻辑视图后,把请求转发到对应的视图资源,视图资源将处理结果呈现给用户。
配置结果
局部结果:
- name:该属性指定所配置的逻辑视图名
- type:该属性指定结果类型
Struts 2支持的结果类型
介绍plainText redirect redirectAction
使用plainText结果类型时可指定如下两个参数。
location:指定实际的视图资源
charSet:指定输出页面时所用的字符集
redirect(重定向)会丢失所有的请求参数、请求属性——当然也丢失了Action的处理结果
使用redirect结果类型的效果是,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求,因此所有的请求参数、请求属性、Action实例和Action中封装的属性全部丢失。
使用redirect结果类型时可指定如下两个参数
location:
parse:
redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。
使用redirectAction结果类型时可指定如下两个参数
actionName:
namespace:
动态结果
Action属性值决定物理视图资源
使用PreResultListener
Struts2 应用可由Action、拦截器添加PreResultListener监听器
一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器所拦截的所有Action都起作用
配置Struts 2的异常处理
最好的方式是可以通过声明式的方式管理异常处理
Action接口里的execute()方法签名:
public String execute throws Exception
Struts 2 的异常处理机制是通过在struts.xml文件中配置<exception-mapping.../>元素完成的,配置该元素时,需要指定如下两个属性。
- exception:此属性指定该异常映射所设置的异常类型
- result:此属性指定Action出现该异常时,系统返回result属性值对应的逻辑视图名
Convention插件与“约定”支持
从Struts 2.1开始,Struts引入了Convention插件来支持零配置, 借鉴了Rails的创意,“约定优于配置”原则
Action链的约定
网友评论