struts.xml详细说明.doc
Struts2 框架是基于MVC设计模式的一个强大且灵活的Java Web开发框架,它的核心配置文件是`struts.xml`。这个文件用于定义应用程序的行为,包括Action的映射、结果页面的跳转以及拦截器的配置。以下是关于`struts.xml`的详细说明: 1. **文件结构**: `struts.xml`遵循特定的XML结构,它以`<struts>`作为根元素,包含了多个`<package>`元素,每个`<package>`元素代表一个独立的包,可以看作是Action的分组。 2. **Action定义**: 在`<package>`内部,`<action>`元素用于定义Action。例如: ``` <action name="HelloWorld" class="example.HelloWorld"> <result>/example/HelloWorld.jsp</result> </action> ``` 这里,`name`属性指定了Action的名称,`class`属性则指定了Action实现类。`<result>`元素定义了Action执行成功后跳转的视图资源。 3. **Result配置**: 结果(`result`)元素是Action和视图间的桥梁。`name`属性对应Action方法的返回值,`type`属性指定结果类型,如转发、重定向等。如: ``` <result name="input">/example/Login.jsp</result> ``` 当Action的execute方法返回`input`字符串时,会跳转到`/example/Login.jsp`。 4. **动态方法调用**: `<constant>`元素用来设置Struts2的全局常量,如禁用动态方法调用: ``` <constant name="struts.enable.DynamicMethodInvocation" value="false" /> ``` 这会阻止Struts2尝试根据Action名称的部分内容来调用Action方法。 5. **模块化配置**: 为了提高代码的可维护性和可扩展性,Struts2允许将`struts.xml`分解为多个配置文件。使用`<include>`元素可以引入其他配置文件: ``` <include file="example.xml"/> ``` 这样,`struts.xml`可以包含多个子配置文件,实现了配置的模块化。 6. **Package配置**: `package`元素用于组织Action、Interceptor和Result。例如,`namespace`属性定义了Action的命名空间,`extends`属性继承自其他包(如`struts-default`),这样可以重用父包的配置。 7. **拦截器配置**: 在`<package>`内,可以通过`<interceptors>`和`<default-interceptor-ref>`来定义和引用拦截器栈。拦截器可以实现如日志、权限检查等功能。 8. **Action方法选择**: 使用通配符`*`可以在一个Action定义中处理多种请求,如: ``` <action name="Login_*" method="{1}" class="example.Login"> ``` 这里,`Login_*`将匹配所有以`Login_`开头的请求,`{1}`是OGNL表达式,用于获取Action名称中的第二个部分,作为Action方法名。 9. **DevMode**: `<constant name="struts.devMode" value="false" />`设置Struts2的开发模式,当设为`true`时,会开启更多调试信息和错误报告。 通过以上配置,开发者能够灵活地控制Struts2框架的行为,实现不同业务逻辑的分离和管理,同时保持代码的整洁和可维护性。在实际项目中,可以根据需求进行细致的配置,以满足复杂的应用场景。