新版本中的注解配置是要依赖一个struts2-convention-plugin-2.1.8.1.jar的包,而这个包会默认依次检索包名里含有struts,struts2,action,actions的包,而后它会对实现了Action接口以及类名以Action结尾的这些类,做为Action来进行处理。 spa
它的映射规则是这样的,对于以Action结尾的的类,去掉Action,取剩下的部分,将全部的字母转换为小写,若是有驼峰式的写法,则用"-"链接符来链接不一样的单词,这是此插件的默认方式。最终转换以后的就是请求地址,下面看一个例子说明: 插件
com.yirong.user.UserAction 这个类按照上面的规则,那么它的请求地址就应该是去掉后面的Action,前面的User所有转换成小写,那么最后的结果就是 /user.action xml
但咱们平时通常还有命名空间的问题,在这里面是若是你的包名里面在struts,sturts2,action,action2的后面还有其它的话,那么后面的部分就默认为命名空间,仍是看例子: 接口
com.yirong.action.other.UserAction 按上面所说的那么这个最终的请求地址就为:/other/user.action io
咱们还常常使用驼峰命名法,而它的默认解析规则为用"-"链接符来链接不一样的单词,如: struts2
com.yirong.action.UserManagerAction 这个请求地址就为:/user-manager.action 配置
还有一种状况,若是你的包名里同时含有多个关键字,那么默认将按照我上面写的顺序来解析,仍是来看例子: plugin
com.yirong.struts.action.UserAction 这个里面就同时包含struts与action而默认struts的优先级高那么后面的action就做为普通的字符(默认也就是命名空间)来处理,因此请求地址就为:/action/user.action,而若是是: 命名空间
com.yirong.action.struts.UserAction (由于struts的优先级高)最终的结果就为:/user.action 请求
那么若是咱们不想按照它默认的这几种关键字来检索呢?有办法,那就是经过struts.xml的常量配置来修改它检索的关键字:
<constant name="struts.convention.package.locators" value="yirong" />
这样就让它默认的检索为包名里是否含有yirong来断定action了