struts2:多模組多配置檔案開發

weixin_33894992發表於2013-12-05

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

相關文章