在Struts框架中如何配置Action类处理请求? – Struts配置教程
- 虚拟主机
- 2026-02-11
- 4084
在 Struts 框架中,配置文件(通常是 struts.xml 或 struts-config.xml)用于定义 Action 及其映射关系,以下是不同版本 Struts 的配置详解:
Struts 1.x 配置(struts-config.xml)
<struts-config> <!-- 1. 定义ActionForm Bean --> <form-beans> <form-bean name="loginForm" <!-- 表单唯一标识符 --> type="com.example.LoginForm"/> <!-- 对应Java类 --> </form-beans> <!-- 2. 配置Action映射 --> <action-mappings> <action path="/login" <!-- 请求URL路径(如 /login.do) --> type="com.example.LoginAction" <!-- Action类 --> name="loginForm" <!-- 关联的ActionForm名称 --> scope="request" <!-- 作用域:request/session --> validate="true" <!-- 是否执行表单验证 --> input="/login.jsp" <!-- 验证失败返回的页面 --> > <!-- 结果转发 --> <forward name="success" <!-- Action返回的逻辑视图名 --> path="/welcome.jsp"/> <forward name="error" path="/error.jsp"/> </action> </action-mappings> </struts-config>
Struts 2.x 配置(struts.xml)
<struts> <!-- 1. 定义包(Package) --> <package name="default" namespace="/" extends="struts-default"> <!-- 必须继承struts-default --> <!-- 2. 配置Action --> <action name="login" <!-- 请求名(如 /login.action) --> class="com.example.LoginAction" <!-- Action类 --> method="execute"> <!-- 调用的方法(默认execute) --> <!-- 3. 结果映射 --> <result name="success" type="dispatcher"> /welcome.jsp <!-- 默认转发类型 --> </result> <result name="error">/error.jsp</result> </action> </package> </struts>
核心配置详解
Struts 1.x 关键元素
- <form-bean>:定义表单数据模型(需继承 ActionForm)。
- <action> 属性:
- path:客户端请求的路径。
- type:处理请求的 Action 类。
- name:关联的 ActionForm。
- input:表单验证失败时跳转的页面。
- <forward>:定义逻辑视图到物理资源的映射。
Struts 2.x 关键元素
- <package>:组织 Action 的容器(必须继承 struts-default)。
- <action> 属性:
- name:请求的 URL 名称(如 login.action)。
- class:处理请求的 POJO 类(无需继承任何类)。
- method:指定调用的方法(默认为 execute)。
- <result>:定义执行结果对应的视图资源。
- 支持多种结果类型:dispatcher(转发)、redirect(重定向)、json 等。
动态方法调用(Struts 2.x)
<!-- 通过URL参数指定方法:/user!save.action --> <action name="user" class="com.example.UserAction"> <result name="success">/result.jsp</result> </action>
或使用通配符:


<action name="*User" class="com.example.UserAction" method="{1}"> <result name="success">/{1}Result.jsp</result> </action>
- 请求 /saveUser.action 会调用 UserAction.save() 方法。
注解配置(Struts 2.x 简化版)
@Namespace("/") @Result(name="success", location="/welcome.jsp") public class LoginAction extends ActionSupport { @Action("login") // 映射路径:/login.action public String execute() { return SUCCESS; } }
需添加 struts2-convention-plugin 依赖支持注解。
最佳实践
- 命名规范:
- Struts 1.x:Action 类名以 Action 如 LoginAction)。
- Struts 2.x:Action 可以是任意 POJO。
- 安全限制:
- 在 struts.xml 中关闭动态方法调用(安全风险): <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
- 模块化配置:
- 拆分多个配置文件: <include file="struts-user.xml"/> <include file="struts-admin.xml"/>
示例:Struts 2.x 完整配置
<struts> <!-- 开发模式(输出详细错误) --> <constant name="struts.devMode" value="true"/> <package name="user" extends="struts-default" namespace="/user"> <action name="list" class="com.example.UserAction" method="list"> <result type="json"> <!-- 返回JSON数据 --> <param name="root">userList</param> </result> </action> <action name="save" class="com.example.UserAction" method="save"> <result name="success" type="redirectAction"> <param name="actionName">list</param> <!-- 重定向到list --> </result> </action> </package> </struts>
通过以上配置,Struts 框架能清晰管理请求与业务逻辑的映射关系,根据项目需求选择合适的配置方式(XML/注解),并注意版本差异。
