当前位置:首页 > 虚拟主机 > 正文

在Struts框架中如何配置Action类处理请求? – Struts配置教程

在 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>

或使用通配符:

在Struts框架中如何配置Action类处理请求? – Struts配置教程 第1张

在Struts框架中如何配置Action类处理请求? – Struts配置教程 第2张

<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 依赖支持注解。


最佳实践

  1. 命名规范
    • Struts 1.x:Action 类名以 Action 如 LoginAction)。
    • Struts 2.x:Action 可以是任意 POJO。
  2. 安全限制
    • 在 struts.xml 中关闭动态方法调用(安全风险): <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
  3. 模块化配置
    • 拆分多个配置文件: <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/注解),并注意版本差异。

在Struts框架中如何配置Action类处理请求? – Struts配置教程 第3张

0