struts2:多模块多配置文件开发

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

原文地址:https://www.cnblogs.com/nayitian/p/3458969.html