Struts2.0配置详解:struts.xml与package、namespace及拦截器

3星 · 超过75%的资源 需积分: 10 22 下载量 85 浏览量 更新于2024-09-15 收藏 14KB DOCX 举报
"这篇文档详细解释了Struts2.0框架中的struts.xml配置文件,包括`include`节点和`package`节点的使用方法。`include`节点用于组件化,可以将不同功能模块的配置分别存储在独立的XML文件中,并通过引用整合。而`package`节点则用于组织Action,形成模块,它可以通过`extends`属性继承其他package,并通过`namespace`定义URL路径。此外,还展示了如何配置拦截器和拦截器栈。" 在Struts2框架中,`struts.xml`配置文件是核心配置文件,负责定义应用的行为和结构。文件的开头通常会包含DTD(Document Type Definition)声明,确保XML文档遵循正确的结构。例如: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> ``` `<struts>`元素是整个配置的根元素,它包含了所有其他配置元素。 1. `include`节点:它是实现组件化配置的关键。通过`<include file="...">`可以引入其他的XML配置文件,这样可以让配置文件更易于管理和维护。例如,引入`struts-default.xml`来获取默认的配置,这样开发者就不需要重复定义已经存在的默认行为。 2. `package`节点:用于组织多个Action,创建模块化的结构。每个`package`都具有唯一的名称,可以有选择地扩展其他`package`。`package`的属性包括: - `name`:标识包的唯一名称。 - `extends`:指定要继承的父`package`,继承后会合并父`package`的配置。 - `abstract`:如果设为`true`,表示这是一个抽象`package`,不能直接定义Action,通常用于提供通用配置。 - `namespace`:定义Action的命名空间,影响URL路径。例如,`/test`命名空间会导致Action URL为`http://localhost:8080/struts2/test/XX.action`。 3. `interceptors`和`interceptor-stack`:这两部分是配置拦截器的关键。`<interceptor>`用于定义单个拦截器,如: ```xml <interceptor name="timer" class="com.kay.timer"></interceptor> <interceptor name="logger" class="com.kay.logger"></interceptor> ``` 而`<interceptor-stack>`定义了一个拦截器栈,可以包含多个`interceptor-ref`,它们按照声明的顺序执行: ```xml <interceptor-stack name="mystack"> <interceptor-ref name="timer"></interceptor-ref> <interceptor-ref name="logger"></interceptor-ref> </interceptor-stack> ``` 4. Action配置:`package`内还可以定义具体的Action,指定Action的类、结果和其他配置。例如: ```xml <action name="login" class="com.kay.struts2.LoginAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> ``` 这里定义了一个名为`login`的Action,使用`LoginAction`类处理请求,根据返回的结果名(`success`或`error`)转发到对应的JSP页面。 通过理解并熟练运用这些配置,开发者可以灵活地构建Struts2应用程序,实现各种复杂的业务逻辑和控制流程。