`

【转】Struts2 convention plugin 配置项功能说明

 
阅读更多

1.         零配置≠无配置。

2.         约定优于配置。

3.         Struts2-convention-plugin.jar位于struts2/lib目录下。

4.         它提供基于annotation(注解)的方式来代替struts.xml

5.         在该jar包下的struts-plugin.xml是对该插件的各种基本配置。它继承于struts-default

如果需要改变配置,可以在struts.xml中进行常量声明和赋值来替换默认配置。

6.         常量说明(以下常量均为默认配置)

 

<!-- 结果资源所在路径,也就是返回的页面路径 -->

<constant name="struts.convention.result.path" value="/WEB-INF/content/"/>

 

<!-- 搜索的Action资源包路径,无论层级,例如package.action,多项以逗号隔开-->

<constant name="struts.convention.package.locators" value="action,actions,struts,struts2"/>

 

<!-- 指定哪些包不搜索 -->

<constant name="struts.convention.exclude.packages" value="org.apache.struts.*"/>

 

<!-- 是否将返回的字符串作为资源名的一部分,例如MyTestAction中方法返回“abc”,如果设为true,则视图资源名为         my-test-abc.jspfalse则为my-test.jsp -->

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

 

<!-- 类名最后的组成部分,比如设置成qqq,则MyTestqqq将视为action,而MyTest则不是,访问时  会截去这个部分 -->

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

 

<!-- 是否不扫描类,默认false即要扫描,设为true则所有访问无效(不排除未知情况) -->

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

 

<!-- 始终创建action映射,即使没有@Action被发现(具体情况不明) -->

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

 

<!-- 是否检查类是不是实现了com.opensymphony.xwork2.Action接口,默认为true,即只要实现了此   接口的类为被视为    Action,设为false则不进行检查,无论是否实现都会无视 -->

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

 

<!-- 设置默认的父包 -->

<constant name="struts.convention.default.parent.package" value="convention-default"/>

 

<!-- 是否将Action类名转换成小写,默认true,例如MyTest访问的url名为my-test,设为false,则    My-Test -->

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

 

<!-- 名字分割符,即MyTest访问名为my-test,默认对应的页面为my-test-success.jsp -->

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

 

<!-- 是否禁用包扫描,对应struts.convention.package.locators设置 -->

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

 

<!-- 设置包扫描的结构,默认为空,例如com.jd.web就只会扫描项目中此结构包下的 子包,忽略其他包 -->

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

 

<!-- 默认返回结果类型 -->

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

 

<!-- 是否使用 / 作为重定向标示符,默认true@Result(location="/test.jsp") 则会在server/项目名/这个路径下找test.jsp     不加 / 则会在struts.convention.result.path这个常量配置的路径下找,若设为false / 无效-->

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

 

<!-- 不是很清楚,测试结果为:设置成false则报没有no action mapped,应该是默认是否执行execute()方法 -->

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

 

<!-- 设定是否一直在最后一个斜线之前的任何位置选定namespace,测试结果为无任何影响,情况不明 -->

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

 

<!-- 官方只说明在jboss下需要设置,情况不明 -->

<constant name="struts.convention.exclude.parentClassLoader" value="true" />

<constant name="struts.convention.action.fileProtocols" value="jar" />

 

<!-- 是否自动重新加载action -->

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

 

7.         Annotation(注解)

 

@Action(String value)

用来代替类名的访问名,例如MyTest类,在类级别上@Action("abc"),则访问的action名为abc,而不是默认的my-test,此注解也可写在方法上,定义为访问该方法的action名。此注解受struts.convention.redirect.to.slash影响。返回视图为abc.jsp,忽略方法返回的字符串。

@Actions

包含一个@Action数组

格式:@Action({@Action() , @Action()})

 

@Result

定义方法返回的结果类型,参数,资源路径,此注解必须写在类级别上。

格式:@Result(name="" , location="" , type="" ,  params={"",""})

name对应方法返回的字符串,location对应返回资源的路径,type对应返回资源类型

params对应返回结果的参数,格式params={"key0","value0",""key1,"value1"...."keyN","valueN"}

@Results

包含一个@Result数组

格式:参照@Actions

 

@Namespace

指定action的访问路径,会替换掉默认package的路径。

格式:@Namespace(String value)

例如:假设MyTest默认Namespace/test,其访问路径为xxx/test/my-test。若设置为@Namespace("abc")       则访问路径为/abc/my-test

 

注意:默认情况下action的访问路径必须和返回视图资源路径对应。

例如:假设默认搜索xxx.xxxx.xxx.web包下的actionMyTest类在web.action.test包下,则MyTest类中   方法默认情况返回搜索视图的路径为/WEB-INF/content/action/test/xxx.jsp

 

还有部分注解未尝试,如果上面这些不能解决,请google

 

关于映射路径感觉不适应的情况,struts2提供了一个插件,可以查看当前项目所有action的映射情况。

struts2/lib下的struts2-config-browser-plugin加入到项目的lib目录下,启动项目,url输入http://localhost:port/项目名/config-browser/index.action

 

转自:http://blog.163.com/pudi_1984_mail/blog/static/1643856162010427983652/

分享到:
评论

相关推荐

    struts2采用convention-plugin实现零配置

    在Struts2的某个版本之后,引入了一项名为`convention-plugin`的新特性,旨在简化配置过程,实现所谓的“零配置”开发。这个插件允许开发者通过约定而非显式配置来设置Action类、结果页面等,从而减少了XML配置文件...

    Struts采用convention-plugin实现零配置

    在Struts2框架中,Convention-Plugin是一项重要的功能,它允许开发者通过约定而非配置的方式快速搭建Web应用。 #### Convention-Plugin原理及实现 ##### 1. Convention-Plugin概述 在传统的Struts2项目中,开发...

    convention-plugin 插件使用说明

    这些配置项分别定义了Action的后缀、是否映射所有URL匹配以及默认的父包名称,从而确保Convention插件能够按照既定规则识别和处理Action。 #### HelloWorld示例解析 让我们通过一个简单的HelloWorld示例,深入了解...

    MyFramework - struts2 零配置:convention

    在传统的Struts2应用中,开发者需要为每个Action类和结果页面编写对应的配置项,而通过启用Convention插件,系统可以自动根据代码结构和命名规则推断Action和结果页面的关联。 Convention插件的核心思想是基于约定...

    Struts2零配置

    2. **零配置**:在启用Convention插件后,开发者可以省略大部分原本需要在`struts.xml`文件中定义的配置项。 3. **插件集成**:安装Convention插件非常简单,只需将相应的JAR包复制到项目的`WEB-INF/lib`目录下,...

    struts2所有jar包程序文件

    5. `struts2-convention-plugin.jar`和`struts2-spring-plugin.jar`:分别是约定优于配置插件和Spring集成插件,前者简化了Action配置,后者则帮助将Struts2与Spring容器整合。 6. `struts2-dojo-plugin.jar`和`...

    struts2注解配置全面解析

    - **配置项**:在项目的`struts.xml`文件中,确保配置了以下常量: ```xml &lt;constant name="struts.configuration.xml.reload" value="true"/&gt; &lt;constant name="struts.convention.default.parent.package" value...

    struts2新版本环境配置

    在新版本的Struts2环境中进行配置是一项重要的任务,它涉及到多个层面,包括依赖库的管理、配置文件的更新以及应用程序的整合。下面将详细阐述Struts2新版本环境配置的相关知识点。 1. **依赖库的管理**: - ...

    struts2注解详解

    可以通过配置项 `struts.convention.package.locators` 来指定搜索的位置,例如:`actions`, `action`, `struts`, `struts2` 等。这表示框架会在这些命名空间下查找 Action 类。此外,还可以通过 `struts.convention...

    struts2 2.3.15.3

    7. **struts2-convention-plugin**: 自动配置插件,根据类名和方法名自动映射Action,简化配置文件。 8. **struts2-tiles-plugin**: 集成了Tiles框架,用于创建可重用的页面布局和组件。 9. **struts2-spring-...

    struts2-src

    Struts2-convention-plugin则提供了基于约定优于配置的开发方式,简化了传统XML配置。 7. **异常处理**:Struts2有强大的异常处理机制,可以捕获并统一处理Action执行过程中的异常,同时支持自定义异常处理策略。 ...

    struts2必备jar.zip

    4. **Struts2插件**:Struts2支持许多插件,如Struts2-convention-plugin、Struts2-json-plugin等,这些插件扩展了框架的功能,如自动配置Action、JSON支持等。每个插件都有相应的jar文件,例如`struts2-convention-...

    struts2 开发jar包汇总

    2. **插件支持**:Struts2支持各种插件,如`struts2-convention-plugin.jar`提供了默认配置和约定优于配置的特性,使得无需编写大量XML配置就能实现Action的映射。`struts2-json-plugin.jar`则用于处理JSON格式的...

    Struts2的Jar包整合

    这些Jar包包括`struts2-core.jar`、`struts2-convention-plugin.jar`、`struts2-config-browser-plugin.jar`等。如果你使用的是Maven或者Gradle,可以在pom.xml或build.gradle文件中添加对应的依赖项。 2. **配置...

    struts-2.5.16升级jar包.zip

    这些jar包是实现Struts 2功能的基础,例如: 1. **struts2-core.jar**:这是Struts 2框架的核心,包含Action和Result的实现,以及核心的拦截器链。 2. **struts2-convention-plugin.jar**:提供了自动配置Action和...

    struts2从2.3.15.1升级到2.3.35

    4. **插件兼容性**:如果你的应用使用了Struts2的插件,比如Struts2-dojo-plugin或Struts2-convention-plugin,确保这些插件与2.3.35版本兼容。如果需要,升级相应的插件版本。 5. **API变更**:升级可能导致某些...

    struts2 上传下载

    - 文件上传的大小限制和配置可以通过修改`struts.xml`中的配置项进行控制。 2. **Struts2下载功能**: - 下载功能通常涉及到将服务器上的文件发送到客户端浏览器。Struts2提供了一种简单的方法来实现文件下载。 ...

    struts2包下载

    2. **struts2-convention-plugin.jar**:提供了约定优于配置的特性,允许开发者通过默认规则自动映射Action和结果,减少了XML配置的工作量。 3. **struts2-config-browser-plugin.jar**:提供了一个Web界面来浏览和...

    Struts2多文件上传

    在Struts2中,上传文件需要用到`struts2-convention-plugin`和`struts2-core`这两个核心依赖。 ### 配置Struts2 在`struts.xml`配置文件中,我们需要声明一个用于处理文件上传的Action。例如: ```xml ...

Global site tag (gtag.js) - Google Analytics