1.官方介绍的地址:

http://struts.apache.org/2.1.6/docs/convention-plugin.html

2.struts.xml文件配置

只挑选几个重要的常量说明:

(1) <constant name="struts.locale" value="zh_CN"/>

      <constant name="struts.i18n.encoding" value="UTF-8"/>

struts2.1.6 
现在只需要一个struts.xml文件就可以了。以前配struts.locale=zh_CN,struts.i18n.encoding=UTF-
8,应用起动时会报一个警告,说没有配置locale,必须要在struts.properties里面配置才不会报错,现在这个问题已经解决了,所有配
置都可以在xml文件中指定了。

(2) <constant name="struts.action.extension" value="action,do,,"/>

扩展名可以指定为空。这样地址栏比较好看。但也会有个问题,就是一些其他servlet映射,如cxf,我们会映射地址为/services/*,现在这
个地址也变成struts2控制范围的地址了,如果按默认的配置会报找不到action的错误。解决办法是修改mapper类。这在以后文章中会提到。

(3)  <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

       <constant name="struts.enable.SlashesInActionNames" value="true"/>

开启动态方法。要实现零配置,就是需要动态方法调用。开启action名称可以有
“/”,一个请求地址有多个“/”,struts2就不会再使用类路径扫描的命名空间,只会使用配置的名称。所以既想action名称里使用“/”,又想
用struts2默认搜索的命名空间,只能自己修改一下convention插件的实现类了。

(4) <constant name="struts.ui.theme" value="simple"/>

不用dojo的及struts2复杂标签样式的就把主题设置为simple,这样可以不加载多余的模板。

(5) <constant name="struts.devMode" value="true"/>

      <constant name="struts.i18n.reload" value="true"/>

      <constant name="struts.configuration.xml.reload" value="true"/>

      <constant name="struts.convention.classes.reload" value="true" />

开启开发者模式,在平时开发时修改action的annotation配置可以不重启,但是修改struts.xml文件还是要重启。修改类的具体内容,debug模式下可以不重启,或是使用javarebel,这个不在讨论范围。

(6)  <constant name="struts.convention.result.path" value="/WEB-INF/pages/"/>

指定结果页面路径。 convention插件会自动在此路径中寻找文件。放到WEB-INF的目的的保护文件资源,只能通过程序内部跳转才能访问,我们的权限拦截器或其他权限处理只要加到action上就可以了。

(7) <constant name="struts.convention.action.suffix" value="Action"/>

     <constant name="struts.convention.action.name.lowercase" value="true"/>

     <constant name="struts.convention.action.name.separator" value="_"/>

一个action名字的获取。比如为HelloWorldAction。按照配置,actionName为hello_world。

(8)<constant name="struts.convention.action.disableScanning" value="false"/>

是否不扫描类。一定要设为false,否则convention插件不起作用,零配置也没有意义。

(9)<constant name="struts.convention.default.parent.package" value="default"/>

设置默认的父包,一般我们都设置一个default包继承自struts-default。大部分类再继承default。如果有特殊的类需要特殊的包,只能在action中再指定父包了。

(10) <constant name="struts.convention.package.locators" value="action"/>

       <constant name="struts.convention.package.locators.disable" value="false"/>

       <constant name="struts.convention.package.locators.basePackage" value=""/>

   确定搜索包的路径。只要是结尾为action的包都要搜索。basePackage按照默认不用配置,如果配置,只会找以此配置开头的包。locators及locators.basePackage都是一组以逗号分割的字符串。

(11)  <constant name="struts.convention.exclude.packages"
value="org.apache.struts.*,org.apache.struts2.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate."/>

   排除哪些包不搜索。按默认配置即可。逗号分割字符串。

(12)  <constant name="struts.convention.action.includeJars" value="" />

   包括哪些jar包中的action。逗号分割字符串。

(13)<constant name="struts.convention.relative.result.types" value="dispatcher,freemarker,velocity"/>

   默认返回的结果类型搜索。按顺序先找相关的dispatcher的jsp文件是否存在。然后再找freemarker,再找velocity。

(14)<constant name="struts.convention.result.flatLayout" value="true"/>

如果此值设为true,如果一个action的命名空间为/login,名称为HelloWorldAction。result返回值是success,
默认会找到/WEB-INF/pages/login/hello_world.jsp(如果有hello_world_success.jsp就找这个
文件,连接符“_”是在<constant name="struts.convention.action.name.separator"
value="_"/>中配置的)。如果有一个action的result返回值是“error”,就会找/WEB-INF/pages
/login/hello_world_error.jsp。

如果此值设为false,如果一个action的命名空间为/login,名称为HelloWorldAction。result返回值是
success,默认会找到/WEB-
INF/pages/login/hello_world/index.jsp(如果有success.jsp就找这个文件)。如果有一个action的
result返回值是“error”,就会找/WEB-INF/pages /login/hello_world/error.jsp。

(15) <constant name="struts.convention.action.mapAllMatches" value="false"/>

       <constant name="struts.convention.action.checkImplementsAction" value="false"/>

    <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>

    <constant name="struts.convention.redirect.to.slash" value="true"/>

这几个配置没有太多的实际意义,本着最小检查的原则就可以。

(16)默认拦截器配置,已经简化了许多,一般不需要chain和
fileupload。modelDriven也没什么用,如果我们要使用restfull插件会有用。其实最简单只要一个params就可以了。我加入

exception是为了开发时的异常。servletConfig是为了包装一下request,reponse等对象,staticParams是为
了可以配置${}形式参数。actionMappingParams是struts2.1新增的,我初步认为是可以在action配置中传参数,这个还有
些疑问。

    1. <package name="default" extends="struts-default">
    2. <interceptors>
    3. <interceptor-stack name="defaultStack">
    4. <interceptor-ref name="exception" />
    5. <interceptor-ref name="servletConfig"/>
    6. <interceptor-ref name="actionMappingParams"/>
    7. <interceptor-ref name="staticParams"/>
    8. <interceptor-ref name="params" />
    9. </interceptor-stack>
    10. </interceptors>
    11. </package>

convention-plugin的更多相关文章

  1. struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法

    环境: struts 2.3.16.3 + Convention Plugin 2.3.16.3 实现零配置 现象:以文件夹方式部署在weblogic(10.3.3)上时一切正常,换成war包部署,运 ...

  2. Struts2 Convention Plugin ( struts2 零配置 )

    Struts2 Convention Plugin ( struts2 零配置 ) convention-plugin 可以用来实现 struts2 的零配置.零配置的意思并不是说没有配置,而是通过约 ...

  3. Struts Convention Plugin 流程 (2.1.6+)

    首先添加lib: <dependency> <groupId>org.apache.struts</groupId> <artifactId>strut ...

  4. 菜鸟学Struts2——零配置(Convention )

    又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...

  5. Struts2 - Conversion Plugin

    转载:http://www.cnblogs.com/ikuman/archive/2013/11/04/3403073.html 1.struts2自2.1以后推荐使用Convention Plugi ...

  6. struts2 convention插件

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

  7. 菜鸟学Struts2——Interceptors

    昨天学习Struts2的Convention plugin,今天利用Convention plugin进行Interceptor学习,虽然是使用Convention plugin进行零配置开发,这只是 ...

  8. SSH整合JBPM4.4

    第一步:导入所需jar包: 所需的jar包(使用了hibernate annotation和struts2的convention-plugin,可能有多余的包,没做清理): 第二步:修改jbpm配置文 ...

  9. Struts2注解配置之@Namespace(四)

    今天开始学习@Namespace注解. 还是先看一段代码: package com.example.actions; import org.apache.struts2.convention.anno ...

  10. 《Struts2技术内幕》学习笔记

    第2.3章 基础 三种类模式:属性-行为模式.属性模式.行为模式. 其中属性模式有:PO(持久化对象).BO(业务对象).VO(值对象).DTO(传输数据对象).FromBean(页面对象)他们是对J ...

随机推荐

  1. Handsontable 新增一行 默认值

    效果图:

  2. nginx 采用https 协议通信配置

    在网络通信中,使用抓包软件可以对网络请求进行分析,并进行重放攻击,重放攻击的解决方案一般是使用一个变化的参数,例如RSA加密的时间戳,但考虑到网络传输时延,时间戳需要有一定的误差容限,这样仍然不能从根 ...

  3. Kafka在Linux环境下搭建过程

    准备工作 Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群.由于我们之前的分布式系统中已经安装zookeeper服务,这里不进行zookeeper安装教程以及应用教 ...

  4. Android开发之去掉标题栏的三种方法,推荐第三种

    Android:去掉标题栏的三种方法和全屏的三种方法 第一种:一般入门的时候常常使用的一种方法 onCreate函数中增加下面代码: requestWindowFeature(Window.FEATU ...

  5. Hacker(十一)----黑客常用入侵方法

    Internet中,为了防止黑客入侵自己的电脑,就必须了解黑客入侵目标计算机的常用方法.黑客常用的入侵方法有数据驱动攻击.系统文件非法利用.伪造信息攻击.远端操纵等. 一.数据驱动攻击 数据驱动攻击是 ...

  6. [转]Asp.Net调用前台js调用后台代码分享

    1.C#前台js调用后台代码 前台js <script type="text/javascript" language="javascript"> ...

  7. poj2243 bfs

    O - 上一个题的加强版 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:65536KB     6 ...

  8. (转) int argc, char* argv[] 的用法

    int main(int argc, char* argv[]) 這兩個參數的作用是什麼呢?argc 是指命令行輸入參數的個數,argv存儲了所有的命令行參數.假如你的程式是hello.exe,如果在 ...

  9. H面试程序(1)编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的 下一秒

    编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒. 如输入 2004 年 12 月 31 日 23 时 59 分 59 秒,则输出 2005年 1 月 1 日 0 时 0 分 0 秒. ...

  10. 【mysql】1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题

    最近在做一个项目,其中一需求是:部分数据库中的数据需要定时删除掉(满足一定条件,比如7天前的数据都不保留) 最初的执行方法: 使用Quartz定时执行数据库操作,进行数据删除,数据库操作使用delet ...