一、首先说明一点:所谓的基于Convention插件的约定优于配置的使用,并不是严格意义上的零配置,struts.xml文件并不能完全舍弃。

获得Convention插件功能,所必需的jar包有:|asm-x.x.jar|asm-commons-x.x.jar|struts2-convention-plugin-x.x.jar|

如果将struts2-config-browser-plugin-x.x.jar放入项目中,则可以通过http://{ip}:{port}/{Application}/config-browser/actionNames.action来查看应用中的映射关系

其中常用的配置信息有

Convention插件的常量
struts.convention.action.disableJarScanning 设置是否从Jar包里搜索Action类。如果开发者喜欢将Acion类打包成JAR,则应将该常量设为true。默认值为true。
struts.convention.action.packages Convention插件以该常量指定包做为根包来搜索Action类
struts.convention.result.path 设置Convention插件定位仕途资源的根路径。默认值为/WEB-INF/content
 struts.convention.result.flatLayout  如果设置为false,则可以将是土页面放置到Action对应的目录下(无须放入WEB-INF/content)
 struts.convention.action.suffix  Convention搜索Action类的类名后缀,默认值为Action
 struts.convention.action.disableScanning  是否禁止通过包扫描Action。默认值是false
 struts.convention.action.mapAllMatches 设置即使没有@Action注解,依然创建Action影射。默认值为false 
 struts.convention.action.checkImplementsAction  设置是否将实现了Action接口的类映射成Action,默认值是false
 struts.convention.default.parent.package  设置Convention映射的Action所在包的默认父包,默认值是convention-default
 struts.convention.action.name.lowercase  设置映射Action时,是否将Action的name属性值转换为所有字母小写,默认值是false
 struts.convention.action.name.separator  设置映射Action时指定Acion的name属性值各单词之间的分隔符,默认值是中划线
 struts.convention.package.locators   Convention插件使用该常量指定的包做为搜索Action的根包。默认值是action,actions,struts,struts2
 struts.convention.package.locators.disable  指定禁止从Action的根包里搜寻Action。默认值是false
 struts.convention.exclude.packages  指定排除在搜索Action之外的包。默认值为org.apache.struts.*,org.apache.struts2.*,
 struts.convention.packae.locators.basePackage  如果指定了该常量,Convention只会从以该常量值开始的包中搜索Action类
 struts.convention.relative.result.types  指定Convention映射Result时默认支持的结果类型,默认值是dispatcher,velocity,freemarker
 struts.convention.redirect.to.slash  设置是否重定向到斜线(/)。例如用户请求/foo,但/foo不存在时,如果设置该常量为true则可重定向到/foo/。默认值是true

二、每个Action的name属性,根据该Action的类名映射,映射Action的name时,遵循如下两步规则。

1.如果该Action类名包含Action后缀,将该Action类名的Action后缀去掉。否则不做任何处理。

2.将Action类名的驼峰写法转成中划线写法,所有字母小写。

例如:LoginAction映射的Action的name属性为login,GetBooks映射的Action的name属性为get-books,AddEmployeeAction映射的Action的name属性为add-employee。

三、Action处理用户请求以后会返回一个字符串做为逻辑视图,该逻辑视图必需映射到实际的物理视图。Convention默认也为作为逻辑视图和物理视图之间的映射提供了约定。

默认情况下,Convention总会到Web应用的WEB-INF/content路径下定位物力资源,定位资源的约定时actionName+resultcode+suffix。当某个逻辑视图找不到对应的物理视图资源时,Convention会自动试图使用actionName+suffix作为物理视图资源。

四、Action处理结束后如果不是进入视图页面,而是进入另外一个Action形成Action链的话,则通过Convention插件只需要遵守如下三个约定即可。

1.第一个Action返回的逻辑视图字符串没有对应的是视图资源

2.第二个Action与第一个Action处于同一个包下

3.第二个Action映射的URL为:firstactionName+resultcode

