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

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

struts2:多业务方法的处理(动态调用,DMI)详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。