使用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更佳)
相关推荐
从 Struts 2.1 开始,Struts 2 改为使用 Convention 插件来支持零配置。Convention 插件彻底地抛弃了配置信息,不仅不需要使用 struts.xml 文件进行配置,甚至不需要使用 Annotation 进行配置。而是由 Struts 2 根据...
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行...
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行...
check-file-naming-convention插件 用法 首先,安装gulp-check-file-naming-convention作为开发依赖项: npm install --save-dev gulp-check-file-naming-convention 然后,将其添加到您的gulpfile.js : var ...
从struts2.1版本开始,Convention Plugin作为替换替换Codebehind Plugin来实现Struts2的零配置。 • 包命名习惯来指定Action位置 • 命名习惯制定结果(支持JSP,FreeMarker等)路径 • 类名到URL的约定转换 • 包名...
Hello world到目前为止,你已经在你项目中添加了Convention插件支持,首先我们从一个非常简单的例子开始入手。本例中,我们将演示根据访问URL来访问固定的Action,默认情况下,Convention会默认所
而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定...
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行...
而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定...
采用了最新的struts-convention插件,命名已-隔开,约定优于配置。 action的访问方式:域名:端口/action包名/action名!方法.action 对应action返回的页面:域名:端口/action包名/action名-方法返回值.jsp 2、数据库...
REST简介资源和标识符操作资源的方式Struts2的REST支持RestActionMapper简介为Struts2应用安装REST插件实现支持REST的Action类实现视图层参考资料从V2.1开始,Struts2开始提供Convention插件,它允许根据“约定”来...
测试名称功能验证器(Flake8插件) 的扩展,以确保测试函数名称遵循给定的约定 Flake8的插件当同时安装了Flake8和flake8-test-name ,该插件将在显示flake8的版本时显示: $ flake8 --version3.6.0 (flake8-test-...
1) 利用Struts2的struts2-convention-plugin插件,实现URL →Action、Result→JSP的自动映射。 2) 利用Struts2的struts2-spring-plugin插件,实现在Action中自动注入service对象。 3) 利用Spring的@Service、@...
React中没有任何本机工具(或JSX,甚至HTML和CSS)来编写与BEM相关的代码。 因此,开发人员通常使用条件编写CSS类: export default class Block extends Component { render ( ) { const classes = [ 'block' ] ; ...
约定优于配置(Convention Over Configuration) 1.3. 一个一般的接口 1.4. 基于Maven插件的全局性重用 1.5. 一个“项目”的概念模型 1.6. Maven是Ant的另一种选择么? 1.7. 比较Maven和Ant 1.8. 总结 2. ...
服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: ![API网关]...