Struts2使用 -- Convention插件
本文来自CSDN博客:
http://blog.csdn.net/xiaoping8411/archive/2010/06/02/5641575.aspx
?
1.1. 设置结果页面路径
默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。如:
Xml代码:
<constant name="struts.convention.result.path" value="/WEB-INF/page" />
?
?
则将路径配置到了WEB-INF/page 下。
1.2. 设置Convention搜索包
默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。你可以通过设置struts.convention.package.locators属性来修改这个配置。如:
<constant name="struts.convention.package.locators" value="web,action" />
?
?
则定义了在项目中,包路径包含web和action的将被视为Action存在的路径来进行搜索。
Com.ustb.web.*/com.ustb.action.*都将被视为含有Action的包路径而被搜索。
接着,Convention从前一步找到的package以及其子package中寻找 com.opensymphony.xwork2.Action 的实现以及以Action结尾的类:
com.example.actions.MainAction
com.example.actions.products.Display (implements com.opensymphony.xwork2.Action)
com.example.struts.company.details.ShowCompanyDetailsAction
?
?
1.3. 命名空间
命名空间。从定义的.package.locators标示开始到包结束的部分,就是命名空间。举个例子:
Com.ustb.web.user.userAction的命名空间是:”/user”。
Com.ustb.web.user.detail.UserAction的命名空间是:”/user/detail”
?
?
1.4. Actin类名路径分割
Convention通过如下规则确定URL的具体资源部分:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用’-’分割,你可以设置struts.convention.action.name.separator 如
<constant name="struts.convention.action.name.separator" value="-" />
还是举个例子:
UserAction->user? UserDetailAction ->user-detail。
结合上面的。
对于com.ustb.web.user.detail.UserDetailAction,映射的url就是/WEB-INF/content/user/detail/user-detail.jsp
1.5. 支持jsp、html、htm、vm等格式
struts支持.jsp .html .htm .vm格式的文件。
下面是actiong和结果模版的映射关系:
?
?
<constant name="struts.convention.classes.reload" value="true" />
?
?
此功能没有在所有容器中进行过测试,强力建议不要在生产环境中使用。
?
1.13.?? 扫描Action的Jar包
默认情况下,Convention 插件不会从jar文件中寻找action。如果想实现这一功能,jar文件必须被struts.convention.action.includeJars 所定义的正则 匹配到。在例子中 myjar1.jar和 myjar2.jar 将被插件检测到:
<constant
name="struts.convention.action.includeJars"
value=".*/myjar1.*?jar(!/)?,.*/myjar2*?jar(!/)?" />
?
?
提示:正则表达式只针对jar文件的路径进行匹配,而不是文件名。jar的URL应该包含jar文件的路径并以"!/"结尾。
?
?