struts 多模块配置

来源:互联网 发布:平顶山平高怎么样知乎 编辑:程序博客网 时间:2024/06/04 18:06

1、在web系统根目录下建立与模块名相同的文件夹

2、在WEB-INFO中建立同样的与模块名一一对应的文件夹,存放配置文件

3web.xml中配置 

    <servlet>
        
<servlet-name>action</servlet-name>
        
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

        
<!-- Default -->
        
<init-param>
            
<param-name>config</param-name>
            
<param-value>/WEB-INF/struts-config.xml</param-value>
        
</init-param>

        
<!-- Exercise module -->
        
<init-param>
            
<param-name>config/exercise</param-name>
            
<param-value>/WEB-INF/exercise/struts-config.xml</param-value>
        
</init-param>

        
<!-- File Upload module -->
        
<init-param>
            
<param-name>config/upload</param-name>
            
<param-value>/WEB-INF/upload/struts-config.xml</param-value>
        
</init-param>

        
<!-- Validator module -->
        
<init-param>
            
<param-name>config/validator</param-name>
            
<param-value>/WEB-INF/validator/struts-config.xml,
                /WEB-INF/validator/struts-config-bundles.xml,
                /WEB-INF/validator/struts-config-i18nVariables.xml,
                /WEB-INF/validator/struts-config-type.xml,
                /WEB-INF/validator/struts-config-validwhen.xml
            
</param-value>

        
</init-param>

        
<!-- Dispatch Action module -->
        
<init-param>
            
<param-name>config/dispatch</param-name>
            
<param-value>/WEB-INF/dispatch/struts-config.xml</param-value>
        
</init-param>

        
<init-param>
            
<param-name>debug</param-name>
            
<param-value>2</param-value>
        
</init-param>
        
<init-param>
            
<param-name>detail</param-name>
            
<param-value>2</param-value>
        
</init-param>
        
<load-on-startup>2</load-on-startup>
    
</servlet>

 

 该系统中一共配置了四个模块

4、在WEB-INFO下与模块对应的文件夹中添加该模块的struts配置文件,名称没有限制,可以在web.xml中进行指定。

5、在web系统根目录下的与模块对应的文件夹中放置对应的jsp文件。

6、注意:4、中action路径都是相对于本模块的

WEB-INFO/dispatch/struts-config.xml

        <action path="/dispatch-submit" 
                type
="org.apache.struts.webapp.dispatch.DispatchExampleAction"

                parameter
="dispatchMethod"
                name
="testForm"
                scope
="request">
            
<exception key="dispatch.NoSuchMethodException"
                       type
="java.lang.NoSuchMethodException"
                       path
="/dispatch.jsp"/>
            
<exception key="dispatch.ServletException"
                       type
="javax.servlet.ServletException"
                       path
="/dispatch.jsp"/>
            
<forward name="success" path="/dispatch.jsp"/>
        
</action>

jsp中对应的action的写法:这样在action中就不用加模块名了,会自动加上。

          <html:form action="dispatch-submit" style="display:inline">
              
<input type="hidden" name="dispatchMethod" value="doFoo" />
              
<html:submit><bean:message key="button.foo.label" /></html:submit>
          
</html:form>

实际上客户端的实际html代码是:

          <form name="testForm" method="post" action="/strtus-eg/dispatch/dispatch-submit.do" style="display:inline">
              
<input type="hidden" name="dispatchMethod" value="doFoo" />
              
<input type="submit" value="Foo Button">
          
</form>

注:a/strtus-eg/dispatch/dispatch-submit.do /struts-egprj名称,dispatch即对应的模块名

        bxml配置文件中:parameter="dispatchMethod" ,

           jsp<input type="hidden" name="dispatchMethod" value="doFoo" />,这种写法表示在对应的action中调用doFoo这个方法进行请求处理,而不是默认的execute如果客户端没有给actionparameter="dispatchMethod" 中的参数dispatchMethod赋值那么就会以这个参数名"dispatchMethod"去找对应的方法。

     c模块之间的跳转 :很有用!!!!

<html:link module="/exercise" page="/welcome.do">
<html:link module="/exercise" action="/welcome">

 module指明是哪一个模块,pageaction意思相同,action会自动给你加上.do.如果要跳到默认模块[WEB-INFO文件夹下面]设置module="/" 即可

       d、配置文件中设置从该模块跳到别的模块forward path="/../validator/index.jsp"      表示从该模块跳到validator模块中的index.jsp页面,其中path必须以"/"开始,“/”表示的是该模块的根目录。 

        <action path="/dispatch-noparam" 
                type
="org.apache.struts.webapp.dispatch.DispatchExampleAction"

                name
="testForm"
                scope
="request">
            
<forward name="success" path="/../validator/index.jsp"/>
        
</action

 

另外加:

1.  在页面中调用Action时,如果是用的struts标签,就不用加模块名等,会自动加上。

但如果用window.location.href  link时就加上所有路径。如onClick="window.location.href='<c:out value="${pageContext.request.contextPath}"/>/report/dataXXX/partXXXing.do?action=searchPartXXX'">

2.如果是采用strustspring集成时,在spring中注入Action时,也要加模块名,因为spring不知道分模块。

3.属性配置文件:

<message-resources parameter="ApplicationResources_模块名" key="模块名"/>  //

对应的中文文件为:ApplicationResources_模块名_zh_CN.properties

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">

 

<form-validation>

 <global>

  <constant>

   <constant-name>time</constant-name>

   <constant-value>^(0/d{1}|1/d{1}|2[0-3]):([0-5]/d{1})$</constant-value>

  </constant>

 </global>

 

 

    <formset>

       <form name="partForm">

           <field property="actor" depends="required">

              <arg  bundle="模块名"

// bundle的值是在<message-resources parameter="ApplicationResources_模块名" key="模块名"/>  配置好了。

key="XXXXXXXXXXXXXXX" position="0" />

           </field>

          

       </form>

    </formset>

</form-validation>

 

 
原创粉丝点击