struts.xml 是 Struts2 的核心配置文件,位于类路径根目录,以 为根节点,通过 分组、 映射请求与处理类、 定义视图跳转,并支持常量配置、配置拆分及拦截器定义。

Struts2 的 struts.xml 是框架的核心配置文件,用于定义 Action 映射、拦截器、结果类型、包结构等关键行为。它不是必须手写全部内容(可被注解或 Java 配置替代),但在多数传统项目中仍是主流配置方式。
基本结构与根元素
struts.xml 必须放在类路径根目录(如 src/main/resources 或 WEB-INF/classes),且以 为根节点。最简合法结构如下:
-
:顶层容器,可包含多个 -
:逻辑分组单位,必须继承 struts-default(提供默认拦截器、结果类型等) -
:定义请求路径与 Action 类的映射 -
:指定返回逻辑视图名对应的实际资源路径/success.jsp
Action 配置要点
Action 是处理请求的核心类,默认调用 execute() 方法,返回字符串决定跳转结果。配置时注意:
- name 属性即 URL 路径后缀(如
login对应/login.action或/login,取决于后缀配置) - class 属性需是完整类名;若省略,框架使用默认的
ActionSupport - 可配置
向 Action 注入属性值(要求 Action 有对应 setter) - 支持通配符映射,例如
name="user_*"+class="com.example.User{1}Action",访问/user_save.action自动调用UserSaveAction
包(package)与继承关系
package 不是 Java 包,而是 Struts2 的配置命名空间,用于模块化管理:
- 每个 package 应有唯一 name,推荐按功能命名(如
user、admin) - extends 指定父包,复用其拦截器栈、全局结果、默认类等;
struts-default是所有自定义包的基础 - 可定义
和,作用于该包下所有 Action - 子包可覆盖父包同名配置(如重定义某个 result),但不能跨包引用未声明的拦截器
常见内置配置项说明
除 Action 外,struts.xml 还常配置以下内容:
-
:开启开发模式,热加载配置、详细错误页 -
:拆分配置,便于团队协作维护 -
块内可定义自定义拦截器或拦截器栈,供 action 引用 -
:当请求路径无匹配 action 时,转发到指定 action
基本上就这些。写 struts.xml 的关键是理解 package 的继承与作用域、Action 名称与 URL 的映射规则、以及结果视图的解析逻辑。不复杂但容易忽略继承链和路径后缀设置,建议搭配 struts.devMode=true 实时验证效果。










