首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Struts2 動態方法調用(DMI):透過表單 Action 屬性切換業務邏輯

     編輯:Java 綜合教學

Struts2 動態方法調用(DMI)詳解

在 Struts2 中,動態方法調用(Dynamic Method Invocation,DMI)允許一個 Action 類包含多個業務處理方法,根據用戶操作動態決定調用哪個方法。本文重點演示「修改表單 action 屬性」這一實現方式。

一、核心概念

同一個表單包含多個提交按鈕(如「登錄」與「註冊」),通過 JavaScript 動態修改 <form> 的 action 屬性,將請求路由到同一 Action 類的不同方法。

二、完整示例

1. 頁面展示

登錄註冊表單

2. 關鍵 JSP 代碼 (index.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
    <script src="js/jquery-1.7.2.js"></script>
    <script type="text/javascript">
        $(function(){
            $("input:eq(3)").click(function(){ // 註冊按鈕
                $("#form").attr("action","userCreate");
            });
        });
    </script>
</head>
<body>
    <form action="userLogin" method="post" id="form">
        姓名:<input type="text" name="name" /><br><br>
        密碼:<input type="password" name="password" /><br><br>
        <input type="submit" value="登錄">
        <input type="submit" value="註冊">
    </form>
</body>
</html>

3. Struts 配置 (struts.xml)

<struts>
    <package name="myP" extends="struts-default">
        <action name="in" class="action.Action" method="go">
            <result name="login">WEB-INF/jsp/index.jsp</result>
        </action>
        <action name="userLogin" class="action.Action" method="test">
            <result name="userLogin">WEB-INF/jsp/userLogin.jsp</result>
        </action>
        <action name="userCreate" class="action.Action" method="create">
            <result name="userCreate">WEB-INF/jsp/userCreate.jsp</result>
        </action>
    </package>
</struts>

4. Action 處理類

package action;
import com.opensymphony.xwork2.ActionSupport;

public class Action extends ActionSupport {
    private String name;
    private String password;
    // getter/setter 省略

    public String go() { System.out.println("去登錄註冊頁面!!"); return "login"; }
    public String test() { System.out.println("用戶登錄"); return "userLogin"; }
    public String create() { System.out.println("用戶註冊"); return "userCreate"; }
}

三、總結

此方式通過前端腳本動態切換 action,後端配置多個 <action> 映射不同方法,實現了單表單多業務處理。實戰中需補全業務校驗邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved