Struts2的xml配置文件怎么写 Struts.xml核心配置文件详解

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

Struts2 的 struts.xml 是框架的核心配置文件,用于定义 Action 映射、拦截器、结果类型、包结构等关键行为。它不是必须手写全部内容(可被注解或 Java 配置替代),但在多数传统项目中仍是主流配置方式。

基本结构与根元素

struts.xml 必须放在类路径根目录(如 src/main/resourcesWEB-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,推荐按功能命名(如 useradmin
  • extends 指定父包,复用其拦截器栈、全局结果、默认类等;struts-default 是所有自定义包的基础
  • 可定义 ,作用于该包下所有 Action
  • 子包可覆盖父包同名配置(如重定义某个 result),但不能跨包引用未声明的拦截器

常见内置配置项说明

除 Action 外,struts.xml 还常配置以下内容:

  • :开启开发模式,热加载配置、详细错误页
  • :拆分配置,便于团队协作维护
  • 块内可定义自定义拦截器或拦截器栈,供 action 引用
  • :当请求路径无匹配 action 时,转发到指定 action

基本上就这些。写 struts.xml 的关键是理解 package 的继承与作用域、Action 名称与 URL 的映射规则、以及结果视图的解析逻辑。不复杂但容易忽略继承链和路径后缀设置,建议搭配 struts.devMode=true 实时验证效果。