1、在web系统根目录下建立与模块名相同的文件夹
2、在WEB-INFO中建立同样的与模块名一一对应的文件夹,存放配置文件
3、web.xml中配置
< 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
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的写法
< input type ="hidden" name ="dispatchMethod" value ="doFoo" />
< html:submit >< bean:message key ="button.foo.label" /></ html:submit >
</ html:form >
实际上客户端的实际html代码是:
< 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" action ="/welcome" >
module指明是哪一个模块,page与action意思相同,action会自动给你加上.do.如果要跳到默认模块[即WEB-INFO文件夹下面]设置module="/" 即可
d、配置文件中设置从该模块跳到别的模块forward中 path="/../validator/index.jsp" 表示从该模块跳到validator模块中的index.jsp页面,其中path必须以"/"开始,“/”表示的是该模块的根目录。
type ="org.apache.struts.webapp.dispatch.DispatchExampleAction"
name ="testForm"
scope ="request" >
< forward name ="success" path ="/../validator/index.jsp" />
</ action >