一、首先说明一点:所谓的基于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. ACM2027

    统计元音 Problem Description 统计每个元音字母在字符串中出现的次数.   Input 输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串.   Ou ...

  2. 费用提前计算相关的DP(BZOJ2037,POJ3042,ZOJ3469)

    在刷ZeroClock大神的区间DP专辑,遇见了ZOJ3469,完全不无从下手,然后有人说是论问题,推荐看徐源盛<对一类动态规划问题的研究>这篇论文,果断得膜拜了下,感觉好神奇,可以把未来 ...

  3. linux下mysql的表名问题

    最近从win转移到了linux,在本机跑好的程序但在linux下一个SQL语句报了错误,发现是表名未找到,错误原因是在linux下mysql的表名是严格区分大小写的.. MYSQL在LINUX下数据库 ...

  4. Kooboo CMS 介绍

    Kooboo的定位是一个CMS,内容管理平台,从更严格意义上来说,它更应该网站快速开发平台.针对一般网站开发过程的分析和提炼,着重在解决网站的一般需求,提出一套快速开发网站的理念和方法.在这些理念和方 ...

  5. 查看目标文件是否是以-fPIC编译的, ar 打包命令将多个静态库打包到一个里面

    readelf --relocs foo.o | egrep '(GOT|PLT|JU?MP_SLOT)' 上句大多数时候(和平台有关)可以正确判断是否是以fPIC选项编译的,如果输出为空,基本可以表 ...

  6. mysql均衡负载

    一.利用mysql 复制分流查询操作: 利用mysql的主从复制可以有效的分流更新操作和查询操作,具体的实现是一个主服务器,承担更新操作,多台从服务器,承担查询操作,主从之间通过复制实现数据的同步.多 ...

  7. Windows Service中使用Threading.Timer需注意回收

    在Windows Service中使用Threading.Timer时需要注意回收池问题 Threading.Timer是基于线程池的,系统会对其进行垃圾回收. 当Threading.Timer定义在 ...

  8. 第一章 Windows NT System Components

    Page 3. The focus(焦点) of this book is Windows NT file system and the interaction(交互) of the file sys ...

  9. nyoj 325 zb的生日

    01背包 zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄 ...

  10. eclipse安装插件checkstyle

    最近听说了一个eclipse神器:checkstyle,可以帮助java开发人员规范代码,对我这种有代码洁癖的人来说,这有着不小的魔力啊,必然要安装试一试啊. 我最喜欢的安装方式是 输入一个安装网址, ...