Struts2 Convention插件详解与使用
需积分: 9 115 浏览量
更新于2024-09-18
收藏 51KB DOC 举报
"struts2注解使用和Convention插件配置"
Struts2是一个流行的Java Web框架,它提供了多种方式来配置Action,其中一种是通过注解(Annotation)。自Struts2.1版本起,框架引入了Convention插件,旨在实现零配置或者最少配置的开发模式。本篇文章将详细介绍Struts2的注解使用以及Convention插件的配置方法。
Struts2注解使用
Struts2的注解使得开发者可以更加灵活地定义Action的行为,而无需在XML配置文件中进行繁琐的设置。例如,`@Action`注解是用于标记一个类或者方法作为处理特定HTTP请求的Action。这个注解可以包含多个属性,如`value`(指定Action的名称)、`results`(定义结果映射)等,以控制Action的执行逻辑。
```java
import com.opensymphony.xwork2.Action;
@Action(value = "myAction")
public class MyAction implements Action {
// ...
}
```
Convention插件
Convention插件是Struts2为了简化配置而引入的一种机制,它基于类名、包名等约定,自动推断并配置Action。使用Convention插件,开发者可以避免编写struts.xml配置文件,提高开发效率。
如何启用和配置Convention插件
1. 添加依赖:首先,需要将`struts-Convention-plugin`的JAR文件添加到项目的`WEB-INF/lib`目录下。
2. 约定的类路径:Convention插件会自动扫描`action`, `actions`, `struts`, 和 `struts2`包下的类,寻找Action。如果类实现了`com.opensymphony.xwork2.Action`接口,或者类名以`Action`结尾,那么它将被视为Action。
3. 配置排除包:通过设置系统属性`struts.Convention.exclude.packages`,可以指定不扫描的包。例如,如果你不想让Convention处理`com.example.excluded`包下的类,可以在web.xml中添加以下配置:
```xml
<context-param>
<param-name>struts.Convention.exclude.packages</param-name>
<param-value>com.example.excluded</param-value>
</context-param>
```
4. 自定义包定位器:`struts.convention.package.locators`用于定义搜索Action的根包。默认情况下,Action的命名空间是类所在的包名。例如,如果设置为`fore`,则`actions.fore.LoginAction`会被映射到`/login`。
5. 自定义Action包:`struts.convention.action.packages`允许指定额外的包,让Convention插件去搜索Action。这样可以进一步扩展Action的搜索范围。
命名空间的映射规则
- 类名以`Action`结尾的,命名空间默认为去掉`Action`后的包名,例如`com.fun.action.MyAction`会映射到`/fun/myAction`。
- 如果设置了`struts.convention.package.locators`,Action的命名空间会根据指定的包名调整。
在实际开发中,开发者需要注意`struts.convention.package.locators`和`struts.convention.action.packages`这两个配置项的微妙区别,以免引起不必要的混淆。
总结来说,Struts2的注解和Convention插件为开发者提供了更简洁、高效的开发方式。通过合理利用注解和配置,可以极大地减少配置文件的工作量,使代码更加清晰,项目更加易于维护。
2014-01-10 上传
2013-01-07 上传
2013-11-09 上传
2014-04-25 上传
2013-12-07 上传
2015-09-18 上传
2015-08-26 上传
2010-10-29 上传
2012-04-16 上传
hoho9527
- 粉丝: 0
- 资源: 4
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程