Struts2约定

本文介绍Struts2中的Convention插件,探讨如何利用该插件实现零配置目标,包括Action和Result的约定、Action链约定及自动重加载映射等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



Struts2引入Convention(约定)插件支持零配置。约定优于配置

一、约定Action

1.安装Convention插件

Struts2项目下的struts-convention-plugin-2.2.1.jar文件复制到Struts2应用的WEB-INF\lib路径下即可,会搜索位于actionactionsstrutsstruts2包下的所有Java类,

Convention插件会把如下两种Java类当成Action 处理:

(1)所有实现了com.opensymphony.xwork2.ActionJava类。

(2)所有类名以Action结尾的Java

Struts2Convention插件还允许设置如下三个常量:

(1)struts.convention.exclude.packages:指定不扫描哪些包下的Java

(2)struts.convention.package.locatorsConvention插件使用该常量指定的包作为搜索Action根包。对于actions.lee.LoginAction类,按约定原本映射到/lee/login;如果将该常量设置为lee,则该Action将会映射到/login

(3) struts.convention.action.packagesConvention插件以该常量指定包作为根包来搜索Action。会搜索位于actionactionsstrutsstruts2包以及该常量定义的包下的所有Java类。

ActionURL映射

         (1)如果该Action类名包含Action后缀,将该Action类名的Action后缀去掉。否则不做任何处理。如org.actions.LoginAction映射到/login.action

         (2)Action类名的驼峰写法转成中划线写法,如org.actions.books.GetBooks映射到/books/get-books.action

二、约定Result

         Action处理用户请求之后会返回一个字符串作为逻辑视图,该逻辑视图必须映射到实际的物理视图才有意义。Convention默认也为作为逻辑视图和物理视图之间的映射提供了约定。

         下图是Convention支持的一些映射实例:

三、Action链的约定

如果希望一个Action处理结束后不是进入视图页面,而是进行另一个Action形成Action链,则通过Convention插件只需遵守如下三个约定即可:

(1)第一个Action返回的逻辑视图字符串没有对应的视图资源

(2)第二个Action与第一个Action处于同一个包下

(3)第二个Action映射的URL为:firstactionName+ resultcode

四、自动重加载映射

配置Struts2的两个常量(web.xmlstruts.xmlstruts.properties都可进行配置):

<!-- 配置Struts2应用处于开发模式 -->

<constant name=”struts.devMode” value=”true”/>

<!-- 配置Convention插件自动重加载映射 -->

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

五、Convention插件相关Annotation

Struts2Convention插件主要集中在管理ActionResult映射之上,而Struts2的配置文件除了管理ActionResult之外,还需要管理拦截器、异常处理等相关信息,Convention使用Annotation来管理这些配置。除此之外,Convention还允许使用Annotation管理ActionResult的配置,从而覆盖Convention约定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值