Struts2 Convention插件:零配置实现详解
需积分: 9 26 浏览量
更新于2024-09-17
收藏 51KB DOC 举报
"struts零配置,使用Convention插件实现自动配置"
Struts框架是一个流行的Java Web应用程序开发框架,主要用于构建MVC(Model-View-Controller)架构的应用。在传统的Struts2配置中,开发者需要手动编写XML配置文件(如struts.xml)来定义Action、结果类型、拦截器等。然而,从Struts2.1版本开始,引入了"零配置"的概念,即通过 Convention 插件来减少或完全避免XML配置。
Convention 插件是Struts2的一个扩展,它的目标是根据一定的约定自动配置Action类和相关的映射。这大大简化了项目配置,提高了开发效率,使得开发者可以更加专注于业务逻辑而不是配置细节。
**使用Convention插件**
要使用Convention插件,首先需要将`struts-Convention-plugin-2.1.6.jar`添加到项目的`WEB-INF/lib`目录下。然后,Convention插件会自动执行以下操作:
1. **自动扫描Action类** - 它会查找位于`action`, `actions`, `struts`, `struts2`包下的所有Java类。如果一个类实现了`com.opensymphony.xwork2.Action`接口,或者类名以`Action`结尾,那么这个类就会被视为一个Action。
2. **配置Action映射** - 默认情况下,类名会被用作Action的名称,包名会转换为命名空间。例如,`actions.fore.LoginAction`会被映射到`/fore/login`。
3. **自定义配置** - 开发者可以通过设置系统属性或在`struts.properties`文件中定义以下常量来调整行为:
- `struts.Convention.exclude.packages`: 用于指定不想被扫描的包,这些包下的类将不会被映射为Action。
- `struts.convention.package.locators`: 指定搜索Action的根包,可以改变默认的包定位规则。
- `struts.convention.action.packages`: 添加额外的包,让Convention插件在默认包之外继续搜索Action类。
**注意事项**
理解并合理使用`struts.convention.package.locators`和`struts.convention.action.packages`这两个常量至关重要。它们可以改变Action的命名空间和扫描范围,但过度使用或错误配置可能会导致意料之外的结果。例如,修改`struts.convention.package.locators`会影响到Action的默认命名空间,而`struts.convention.action.packages`则可以扩展扫描的包列表。
在实际应用中,例如Action类位于`com.fun.action`包下,如果不做任何配置,那么按照默认约定,这个Action的命名空间将会是`com/fun/action`。开发者可以根据需求调整这些常量,以满足特定的项目结构和路由规则。
Struts2的零配置特性通过Convention插件为开发者提供了更简洁、更灵活的配置方式,减少了XML配置的工作量,让Web应用的开发变得更加高效。然而,这也要求开发者对这些约定和配置选项有深入的理解,以便正确地利用这一功能。
2014-03-21 上传
2019-04-17 上传
2017-05-03 上传
2014-01-14 上传
2013-06-14 上传
2012-09-06 上传
2011-11-13 上传
2019-03-21 上传
2019-04-10 上传
jfzshandong
- 粉丝: 1
- 资源: 29
最新资源
- 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应用
- 东南大学网络空间安全学院复试代码解析