Struts2零配置实践:使用convention-plugin
需积分: 10 166 浏览量
更新于2024-09-25
收藏 28KB DOCX 举报
"struts2采用convention-plugin实现零配置"
Struts2的Convention插件是其新特性之一,旨在简化开发流程,通过约定优于配置的原则,减少甚至避免传统的XML配置文件。这一变化使得开发者不再需要在每个Action类上手动编写对应的配置项,而是通过预设的规则自动匹配Action和视图。
1. 结果页面路径
默认情况下,所有结果页面(Result Pages)存放于`WEB-INF/content`目录下。开发者可以通过设置`struts.convention.result.path`属性来自定义结果页面的路径。例如,若要将结果页面路径改为`WEB-INF/page`,可以在配置文件中添加如下行:
```xml
<constant name="struts.convention.result.path" value="/WEB-INF/page"/>
```
2. Action搜索路径
Convention插件会自动搜索包含`action`、`actions`、`struts`或`struts2`的包路径来查找Action类。如果想更改这个行为,可以使用`struts.convention.package.locators`属性。比如,设定只有包含`web`和`action`的包路径被视为Action存在,配置如下:
```xml
<constant name="struts.convention.package.locators" value="web,action"/>
```
这样,`com.ustb.web.*/com.ustb.action.*`这样的包路径就会被识别为包含Action类的路径。
3. Action命名和映射
Convention插件基于类名来决定Action的名称。通常,类名为`HelloWorldAction`的Action,其默认的Action名称为`hello-world`。可以通过`struts.convention.default.action.name`属性进行调整。此外,Action方法默认与HTTP请求方法(GET、POST等)匹配,但也可以通过注解来指定特定方法处理特定请求。
4. 结果类型和视图解析
结果类型(Result Type)通常是`dispatcher`,用于转发到JSP或其他资源。默认视图解析是基于Action名称,如`hello-world`Action的默认结果页面是`hello-world.jsp`或`hello-world.ftl`。可以使用注解`@Result`来覆盖默认设置。
5. 拦截器栈
Convention插件会自动应用默认的拦截器栈,但可以通过注解或配置文件来添加或调整拦截器顺序。
6. 异常处理
对于未捕获的异常,Conventions插件提供了默认的错误页面处理。开发者可以通过`struts.convention.action.mapAllActions`属性控制是否将所有Action映射到异常处理。
7. 注解增强
Convention插件支持使用注解来进一步定制Action的行为,例如`@ParentPackage`定义Action的父包,`@Namespace`指定命名空间,`@Result`定义结果,`@Action`定义Action的详细属性等。
通过以上这些约定,Struts2 Convention插件极大地简化了开发流程,减少了XML配置文件的维护工作,提高了开发效率。然而,虽然减少了配置,但并不意味着完全没有配置。在某些复杂场景下,开发者仍可能需要自定义配置来满足特定需求。因此,理解并熟练掌握这些约定,对于充分利用Struts2 Convention插件至关重要。
2015-05-28 上传
2019-03-17 上传
2010-05-25 上传
102 浏览量
2018-05-21 上传
我嘞个去
- 粉丝: 111
- 资源: 8
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析