Struts2 Convention插件:零配置实现详解

需积分: 9 2 下载量 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应用的开发变得更加高效。然而,这也要求开发者对这些约定和配置选项有深入的理解,以便正确地利用这一功能。