struts2的Convention插件与“约定”支持

特点:
Convention插件主要特点是"约定优于配置"

引入Convention插件:

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.1.6</version>
 </dependency>

Convention插件原理:
Convention插件会自动搜索位于action、actions、struts、struts2包下的所有Java类,将两种Java类当做Action处理:
1.所有实现了com.opensymphony.xwork2.Action接口的Java类
2.所有类名以Action结尾的Java类

关于扫描包的三个常量:
struts.convention.exclude.package:指定不扫描哪些包下的Java类,位于这些包结构下的Java类将不会被自动映射成Action
struts.convention.package.locators:以该常量指定的包作为搜索Action的根包。
struts.convention.action.packages:Convention插件以该常量指定包作为根包来搜索Action类,除了action、actions、struts、struts2四个包的类之外,还会扫描该常量指定的一个或多个包

扫描包找到合适的Action类之后,Convention插件会按约定部署这些Action,部署Action时,action、actions、struts、struts2四个包会映射到根命名空间,而这些包下的子包则被映射成对应的命名空间。由于Struts2的Action都是以package形式组织,package还有父package,对于采用Convention插件的应用而言,每个Action所处的package与其Action类所在包相似,映射Action的name属性遵循如下规则:
1.如果Action类名包含Action后缀,去掉Action
2.将Action类名类名的驼峰写法转成中划线写法(所有字母小写,单词与单词之间以中划线隔开)

按约定映射Result:
Action处理用户请求之后会返回一个字符串作为逻辑视图,该逻辑视图必须映射到实际的物理视图才有意义,Convention默认为逻辑视图和物理视图之间的映射提供了约定。默认情况下,Convention总会到Web应用的WEB-INF/content路径下定位物理资源,定位约定为:actionName+resultcode+suffix,当找不到对应视图资源时,Convention自动试图使用actionName+suffix作为物理视图资源

Action链约定:
如果希望一个Action处理结束后不是进入视图页面,而是进入另一个Action形成Action链,则通过Convention插件只需遵守如下三个约定即可:
1.第一个Action返回的逻辑视图字符串没有对应的视图资源
2.第二个Action与第一个Action处于同一个包下
3.第二个Action映射URL为:firstactionName+resultcode

自动重加载映射:
因为Convention插件是根据Action、JSP页面来动态生成映射,因此不管是Action改变,还是JSP页面改变,都需要Convention插件重新加载映射,为了自动重加载映射,只需要在web.xml,struts.xml或struts.properties文件配置两个常量即可:

<constant name="struts.devMode" value="true">
<constant name="struts.Convention.classes.reload" value="true">

Convention插件的相关常量:
Convention插件主要解决Action管理,Result管理等常见配置,但是应用中的各种全局配置,Bean配置,拦截配置等,依然需要配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值