例如第一个Action类名为FirstAction,并且返回second字符串,则第二个Action的类名为FirstSecondAction,且两个Action在同一个包下,且视图资源中没有first-second.jsp或者first.jsp的物理视图资源。

struts2基于Convention插件的约定映射使用的更多相关文章

  1. Struts2的Convention插件

    Struts2的Convention插件的作用:在Struts2中的/lib/struts2-convention-plugin-x.x.xx.x.jar Convention插件会自动搜索位于act ...

  2. Convention插件与“约定”支持

    主要用于Action映射和Result映射 struts2-convention-plugin-2.3.16.3.jar 会将 |--实现了com.opensymphony.xwork2.Action ...

  3. Struts2 Convention插件的使用(1)

    刚刚查阅官方文档(convention-plugin.html)并学习了Struts2的Convention插件,文章这里只作为一个笔记,建议大家去看官方文档比较清晰和全面. 需要在项目添加这些包 c ...

  4. struts2 Convention插件零配置,使用注解开发

    从struts21开始,struts2不再推荐使用codebehind作为零配置插件,而是改用Convention插件来支持零配置.与以前相比较,Convention插件更彻底. 使用Conventi ...

  5. Struts2 注解零配置方法(convention插件使用)

    最近接触到一个新的项目,是做一个使用S2SH的电子商务商城的二次开发.之前使用过S2SH,在此之前的项目中,Struts2 使用的是XML配置而这个项目是使用注解.在这个项目中,注解还不需要使用Act ...

  6. struts2 Convention插件好处及使用

    现在JAVA开发都流行SSH.而很大部分公司也使用了struts2进行开发..因为struts2提供了很多插件和标签方便使用..在之前开发过程中总发现使用了struts2会出现很多相应的配合文件.如果 ...

  7. struts2 convention插件

    1.struts2自2.1以后推荐使用Convention Plugin支持struts零配置支持(引入jar:struts2-convention-plugin-2.x.x.jar)①convent ...

  8. Struts2 Convention插件的使用(4)使用@Action注解返回json数据

    package com.hyy.action; import java.util.HashMap; import java.util.Map; import org.apache.struts2.co ...

  9. Struts2零配置介绍(约定访问)

    从struts2.1开始,struts2 引入了Convention插件来支持零配置,使用约定无需struts.xml或者Annotation配置 需要 如下四个JAR包 插件会自动搜索如下类 act ...

随机推荐

  1. [codevs1073]家族

    题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和 ...

  2. Drupal安装及使用问题解决列表

    #1. 启动 Clean URL 修改Apache的配置文件(如httpd.conf),打开 LoadModule rewrite_module modules/mod_rewrite.so选项.然后 ...

  3. HW5.3

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  4. Codeforces10D–LCIS(区间DP)

    题目大意 给定两个序列,要求你求出最长公共上升子序列 题解 LIS和LCS的合体,YY好久没YY出方程,看了网友的题解,主要是参考aikilis的,直接搬过来好了 经典的动态规划优化. 用opt[i] ...

  5. A Tour of Go Variables

    The var statement declares a list of variables; as in function argument lists, the type is last. pac ...

  6. JavaScript Garden

    Objects Object Usage and Properties Everything in JavaScript acts like an object, with the only two ...

  7. iOS开发中懒加载的使用和限制

    1.在开发过程中很多时候,很多控件和对象需要alloc为了,提高开发效率使得懒加载得以产生. 2.下边用代码解释: - (NSMutableArray *)newsArr{ if (!_newsArr ...

  8. WebSerivce测试工具 Storm

    STORM 是一款免费且开源的WebSerivce测试工具 它的功能: 1,测试任意语言测试 WebService 2,可动态调用webservice的方法,即使输入参数需要使用复杂的数据类型 3,节 ...

  9. Fastjson反序列化泛型类型时候的一个问题

    import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.u ...

  10. 【转】GitHub平台最火Android开源项目整理——2013-08-25 17

    http://game.dapps.net/news/developer/9199.html GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮 ...