2024年4月17日发(作者:)

从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使

用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该

插件完全抛弃配置信息,不仅不需要是使用文件进行配置,甚至不需要使用

Annotation进行配置,而是由struts2根据约定自动配置。

如何使用Convention

1. 将文件复制到WEB-INF/lib路径下

2. 对于Convention插件而言,它会自动搜索位于action,actions,struts,

struts2包下的所有java类,Convention插件会把如下两种java类当成Action处理:

1) 所有实现了的java类

2) 所有类名以Action结尾的java类

3. Convention插件还允许设置如下三个常量:

1) s:指定不扫描哪些包下的java类,位于这些

包结构下的java类将不会自动映射成Action;

2) rs:Convention插件使用该常量指定的包作

为搜寻Action的根包。对于ction类,按约定原本应映射到

/fore/login;如果将该常量设为fore,则该Action将会映射到/login

3) es:Convention插件以该常量指定包作为根包

来搜索Action类。Convention插件除了扫描action,actions,struts,struts2四个包的类

以外,还会扫描该常量指定的一个或多个包,Convention会试图从中发现Action类。

注意:rs和es

两个常量的作用比较微妙,开发者在利用这两个常量时务必小心。

如:下面Action所在包被映射的命名空间如下:

ction 映射到 /

oAction 映射到 /myoffice

oAction 映射到 /myofiice

4. 映射Action的name时,遵循如下两步规则:

1) 如果该Action类名包含Action后缀,将该Action类名的Action后缀去掉。

否则不做任何处理。

2) 将Action类名的驼峰写法(每个单词首字母大写、其他字母小写的写法)转成

中画线写法(所有字母小写,单词与单词之间以中画线隔开)

如:LoginAction映射的Acion的name属性为login,GetBooks映射的Action的

name的属性为get-books,AddEmployeeAction映射的Action的name属性为

add-employee