1、在web系统根目录下建立与模块名相同的文件夹
2、在WEB-INFO中建立同样的与模块名一一对应的文件夹,存放配置文件
3、web.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的写法
<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-eg是prj名称,dispatch即对应的模块名
b、xml配置文件中:parameter="dispatchMethod" ,jsp中< input type="hidden" name="dispatchMethod" value="doFoo" />,这种写法表示在对应的action中调用doFoo这个方法进行请求处理,而不是默认的execute。如果客户端没有给action中parameter="dispatchMethod" 中的参数dispatchMethod赋值那么就会以这个参数名"dispatchMethod"去找对应的方法。
c、模块之间的跳转
<html:link module="/exercise" page="/welcome.do">
<html:link module="/exercise" action="/welcome"> |
module指明是哪一个模块,page与action意思相同,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> |