struts2支援多模組多配置檔案開發。下面是一個僅包含兩個模組的示範程式,包括財務、倉庫模組。它們都有一個“caiwu“的Action,在各自的名稱空間下;還有一個從財務轉向到倉庫的Action。
1. 建立模組的控制層
財務模組:
package com.clzhang.ssh.demo3; // 財務類 public class CaiwuAction { public String execute() { System.out.println("執行了財務統計模組"); return "toCaiwu"; } }
倉庫模組:
package com.clzhang.ssh.demo3; // 倉庫類 public class CangkuAction { //屬性id的作用是在重定向的過程中傳遞引數 private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } public String execute() { System.out.println("執行了倉庫模組,傳進來的id=" + id); return "toCangku"; } }
從財務模組轉向到倉庫模組(帶引數):
package com.clzhang.ssh.demo3; // 不同模組之間的重定向操作 public class FromCaiwu2CangkuAction { //屬性id的作用是在重定向的過程中傳遞引數 private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } public String execute() { id = 999; System.out.println("從財務模組中的財務轉到了倉庫中的財務"); return "gotoCangku"; } }
2. 建立配置檔案
財務模組配置檔案caiwu.xml(其中包含一個可以從財務模組轉向到倉庫模組的配置):
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="caiwu" extends="struts-default" namespace="/caiwu"> <action name="caiwu" class="com.clzhang.ssh.demo3.CaiwuAction"> <result name="toCaiwu">/ssh/demo3/caiwu.jsp</result> </action> <action name="fromcaiwu2cangku" class="com.clzhang.ssh.demo3.FromCaiwu2CangkuAction"> <result name="gotoCangku" type="redirectAction"> <param name="namespace">/cangku</param> <param name="actionName">caiwu?id=${id}</param> </result> </action> </package> </struts>
倉庫模組配置檔案cangku.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="cangku" extends="struts-default" namespace="/cangku"> <action name="caiwu" class="com.clzhang.ssh.demo3.CangkuAction"> <result name="toCangku">/ssh/demo3/cangku.jsp</result> </action> </package> </struts>
struts.xml配置(使用include標記匯入多個配置檔案):
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <include file="caiwu.xml"></include> <include file="cangku.xml"></include> <constant name="struts.action.extension" value="action"></constant> </struts>
3. 建立各模組使用的JSP檔案
caiwu.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> 顯示財務模組 </body> </html>
cangku.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> 顯示倉庫模組 </body> </html>
4. 呼叫
4.1 開啟IE,輸入:http://127.0.0.1:8080/st/caiwu/caiwu.action
結果如下:
4.2 開啟IE,輸入:http://127.0.0.1:8080/st/cangku/caiwu.action
結果如下:
4.3 開啟IE,輸入:http://127.0.0.1:8080/st/caiwu/fromcaiwu2cangku.action?id=987
結果如下:
4.4 上面三項輸入的後臺輸出:
執行了財務統計模組
執行了倉庫模組,傳進來的id=0
從財務模組中的財務轉到了倉庫中的財務,id=987
執行了倉庫模組,傳進來的id=987