使用Convention,必须将Struts2下的struts2-convention-plugin-*.*.*.jar复制到WEB-INF/lib路径下
Action的搜索和映射约定:(它会自动搜索位于action、actions、struts、struts2包下的所有java类)
会把如下java类当做Action:
>所有实现了com.opensymphony.xwork2.Action的java类
>所有以Action结尾的java类
:wang.app.actions.LoginAction
wang.app.actions.books.getBooks (该类实现了com.opensymphony.xwork2.Action接口)
wang.app.action.LoginAction
wang.app.struts.auction.bid.BidAction
wang.app.struts2.wage.hr.AddEmployeeAction
允许设置如下三个常量:
>struts.convention.exclude.packages:指定不扫描哪些包下的java类,位于这些包下的java类不会自动映射成Action
>struts.convention.package.Locators:指定某包作为根包(对于actions.wang.LoginAction类,按约定映射为/wang/login,如果该常量设为wang,则该Action将会映射为/login)
>struts.convention.action.packages:Convention除了扫描action.actions.struts.struts2包,还扫描该常量指定的一个或多个包
将扫描包映射为命名空间: (会将action、actions、struts、struts2映射为根命名空间)
:wang.app.actions.LoginAction 映射到/
wang.app.actions.books.GetBooks 映射到/books
wang.app.struts2.wage.hr.AddEmployeeAction 映射到/wage/hr
Action类名映射为Action的name属性:
1.如果Action类型包含Action后缀,将Action后缀去掉,否则不做任何处理
2.得到第1步的结果,将驼峰写法转换为中划线写法
:wang.app.actions.LoginAction 映射到/login.action
wang.app.actions.books.GetBooks 映射到/books/get-books.action
wang.app.struts2.wage.hr.AddEmployeeAction 映射到/wage/hr/add-employee.action
按约定映射Result:
(Convention总会到Web应用的WEB-INF/content路径下定位物理资源,约定是:
actionName+result+suffix,当逻辑视图找不到对应视图资源时,Convention会自动使用actionName+suffix作为视图资源,suffix指的是视图技术)
Action的URL | 返回逻辑视图名 | 结果类型 | 对应物理视图 |
/login | success | Dispatcher | \WEB-INF\content\login-success.jsp |
/wang/get-book | success | Dispatcher | \WEB-INF\content\wang\get-book-success.jsp |
content
|——login.jsp
|——wang
|——get-book-success.jsp
使用Config Browser:(可以看到每个Action详细映射信息)
安装该插件: 将Struts2项目的lib目录下的struts-config-browser-plugin-*.*.*.jar文件复制到WEB-INF/lib路径下
首页地址: http://localhost:8080/应用名/config-borwser/actionNames.action
Action链约定:
Action处理后不进入试图页面,进入另一个Action,须遵守如下约定:
>第一个Action返回的逻辑视图字符串没有对应逻辑视图
>第二个Action与第一个Action处于同一个包下
>第二个Action映射的URL为:firstactionName+resultCode
例:
package org.wang.action ... public class FirstAction extends ActionSupport { ... public String execute() { ... return "second"; } }
(WEB-INF/content下不要提供first-second.jsp或first.jsp,第二个Action类名应为FirstSecondAction)
Convention插入的相关常量:(应看Struts2官方API更佳)
相关推荐
在Web开发领域,"配置convention插件"通常是指遵循一套约定优于配置(Convention over Configuration,简称CoC)原则的工具或框架中的插件部分。这种原则旨在减少开发者需要进行的显式配置工作,通过预设一套标准的...
Convention插件还支持基于约定的动作链、结果代码的定制化,允许开发者更高效地管理和控制应用流程。 #### JAR文件中的Actions 插件支持从JAR文件中加载Action,这为模块化和组件化开发提供了便利。 #### 自动...
Convention插件的工作原理主要是基于类和方法的命名规则来自动映射URL。例如,如果你有一个名为`UserAction`的类,那么默认情况下,该类将与`/user.action` URL关联。同样,如果类中有一个名为`save`的方法,那么这...
Struts2的Convention插件是一种自动化配置工具,从2.1版本...总的来说,Struts2的Convention插件通过约定优于配置的理念,极大地提高了开发效率,降低了维护成本,使得开发者能够更加专注于业务逻辑而不是框架配置。
从 Struts 2.1 开始,Struts 2 改为使用 Convention 插件来支持零配置。Convention 插件彻底地抛弃了配置信息,不仅不需要使用 struts.xml 文件进行配置,甚至不需要使用 Annotation 进行配置。而是由 Struts 2 根据...
4. **注解增强**:除了基于类和方法名的约定,Convention插件还支持使用注解来进一步定制配置。例如,`@Action`注解可以用于明确指定Action的URL,`@Result`注解可以定义自定义的结果类型和视图。 5. **RESTful支持...
这些配置项分别定义了Action的后缀、是否映射所有URL匹配以及默认的父包名称,从而确保Convention插件能够按照既定规则识别和处理Action。 #### HelloWorld示例解析 让我们通过一个简单的HelloWorld示例,深入了解...
与之前的Codebehind插件不同,Convention插件更加彻底地摆脱了对配置文件的需求,包括struts.xml以及Annotation等传统配置方式,通过约定而非配置的方式自动完成框架的配置工作。 ### Convention 插件特性详解 ###...
`Convetion`插件是Struts2实现零配置的核心工具,它基于“约定优于配置”的原则工作。 ### 1. Convention 插件简介 从Struts2.1版本开始,`Codebehind`插件被`Convetion`插件取代,以提供更全面的零配置支持。`...
Struts2 约定优于配置 Struts2 框架中,有一个非常重要的概念,即...Struts2 的约定优于配置可以通过 Convention 插件来实现 Action 路径到 Result 页面路径的自动映射。这个机制可以减少配置的必要性,提高开发效率。
Struts2 Convention插件是基于Apache Struts2框架的一个组件,它引入了一种约定优于配置(Convention over Configuration)的理念,简化了MVC应用的开发。这个插件在默认情况下可以根据类和方法的名字来自动映射URL...
【Struts2 Convention 插件】 Struts2 Convention 插件是从 ...通过以上介绍,我们可以看到Struts2 Convention插件极大地减少了XML配置,使开发更加便捷。开发者可以专注于业务逻辑,而不用花费大量时间在配置上。
- Convention插件还支持使用Java注解进一步定制Action的行为,如`@Action`、`@Result`等,可以用来覆盖默认的Action映射和结果配置。 6. **动态方法调用** - 如果Action类没有声明任何方法,Convention插件将尝试...
Convention插件的核心思想是“约定优于配置”(Convention over Configuration),它允许开发者通过遵循一定的命名规则来减少或甚至省略XML配置文件。这大大提高了开发效率,因为大部分时候,框架可以自动识别并...
1. **约定优于配置**:Conventions插件默认遵循一套规则,例如Action类通常位于src/main/java目录下的com.example.app.actions包中,类名与URL路径对应,如HelloWorldAction对应/hello-world.action。这样,无需显式...
总的来说,Struts2 Convention插件通过约定优于配置的方式,极大地简化了Struts2应用的开发工作,提高了开发效率,同时也保持了代码的整洁和可维护性。通过合理的命名和注解,开发者可以轻松地创建和管理Action、...
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行...
9. **插件集成**:Struts2的其他插件,如Struts2-dojo-plugin或Struts2-json-plugin,可以无缝地与Convention Plugin一起使用,提供更丰富的功能,如Ajax支持和JSON输出。 10. **调试与日志**:在开发过程中,开启...
首先,要启用Convention插件,你需要在项目的WEB-INF/lib目录下添加struts-Convention-plugin-2.1.6.jar文件。然后,框架会自动扫描特定包下的Java类,寻找符合Action条件的类。这些条件包括实现了`...
**Convention插件的特性与优势:** 1. **自动Action映射**:Convention插件通过类名和方法名自动推断Action和Action方法,无需在struts.xml中手动配置。 2. **零配置**:大部分情况下,只需编写业务逻辑代码,无需...