struts2学习之---Convention插件与"约定"支持
来源:互联网 发布:位面小蝴蝶知乎 编辑:程序博客网 时间:2024/06/05 22:51
struts2引入了Convention插件来支持零配置,不仅不需要使用srtuts.xml文件进行配置,甚至不需要使用Annotation进行配置。”约定优于配置”
1.Action的搜索和映射约定
开发者只需要将Struts2项目下的struts2-convention-plugin-2.3.16.3.jar文件复制到struts2应用的WEB-INF\lib路径下。
对于Convention插件而言,它会自动搜索位于action、actions、struts、struts2包下的所有Java类,Convention插件会把如下两种java类当成Acion处理:
- 所有实现了com.opensymphony.xwork2.Action的Java类
- 所有类名以Action结尾的Java类
struts2的Convention插件还允许设置如下三个常量: - struts.convention.exclude.packages:指定不扫描哪些包下的Java类
- struts.convention.package.locators:Convention插件使用该常量指定的包作为搜寻Action的根包。
- struts.convention.action.packages:Convention插件以该常量指定包作为根包来搜索Action类。
映射Action的name时,遵循如下两个规则: - 如果该Action类名包含Action后缀,将该Action类名的Action后缀去掉。否则不做任何处理。
- 将Action类名的驼峰写法(每个单词首字母大写、其他字母小写的写法)转成中划线写法(所有字母小写,单词与单词之间以中划线隔开)。
com.hyq.actions.LoginAction 映射到/login.action com.hyq.actions.books.GetBooks 映射到/books/get-books.action
2.按约定映射Result
在默认情况下,Convention总会到Web应用的WEB-INF/content路径下定位物理资源,定位资源的约定是:actionName + resultcode + suffix。当某个逻辑视图找不到对应的视图资源时,Convention会自动试图使用actionName + suffix作为物理视图资源。
com.hyq.action.user.LoginAction返回success字符串时,Convention优先考虑使用WEB-INF\content\user目录下的login-success.jsp作为视图资源,如果找不到该文件,login.jsp也可作为对应的视图资源。
为了看到struts2应用里Action等各种资源的映射情况,struts2提供了Config Browser插件,该插件可以清楚地看出struts2应用下部署了哪些Action,以及每个Action详细的映射信息。struts2-config-browser-plugin-2.3.16.3.jar
Config Browser插件的首页地址为:Web_Context/config-browser/index.action
3.Action链的约定
希望一个Action处理结束后不是进入视图页面,而是进入另一个Action形成Action链,则通过Convention插件只需遵循如下三个约定:
- 第一个Action返回的逻辑视图字符串没有对应的视图资源。
- 第二个Action与第一个Action处于同一个包下。
- 第二个Action映射的URL为:firstactionName + resultcode
public class FirstAction extends ActionSupport{ public String execute(){ return "second"; } } public class FirstSecondAction extends ActionSupport{ public String execute(){ return SUCCESS; } }
4.自动重新加载
Convention插件完全支持自动重加载映射,可在web.xml、struts.xml、struts.properties文件中配置。
<!--配置struts2应用处于开发模式--> <content name="struts.devMode" value="true"/> <!--配置Convention插件自动重加载映射 --> <content name="struts.convention.classes.reload" value="true"/>
- struts2学习之---Convention插件与"约定"支持
- struts2 convention插件与"约定"支持
- struts2 convention插件与"约定"支持
- struts2 convention插件与"约定"支持
- convention插件与"约定"支持
- Convention插件与"约定"支持
- Convention插件与"约定"支持
- struts 2读书笔记-----Convention插件与“约定”支持
- struts 2读书笔记-----Convention插件与“约定”支持[转自树上月]
- Struts2-- Convention插件
- Struts2 Convention插件
- struts2-convention-plugin插件
- struts2 Convention 插件使用
- Struts2使用 -- Convention插件
- struts2中url和action自动匹配的插件convention(约定)
- Struts2中的零配置与CoC(Convention over Configration)约定优于配置
- Struts2的Convention插件的好处与使用
- Struts2 Convention Plugin 学习
- Cookie/Session机制详解
- Java中ObjectStream序列化实现
- 一、Docker在CentOS7下安装
- IntelliJ IDEA(2017)安装和破解
- 块存储、文件存储、对象存储本质区别
- struts2学习之---Convention插件与"约定"支持
- Android串口通信10进制转16进制
- Linux下的文件操作权限
- android 获取路径目录方法以及判断目录是否存在,创建目录
- java的数据类型
- Java中native关键字
- Mobilenet_YOLO
- Android给空包签名
- MySQL