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

Struts2 動態方法調用進階:使用通配符簡化 Action 配置

     編輯:Java 綜合教學

Struts2 通配符映射實現 DMI

延續上篇「修改 form action」方式,本文介紹 Struts2 通配符機制,通過單一 <action> 配置替代多個重複定義,進一步消除冗余。

一、通配符核心語法

  • name="*" 匹配任意 action 名稱。
  • method="{1}" 將第一個通配符捕獲的值作為方法名。
  • 支持 *-*、Book_* 等複雜模式,亦可在 class、result 中引用 {1}、{2}。

二、完整示例

1. JSP 頁面 (index.jsp)

<form action="Login" 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>
<script>
    $("input:eq(3)").click(function(){
        $("#form").attr("action","Create"); // 註冊按鈕點擊時修改 action
    });
</script>

2. Struts 配置 (struts.xml)

<struts>
    <package name="myP" extends="struts-default">
        <action name="*" class="action.Action" method="{1}">
            <result name="userLogin">WEB-INF/jsp/userLogin.jsp</result>
            <result name="userCreate">WEB-INF/jsp/userCreate.jsp</result>
        </action>
    </package>
</struts>

解析: 用戶點擊「登錄」提交 action="Login",通配符 * 匹配 "Login",method="{1}" 解析為 "Login",調用 Action 的 Login() 方法;同理「註冊」調用 Create()。

3. Action 類

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

public class Action extends ActionSupport {
    private String name;
    // getter/setter 省略
    public String Login() { System.out.println("用戶登錄"); return "userLogin"; }
    public String Create() { System.out.println("用戶註冊"); return "userCreate"; }
}

三、通配符進階用法

<!-- 通用 action,直接轉發到同名 JSP -->
<action name="*">
    <result>/WEB-INF/jsp/{1}.jsp</result>
</action>

請求 a.action → 跳轉 a.jsp;請求 b.action → 跳轉 b.jsp,無需編寫任何 Java 代碼。

四、總結

通配符映射大幅減少 struts.xml 體積,配合動態方法調用,實現「一個 Action 類處理多業務、一個配置項覆蓋多路徑」的極簡開發模式。

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