Struts2零配置实践:使用convention-plugin

需积分: 10 6 下载量 91 浏览量 更新于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插件至关重要。