### Struts2注解使用详解 #### 一、Struts2框架概述 Struts2是一个基于MVC设计模式的开源Web应用框架,它为Java Web应用程序提供了一个强大的基础架构。Struts2支持多种开发方式,其中包括传统的XML配置、代码后面(CodeBehind)以及自2.1版本开始引入的约定(Convention)插件。 #### 二、Convention插件介绍 自Struts2.1版本开始,框架推荐使用Convention插件来支持零配置理念,这一改变使得开发者可以更加专注于业务逻辑而不是繁琐的配置工作。 #### 三、Convention插件的基本使用 要启用Convention插件,首先需要确保项目中包含了`struts-convention-plugin-2.1.6.jar`文件,并将其放置于`WEB-INF/lib`目录下。Convention插件会自动扫描特定包下的Java类,并将符合条件的类注册为Action。 ##### 扫描范围 Convention插件默认会搜索位于`action`、`actions`、`struts`、`struts2`包下的所有Java类。具体来说: - 实现了`com.opensymphony.xwork2.Action`接口的Java类。 - 类名以`Action`结尾的Java类。 ##### 常量设置 此外,Convention插件还支持通过以下常量来进一步定制扫描行为: 1. **`struts.convention.exclude.packages`**:指定不扫描哪些包下的Java类,位于这些包结构下的Java类将不会自动映射成Action。 2. **`struts.convention.package.locators`**:Convention插件使用该常量指定的包作为搜寻Action的根包。例如,对于`actions.fore.LoginAction`类,按约定原本应映射到`/fore/login`;如果将该常量设为`fore`,则该Action将会映射到`/login`。 3. **`struts.convention.action.packages`**:Convention插件以该常量指定包作为根包来搜索Action类。除了扫描`action`、`actions`、`struts`、`struts2`四个包的类以外,还会扫描该常量指定的一个或多个包。 #### 四、Action的命名规则 当Convention插件扫描并识别出Action类后,它会按照以下规则映射Action名称: 1. 如果Action类名包含`Action`后缀,则去除后缀。 2. 将Action类名的驼峰式命名转换为短横线分隔的形式,即所有字母变为小写,单词与单词之间用短横线分隔。 例如: - `LoginAction`映射为`login` - `GetBooks`映射为`get-books` - `AddEmployeeAction`映射为`add-employee` #### 五、视图资源定位 默认情况下,Convention插件会在项目的`WEB-INF/content`路径下定位物理资源。资源定位规则如下: - 使用`ActionURL + ResultCode + Suffix`格式定位视图资源。 - 如果找不到匹配的视图资源,Convention插件会尝试使用`ActionURL + Suffix`作为备选视图资源。 示例:假设`actions.fore.LoginAction`返回`success`字符串,Convention插件首先会查找`WEB-INF/content/fore/login-success.jsp`文件。如果未找到该文件,则会尝试使用`login.jsp`。 #### 六、使用Config Browser插件查看配置 为了方便开发者了解Struts2应用中的各种资源映射情况,可以使用Config Browser插件。该插件需将`struts2-config-browser-plugin-2.1.6.jar`文件添加至项目的`WEB-INF/lib`目录中。访问`http://localhost:8080/应用名字/config-browser/actionNames.action`可以查看Config Browser插件首页,从而查看到应用内Action等资源的映射情况。 #### 七、总结 Struts2框架通过引入Convention插件大大简化了开发过程中的配置工作,使得开发者能够更加专注于业务逻辑的实现。通过合理设置相关的常量,可以灵活地控制框架的行为,提高开发效率和维护性。
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 1731260448754.jpeg
- 博图 博途1s保护解除DLL Siemens.Automation.AdvancedProtection.dll
- 基于Java和Shell语言的csj_21_08_20_task1设计源码分享
- 基于Typescript和Python的MNIST卷积神经网络模型加载与预测浏览器端设计源码
- 基于Python的RasaTalk语音对话语义分析系统源码
- 基于Vue框架的租车平台前端设计源码
- 基于Java和C/C++的浙江高速反扫优惠券码830主板设计源码
- 基于Java的一站式退休服务项目源码设计
- 基于Java语言实现的鼎鸿餐厅管理系统设计源码
- 基于Java的iText扩展库:简化PDF创建与中文字体应用设计源码