struts2之4--模块化开发的支持

如图:

我如果需要开发一个新的模块,在组织代码的时候,为了便于后期维护,我就需要独立的文件夹,独立的配置文件来维护代码。struts2在这些方面给了住够灵活的支持。

主要体现在namespace,include 两个元素上。国际化的时候,属性文件由基本名称来进行模块化支持。



















1 namespace

  命名空间,体现在struts配置文件中,也体现在jsp页面<s:form>中 

  会影响浏览器中访问路径的变化。

  在浏览器里面输入的东西,http://ip地址:端口号/项目部署名称/namespace/action名称。
2 include
  模块化struts.xml配置文件

具体的示例代码内容为:

LoginAction  类:

// 增加了一个方法
public class LoginAction extends ActionSupport{


//跳到另一个模块的jsp页面
public String moduleJsp()  throws Exception{
System.out.println("执行了 moduleJsp() 方法");
return "success";
    }


}


struts.xml的文件内容

<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定struts2 配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd" > 
<!-- struts 是struts2 配置文件的根 -->
<struts>
  <!-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 -->
     <include file="struts-default.xml"></include>
 <!-- package 提供了将多个 Action 组织为一个业务模块的方式, package相当一个业务模块的抽象 名字必须是唯一的 -->
<package name="main"  extends="struts-default">
         <!-- Action 必须是在 包空间下定义 -->
         <!-- class 中指定要执行的action类 从WEB-INF/classes的文件夹做为根,开始找  -->
        <action name="login" class="com.mycom.LoginAction"  >
         <!-- jsp文件在工程中的位置  WebRoot\jsp\login.jsp -->
            <result name="success">/jsp/welcome.jsp</result>
            <result name="error">/jsp/error.jsp</result>
        </action>
        <action name="method1" class="com.mycom.LoginAction" method="addMetd"  >
            <result name="success">/jsp/welcome.jsp</result>
            <result name="error">/jsp/error.jsp</result>
        </action>
        
         <action name="signAction" class="com.mycom.LoginAction"   >
            <result name="success">/jsp/welcome.jsp</result>
            <result name="error">/jsp/error.jsp</result>
        </action>
        
         <action name="Action*" class="com.mycom.LoginAction" method="{1}"   >
            <result name="success">/jsp/{1}page.jsp</result>
        </action>
        
          <action name="moduleJsp" class="com.mycom.LoginAction" method="moduleJsp"   >
            <result name="success">jsp/myModule/myModulePage.jsp</result>
        </action>
        
    </package>

   <!-- 包含了一个业务模块的配置文件 -->
    <include file="struts-module1.xml"></include>
</struts>

struts-module1.xml 的文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd" > 
<struts>
<!--namespace:定义package命名空间 该命名空间影响到url的地址,访问地址为http://localhost:服务端口号如8080/服务发布名称/module/testAction  -->
 <package name="module1" namespace="/module" extends="struts-default">
     <action name="testAction" class="com.mycom.myModule.MyModuleAction" method="test"   >
  <!--jsp路径 相对于WebRoot -->  
        <result name="success">/jsp/myModule/myModuleTest.jsp</result>
  <!--转向不只是jsp页面,下面的转向一个Action方法也很常用-->  
  <!--重新定向 指向一个可以执行的action方法 并且有参数传递  感兴趣的可以看一下 多用于信息添加到列表页面的切换 -->       
         <result name="viewInfo" type="redirect">/module/listLnfo?name=${name}</result>
     </action>
 </package>
 </struts>


WebRoot/jsp/myModule/myModulePage.jsp 这个jsp文件内容:


<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>我的模块</title>
</head>
<body>
  <s:form action="testAction" method="post" namespace="/module"  >
     <table>
   <tr><td><s:textfield name="name" label="姓名"></s:textfield></td></tr>
   <tr><td><s:textfield name="address" label="籍贯"></s:textfield></td></tr>
   <tr><td>
    <s:submit value="提交"></s:submit>
    <s:submit value="提交到另一个方法" method="otherMethod"  ></s:submit>
   </td></tr>
   </table>
  </s:form>
</body>
</html>

WebRoot/jsp/myModule/myModuleTest.jsp   这个jsp文件内容:

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>模块测试页面</title>
</head>
<body>
 这个你要的模块测试页面.
</body>
</html>


国际化的时候,也有模块化的开发支持,下一篇关于struts2国际化的文章,我会详细说明。










  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值