Struts2配置详解
Action中的预定义的字符串常量可以和result的name对应
SUCCESS、INPUT、ERROR……
name可以是定义的任意字符串,和Action返回的结果一致即可
result配置一般使用绝对路径,绝对路径以斜杠(/)开头
type属性指定result的类型,不同类型的result代表了不同的结果输出
默认取值dispatcher,将请求转发(forward)到本应用程序里指定的资源
可以在struts-default.xml中查看result的类型
redirect:请求重定向到指定的URL(可以是页面也可以是Action)
redirectAction:请求重定向到指定的Action
chain: Action链式处理,将请求转发(forward)到指定的Action
json:实现Ajax时返回JSON对象
可以自定义结果类型
小结
result的type属性
dispatcher与redirect的区别
dispatcher转发形式,把参数等资源转发给本资源
redirect重定向到指定URL,参数等资源丢失
redirect与redirectAction的区别
redirect跳转页面或Action;可以跳转到本应用程序内部或者外部
redirectAction跳转Action;只能跳转本应用程序内部
全局结果小结
使用<result>来配置,只不过不是在<action>中嵌套,而是在<global-results>中嵌套,当所有Action需要共享某个结果时,可以定义为全局结果。比如,类似登录页面这样的公共页面、错误页面、异常页面
全局结果的影响范围为整个包的所有Action,如果不是对所有Action都有效的结果,不要定义在<global-results>中
name属性:result逻辑名,和Action里的返回值匹配,默认“success”
type属性:结果类型,默认dispatcher
全局结果:通过<global-results>配置,对包内所有Action都有效的结果
动态结果:执行结果在配置时并不知道,在运行时刻才能确定,使用${}
struts.xml(package不能重名,而且必须继承一个类,而actiion和result都可以重名)
struts.xml中<package>的namespace,配置了命名空间,访问时需要加上命名空间取值为""或者不配置时,代表不管路径有多深,只要Action的名字匹配上就可以
默认为""
一般以模块进行命名
Action搜索顺序
http://localhost:8080/p1/p2/p3/login,Struts2的搜索顺序是
1首先搜索namespace为/p1/p2/p3的package,如若这个package不存在则转至步骤2
2搜索namespace为/p1/p2的package,如若这个package不存在,则转至步骤3
3搜索namespace为/p1的package,如若这个package不存在,则转至步骤4
4到默认namespace的package里面去搜索此action,所谓默认namespace的package,就是没有
namespace或者namespace为空字符串(“”)的package,如若在默认namespace的package里面
还是找不到该 action,则报404提示找不到此命名空间和action
根据模块拆分struts.xml
<exception-mapping>:局部异常映射。指定在Action方法抛出指定异常的时候跳转到哪个指定的
结果视图
result属性:发生异常后要跳转到的结果视图
exception属性:指定了一个Exception的全类名,如果Action的方法抛出的异常是这个
Exception类或子类的实例,就会跳转到result指定的结果去
<global-exception-mappings>:全局异常映射
<package>的子元素
要配置一个全局结果<global-results>
<global-results>应该在<global-exception-mappings>之前
可以声明到一个父包中,被其它包继承
访问Servlet API
Struts2的Action实现了MVC中C层的作用
针对请求向用户显示所在城市信息
登录后保存用户信息
保存当前在线人数
传统Servlet API类型
HttpServletRequest
HttpSession
ServletContext
Struts2中传统Servlet API类型被处理成Map类型
访问更方便
不依赖传统Servlet API类型——解耦合
关于ActionContext
所在包com.opensymphony.xwork2
ActionContext被称为Action上下文或Action环境
ActionContext提供每个Action运行时与之相关的所有信息
访问Servlet API
ActionContext类提供getContext()方法获得实例
通过ActionContext类的实例可获得Map类型的请求、会话等
通过put()和get()方法在Map类型的对象中存取数据
在 struts.xml 文件中,声明全局异常映射,以及对应的全局异常转发如下所示:
<global-results> <result name="error">/admin/error/ErrDisplay.ftl</result> </global-results> <global-exception-mappings> <exception-mapping result="error" exception="com.orizone.hbmobile.hbcm.struts.BusinessException"></exception-mapping> </global-exception-mappings>
来自 <http://blog.sina.com.cn/s/blog_4b62e4a901008jlo.html>
原文:http://www.cnblogs.com/xuerong/p/5037730.html