﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Welcome to utopia!-文章分类-J2EE框架</title><link>http://www.blogjava.net/utopian/category/9205.html</link><description>专注于JAVA开发!!!</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 18:57:15 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 18:57:15 GMT</pubDate><ttl>60</ttl><item><title>Struts 1.2多模块开发简单示例</title><link>http://www.blogjava.net/utopian/articles/38595.html</link><dc:creator>Welcome to utopia!</dc:creator><author>Welcome to utopia!</author><pubDate>Sat, 01 Apr 2006 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/utopian/articles/38595.html</guid><wfw:comment>http://www.blogjava.net/utopian/comments/38595.html</wfw:comment><comments>http://www.blogjava.net/utopian/articles/38595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/utopian/comments/commentRss/38595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/utopian/services/trackbacks/38595.html</trackback:ping><description><![CDATA[
		<p>由于最近做的一个OA项目要用到多模块,所以特意找了资料来参考,不过很多讲的不是很详细,为了让像我一样菜的初学者能明白这个多模块配置,于是写了本文.<br />Struts的官方网站上其实有示例,只要下载1.2.6以上的开发包.<br />其实1.1也支持多配置文件,不过实现困难,我也没有试.<br /><font color="#ff3300">注意:我这里用的是Struts 1.2.<br /></font>下面开始吧:<br />先说明一下,工程名为Module,分三个子模块,分别是module1,module2,module3,为了简单起见每一个模块下面只放了一个含有链接到其它模块的JSP文件(index.jsp),.目录结构如下:<br /><img src="http://www.blogjava.net/images/blogjava_net/utopian/9345/r_Struts%201.2%e5%a4%9a%e6%a8%a1%e5%9d%97%e5%bc%80%e5%8f%91%e7%ae%80%e5%8d%95%e7%a4%ba%e4%be%8b.BMP" /><br />以下是各个文件的代码:<br />Module\WebRoot\index.jsp:<br />&lt;%@ page language="java" pageEncoding="GB2312"%&gt;<br />&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%&gt;<br />&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%&gt;<br />&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%&gt;<br />&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested"%&gt;</p>
		<p>&lt;logic:redirect forward="welcome"/&gt;<br />没什么内容,就是直接重定向到welcome,在这里Struts会查找WebRoot\WEB-INF\struts-config.xml下的&lt;global-forwards&gt;元素里,看看是否有&lt;forward name="welcome" path="/Welcome.do" /&gt;这样名字的转向.<br />Module/WebRoot/WEB-INF/struts-config.xml:<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"&gt;<br />&lt;struts-config&gt;<br />&lt;data-sources /&gt;<br />&lt;form-beans /&gt;<br />&lt;global-exceptions /&gt;<br />&lt;global-forwards&gt;<br /> &lt;forward name="welcome" path="/Welcome.do" /&gt;<br />&lt;/global-forwards&gt;<br />&lt;action-mappings&gt;<br /> &lt;action path="/Welcome" forward="/Welcome.jsp" /&gt;<br /> &lt;action path="/toModule" type="org.apache.struts.actions.SwitchAction" /&gt;<br />&lt;/action-mappings&gt;<br />&lt;message-resources parameter="com.utopian.struts.ApplicationResources" /&gt;<br />&lt;/struts-config&gt;<br />因为有&lt;forward name="welcome" path="/Welcome.do" /&gt;,所以它就会转向到/Welcome.do,然后Struts又会去查找到Web.xml里关于.do的处理:<br />Module\WebRoot\WEB-INF\web.xml:<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;<br /> &lt;display-name&gt;Module Test&lt;/display-name&gt;<br /> &lt;servlet&gt;<br />  &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;<br />  &lt;init-param&gt;<br />   &lt;param-name&gt;config&lt;/param-name&gt;<br />   &lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt;<br />  &lt;/init-param&gt;<br />  &lt;!-- module configurations --&gt;<br />  &lt;init-param&gt;<br />   &lt;param-name&gt;config/module1&lt;/param-name&gt;<br />   &lt;param-value&gt;/WEB-INF/module1/struts-config.xml&lt;/param-value&gt;<br />  &lt;/init-param&gt;<br />  &lt;init-param&gt;<br />   &lt;param-name&gt;config/module2&lt;/param-name&gt;<br />   &lt;param-value&gt;/WEB-INF/module2/struts-config.xml&lt;/param-value&gt;<br />  &lt;/init-param&gt;<br />  &lt;init-param&gt;<br />   &lt;param-name&gt;config/module3&lt;/param-name&gt;<br />   &lt;param-value&gt;/WEB-INF/module3/struts-config.xml&lt;/param-value&gt;<br />  &lt;/init-param&gt;</p>
		<p>  &lt;init-param&gt;<br />   &lt;param-name&gt;debug&lt;/param-name&gt;<br />   &lt;param-value&gt;3&lt;/param-value&gt;<br />  &lt;/init-param&gt;<br />  &lt;init-param&gt;<br />   &lt;param-name&gt;detail&lt;/param-name&gt;<br />   &lt;param-value&gt;3&lt;/param-value&gt;<br />  &lt;/init-param&gt;<br />  &lt;load-on-startup&gt;0&lt;/load-on-startup&gt;<br /> &lt;/servlet&gt;<br /> &lt;servlet-mapping&gt;<br />  &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />  &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br /> &lt;/servlet-mapping&gt;<br /> &lt;!-- The Usual Welcome File List --&gt;<br /> &lt;welcome-file-list&gt;<br />  &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br /> &lt;/welcome-file-list&gt;<br />&lt;/web-app&gt;<br />注意这里, &lt;servlet-name&gt;action&lt;/servlet-name&gt; &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;,根据这个,Struts会找到action.然后去struts-config.xml查找所匹配的值,因为有&lt;action path="/Welcome" forward="/Welcome.jsp" /&gt;,/Weclcome.do就会直接转到/Welcome.jsp.<br />Module\WebRoot\Welcome.jsp:<br />这个文件就是一些转向:<br /> &lt;ul&gt;<br />      &lt;li&gt;&lt;html:link module="/module1" action="/module1"&gt;这是第一个子模块module1的链接&lt;/html:link&gt;&lt;/li&gt;<br />      &lt;li&gt;&lt;html:link module="/module2" action="/module2"&gt;这是第二个子模块module2的链接&lt;/html:link&gt;&lt;/li&gt;<br />      &lt;li&gt;&lt;html:link module="/module3" action="/module3"&gt;这是第三个子模块module3的链接&lt;/html:link&gt;&lt;/li&gt;<br />  &lt;/ul&gt;<br />在Struts 1.2里,如果在link标签里用了module属性,就表示是模块间转发,所以就会先到web.xml去里查找关于模块的定义,比如说这个   &lt;param-name&gt;config/module1&lt;/param-name&gt;&lt;param-value&gt;/WEB-INF/module1/struts-config.xml&lt;/param-value&gt;,config是表示默认的模块,而config/则表示子模块,这个文件夹实际上不存在.接来的情况类似前面说的查找转向的过程.<br />还有什么不清楚的地方,请联系我,我会尽我所能帮助你!<br />下面有完整的项目下载:<br /><a class="" title="" href="/Files/utopian/Module.rar" target="">Struts 1.2多模块开发简单示例</a><br /></p>
<img src ="http://www.blogjava.net/utopian/aggbug/38595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/utopian/" target="_blank">Welcome to utopia!</a> 2006-04-01 11:59 <a href="http://www.blogjava.net/utopian/articles/38595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>