struts.xml是Struts2框架运行的核心配置文件,所有请求的分发规则、Action的映射关系、结果页面的跳转逻辑都需要在这个文件中定义。合理的配置能够保证框架按照预期处理用户请求,减少运行时错误。
struts.xml的基础结构
一个标准的struts.xml文件需要遵循Struts2的DTD约束,基础结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 配置常量 -->
<constant name="struts.devMode" value="true"/>
<!-- 配置包 -->
<package name="default" extends="struts-default" namespace="/">
<!-- Action配置放在这里 -->
</package>
</struts>
核心配置项详解
1. 常量配置
通过<constant>标签可以修改Struts2框架的默认行为,常用的常量配置如下:
- struts.devMode:开发模式开关,设置为true时会在页面显示详细错误信息,方便调试
- struts.i18n.encoding:设置请求和响应的编码,通常设置为UTF-8避免中文乱码
- struts.action.extension:指定Action请求的后缀,默认是action,可以修改为其他值
2. 包配置
<package>标签用于管理一组相关的Action配置,主要属性说明:
| 属性名 | 作用 | 是否必填 |
|---|---|---|
| name | 包的唯一标识,其他包可以通过该名称继承当前包 | 是 |
| extends | 指定当前包继承的父包,通常继承struts-default获取默认拦截器栈 | 是 |
| namespace | 包的命名空间,用于区分不同包下同名的Action | 否 |
3. Action配置
Action是Struts2中处理请求的核心组件,配置示例如下:
<package name="user" extends="struts-default" namespace="/user">
<!-- 配置用户相关的Action -->
<action name="login" class="com.example.action.UserAction" method="login">
<!-- 结果映射 -->
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
上述配置表示当用户访问/user/login.action请求时,会调用com.example.action.UserAction类的login方法,方法返回success则跳转到success.jsp,返回error则跳转到error.jsp。
完整配置实例
下面是一个包含常量、包、Action、拦截器配置的完整struts.xml示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 开发模式开启 -->
<constant name="struts.devMode" value="true"/>
<!-- 设置编码 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 修改请求后缀为do -->
<constant name="struts.action.extension" value="do"/>
<package name="default" extends="struts-default" namespace="/">
<!-- 默认Action,当请求找不到对应Action时执行 -->
<default-action-ref name="index"/>
<action name="index" class="com.example.action.IndexAction">
<result name="success">/index.jsp</result>
</action>
<action name="user_*" class="com.example.action.UserAction" method="{1}">
<result name="list">/user/list.jsp</result>
<result name="add">/user/add.jsp</result>
<result name="input">/user/input.jsp</result>
</action>
</package>
</struts>
上述配置中使用了通配符*,user_*可以匹配所有以user_开头的请求,{1}表示取第一个通配符的值作为方法名,比如请求/user_list.do会调用UserAction的list方法。
配置注意事项
- struts.xml文件必须放在项目的
src/main/resources目录下,或者编译后的classes根目录下,框架才能自动加载 - package的namespace要以
/开头,避免请求映射错误 - Action的class属性需要填写全类名,确保框架能够找到对应的Action类
- 修改struts.xml后不需要重启服务器,Struts2会自动重新加载配置文件(开发模式下)
- 如果配置多个package,要注意包之间的继承关系,避免配置冲突
配置struts.xml时需要严格遵循DTD约束,标签的属性值要符合规范,否则框架启动时会抛出配置文件解析异常,需要根据错误提示逐步排查问题。
struts.xmlStruts2配置文件action配置修改时间:2026-07-23 20:16:00