Struts2 Convention-Plugin:零配置实战与约定规则详解

4星 · 超过85%的资源 需积分: 9 2 下载量 72 浏览量 更新于2024-09-17 收藏 54KB DOC 举报
Struts2框架采用convention-plugin实现了所谓的"零配置"理念,这意味着开发者可以通过较少的配置就能让系统按照预设的规则自动处理大部分工作流程。这种模式依赖于约定优于配置的原则,极大地简化了开发过程中的配置文件编写。 首先,convention-plugin默认将所有结果页面(例如视图或JSP)存储在Web应用的WEB-INF/content目录下。要更改此位置,可以设置`struts.convention.result.path`属性,如例子所示: ```xml <constant name="struts.convention.result.path" value="/WEB-INF/page"/> ``` 这样,所有的结果页面将被查找并定位到指定的路径`/WEB-INF/page`下。 其次,convention-plugin会自动搜索带有`com.opensymphony.xwork2.Action`接口或以`Action`结尾的类所在的包。默认情况下,它会查找`action`, `actions`, `struts`, 和 `struts2`等常见的包。但是,开发者可以通过`struts.convention.package.locators`属性来定制这些包的搜索路径,如: ```xml <constant name="struts.convention.package.locators" value="web,action"/> ``` 这意味着任何路径以`web`或`action`开头的包都将被视为可能包含Action类的路径。 此外,convention-plugin还会识别命名空间,这是基于包路径的一部分,用于组织和分隔不同的功能模块。例如,对于`Com.ustb.web.user.userAction`,命名空间是`/user`;而对于`Com.ustb.web.user.detail.UserAction`,命名空间则是`/user/detail`。 最后,convention-plugin会依据这些约定自动扫描和解析Action类,包括它们的继承关系和实现的接口,从而实现无须显式配置的动态路由。这使得开发人员能够专注于业务逻辑本身,而不是琐碎的配置细节。 总结来说,Struts2的convention-plugin通过一系列的默认行为和约定,极大地减少了开发者的配置工作量,提高了开发效率。然而,理解这些约定并灵活运用仍然是必要的,以便在必要时进行定制或扩展。同时,零配置并不意味着完全不需要配置,而是通过巧妙的设计降低了配置复杂性,使开发更加高效和简洁。