Struts2笔记――5.Convention插件与“约定”支持
2015-08-22 08:26
387 查看
Strus2的Convention插件支持可以使我们无需在struts.xml中配置action。要想使用此功能,只需要将struts2-convention-plugin这个包导入即可。
Action的搜索和映射约定当导入了这个包之后,框架就会自动搜索位于action、actions、struts、struts2包下面的所有java类。然后会自动把集成了ActionSupport或者类名以Action结尾的java类当做是action的实现类。只要包的全路径里面含有这四个包名,框架就回去搜索。此外我们还可以设置三个常量,以制定要搜索那些包,不搜索那些包。struts.convention.exclude.packages用于指定不扫描哪些包。struts.convention.package.locators用于指定搜索action的根包。struts.convention.action.packages用于指定要搜索的根包。有了这个常量,除了上述四个名字的包会被搜索之外,这个常量所指定的也会被搜索。一旦找到某个action后,根据这个action的包名,类型来生成命名空间与action名。action、actions、struts、struts2这些会作为根命名空间,它们后边的包名会变成命名空间。而类名经过处理后会作为action名。类名若包括Action后缀,则去掉,然后将名字由驼峰写法变为-写法。比如说com.cm.actions.users.UserLoginAction会被影射成url为users/user-login
按约定映射resultresult也不需要在xml中配置了!只需要在WEB-INF下建立一个content文件夹,然后按照url的写法,建立包,或者不在建立直接写。比如说上面的users/user-login,它的众多结果们就是在/WEB-INF/Content/users/user-login-success.jsp
Action链的约定由于无论是要跳转到视图资源还是另一个action,action实现类的返回值都是一个字符串,所以在Convention约定里面的action链的实现需要有如下条件:action的返回字符串不能对应任何视图资源。第二个action与第一个处于同一个包下。第二个aciton的命名比较特殊,是第一个action的名字+返回值。比如第一个action叫CheckUserName,当返回了next字符串之后希望到下一个action中继续处理,则要在同一个包下建立名为CheckUserNameNext。为什么返回值是小写的,到了类名就变成大写了呢?因为返回值与url相同,都是小写的,即url应该是/命名空间/check-user-name-next,而对应于驼峰写法的类名,就要变成大写的。
配置自动加载映射改变了aciton之后,映射规则也随之改变,因此我们希望架构能够自动加载映射关系。这时候我们只需要配置两个常亮即可。struts.devMode配置为true,表示Struts2应用处于开发模式,需要经常调试。struts.convention.classes.reload配置为true,表示插件会自动加载映射。本文出自 “指尖轻飞” 博客,谢绝转载!
Action的搜索和映射约定当导入了这个包之后,框架就会自动搜索位于action、actions、struts、struts2包下面的所有java类。然后会自动把集成了ActionSupport或者类名以Action结尾的java类当做是action的实现类。只要包的全路径里面含有这四个包名,框架就回去搜索。此外我们还可以设置三个常量,以制定要搜索那些包,不搜索那些包。struts.convention.exclude.packages用于指定不扫描哪些包。struts.convention.package.locators用于指定搜索action的根包。struts.convention.action.packages用于指定要搜索的根包。有了这个常量,除了上述四个名字的包会被搜索之外,这个常量所指定的也会被搜索。一旦找到某个action后,根据这个action的包名,类型来生成命名空间与action名。action、actions、struts、struts2这些会作为根命名空间,它们后边的包名会变成命名空间。而类名经过处理后会作为action名。类名若包括Action后缀,则去掉,然后将名字由驼峰写法变为-写法。比如说com.cm.actions.users.UserLoginAction会被影射成url为users/user-login
按约定映射resultresult也不需要在xml中配置了!只需要在WEB-INF下建立一个content文件夹,然后按照url的写法,建立包,或者不在建立直接写。比如说上面的users/user-login,它的众多结果们就是在/WEB-INF/Content/users/user-login-success.jsp
Action链的约定由于无论是要跳转到视图资源还是另一个action,action实现类的返回值都是一个字符串,所以在Convention约定里面的action链的实现需要有如下条件:action的返回字符串不能对应任何视图资源。第二个action与第一个处于同一个包下。第二个aciton的命名比较特殊,是第一个action的名字+返回值。比如第一个action叫CheckUserName,当返回了next字符串之后希望到下一个action中继续处理,则要在同一个包下建立名为CheckUserNameNext。为什么返回值是小写的,到了类名就变成大写了呢?因为返回值与url相同,都是小写的,即url应该是/命名空间/check-user-name-next,而对应于驼峰写法的类名,就要变成大写的。
配置自动加载映射改变了aciton之后,映射规则也随之改变,因此我们希望架构能够自动加载映射关系。这时候我们只需要配置两个常亮即可。struts.devMode配置为true,表示Struts2应用处于开发模式,需要经常调试。struts.convention.classes.reload配置为true,表示插件会自动加载映射。本文出自 “指尖轻飞” 博客,谢绝转载!
相关文章推荐
- JAVA基础
- 选择排序(java实现)
- struts1和struts2的特点和区别
- java常用设计模式
- 使用wget 命令下载JDK的方法
- Server端接收了不一样的请求,在服务端要如何识别并操作呢
- 【8-21】java学习笔记03
- Eclipse上安装springsource-tool-suite(转)
- Struts2笔记――12.拦截器机制
- Java构造和解析Json数据的两种方法详解
- 每日五题(java基础)
- window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
- Java迭代器深入理解及使用
- 破除java神话之三:原子操作都是线程安全的
- 《深入理解Java虚拟机》第2版笔记(完整)
- Java的堆和栈
- spring的IOC有什么作用
- struts2中action跳转获取json数据
- java关键字及其作用
- 深入理解JVM内幕:从基本结构到Java 7新特性