﻿<?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-行动创造奇迹-随笔分类-STRUTS</title><link>http://www.blogjava.net/dorydoo/category/12566.html</link><description>Action Action Action</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 05:58:25 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 05:58:25 GMT</pubDate><ttl>60</ttl><item><title>动作映射</title><link>http://www.blogjava.net/dorydoo/archive/2006/07/05/56635.html</link><dc:creator>多力宇扬</dc:creator><author>多力宇扬</author><pubDate>Wed, 05 Jul 2006 00:07:00 GMT</pubDate><guid>http://www.blogjava.net/dorydoo/archive/2006/07/05/56635.html</guid><wfw:comment>http://www.blogjava.net/dorydoo/comments/56635.html</wfw:comment><comments>http://www.blogjava.net/dorydoo/archive/2006/07/05/56635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dorydoo/comments/commentRss/56635.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorydoo/services/trackbacks/56635.html</trackback:ping><description><![CDATA[
		<p>动作映射</p>
		<p>这个时候，你可能会问自己:“当控制器接受到一个请求的时候，它如何知道调用哪个Action实例?”控制器要通过查看请求消息并使用一组动作<br />映射(action mapping)来做出决定。动作映射是Struts配置信息(配置一个特殊的XML文件中）的一部分。这个配置信息会在启动时加载到内存中<br />，让Struts框架得以在运行时加以利用。每个action元素在内存中都被表示为org.apache.struts.action.ActionMapping类的实例。<br />ActionMapping对象包含一个path属性，用来与外部请求的URI部分匹配。如下:<br />&lt;action <br />    path="/login"<br />    type="com.oreilly.struts.banking.action.LoginAction"<br />    scope="request"<br />    name="loginForm"<br />    validate="true"<br />    input="/login.jsp"<br />    &lt;forward name="Success" path="/action/getaccountinformation" redirect="true"/&gt;<br />    &lt;forward name="Failure" path="/login.jsp" redirect="true"/&gt;<br />&lt;/action&gt;<br />这里的登录动作映射把路径"/login"映射到了com.oreilly.struts.banking.LoginAction这个Action类。无论何时，当控制器接受到一个URI<br />路径中包含"/login"字符串的请求时，就会调用LoginAction实例的execute()方法。Struts框架还会使用映射来指出“动作"完成后要让用户<br />转向哪个资源。</p>
		<p> </p>
		<p>使用Struts ActionForm</p>
		<p>Struts框架的ActionForm对象可用来在用户和业务层之间传输客户的输入数据。Struts框架会自动从请求中收集输入数据，再将这些数据交给<br />一个使用表单bean(form bean)的Action对象，接着表单再交给业务层。为了把表示层和业务层分离开来，你不应该直接把ActionForm对象交<br />给业务层，而是应该使用由ActionForm对象得到的数据创建适当的DTO。下面的步骤说明了Struts框架如何处理每个请求相应的ActionForm对<br />象:<br />  <br />  1.检查该项动作的相应设置，查看是否已经有某个ActionForm得到配置。<br />  2.如果对应这个动作配置了某个ActionForm，则使用action元素中的name属性来查找表单bean的配置信息。<br />  3.查看是否已经创建了一个ActionForm的一个实例。<br />  4.如果在适当的作用域内已经存在一个ActionForm实例，而且这个实例的类型正是这个请求所需要的类型，则重用这个实例。<br />  5.否则，创建所需ActionForm的一个新实例，并存储在适当的作用域中（由action元素的scope属性设置)。<br />  6.调用ActionForm实例的reset()方法。<br />  7.反复处理请求参数，如果参数名在ActionForm实例中具有对应的设置方法(setter method),就为它填上该请求参数的值。<br />  8.最后，如果validate属性的值设置为true,则调用ActionForm实例的validate()方法，并返回所出现的任何错误。<br />对任何HTML页面而言，如果表单数据是以POST方法传输的，就应该使用ActionForm。必要时，相同的ActionForm可以同时给多个页面使用，只<br />要HTML字段能和ActionForm对象的属性(property)匹配就可以了。<br />Struts框架所提供的ActionForm类实现了多个方法，但到目前为止，最重要的两个方法就是reset()和validate():<br />  public void reset(ActionMapping mapping,HttpServletRequest request);<br />  public ActionErrors validate(ActionMapping mapping,HttpServletRequest request);<br />在Struts ActionForm类中，这两个方法的默认实现是不完成任何的逻辑。你必须在自己的ActionForm类中覆盖这两个方法。控制器以请求中的<br />值来填写ActionForm实例之前，会先调用reset()方法。reset()方法给了ActionForm一个机会，可将其属性设置为原来默认的状态。这一点非<br />常重要，因为表单bean实例可能会由多个请求共享或者由好几个不同的线程所存取。不过，如果你是让好几页共享一个ActionForm实例，可能<br />不会去想去实现reset()方法，这样一来只要这个实例还在，属性的值就不会被重新设置。另一种做法就是实现你自己的resetFields()方法，<br />在成功更新业务之后，就从这个Action类来调用此方法。<br />当请求中所携带的值已经插入到ActionFrom实例之后，控制器就回调用validate()方法。ActionForm应该对输入数据完成必要的验证工作，然<br />后向控制器返回所检测到的任何错误。业务逻辑验证应该在业务对象中而不是在ActionForm中来完成。在ActionForm中所进行的验证工作，只<br />是表示的验证而已。<br />一旦写好ActionForm类后，你必须通知Struts应用程序有这些ActionForm存在，告诉Struts应用程序哪个动作映射应该使用哪个ActionForm。<br />这是在配置文件中设置的。第一步是为你的应用程序在配置文件中的form-beans段里配置所有的ActionForm。看下面的一个例子:<br /> &lt;form-beans&gt;<br />    &lt;form-bean<br />       name="loginForm"<br />       type="com.oreilly.struts.banking.form.LoginForm"/&gt;<br />    &lt;form-bean<br />       name="accountInformationForm"<br />       type="org.apache.struts.action.DynaActionForm"&gt;<br />       &lt;form-property name="accounts" type="java.util.ArrayList"/&gt;<br />    &lt;/form-bean&gt;<br /> &lt;/form-beans&gt;<br />每个表单bean的name属性必须都是独一无二的，而且其type属性必须定义一个Java类（扩展了Struts ActionForm类）的完全限定名。下一步<br />是在一个或多个action元素中使用在form-benas段里的某个form-bean名。如下：<br />  &lt;action<br />    path="/login"<br />    type='com.oreilly.struts.banking.action.LoginAction"<br />    scope="request"<br />    name="loginForm"<br />    validate="true"<br />    input="/login.jsp"&gt;<br />    &lt;forward name="Success" path="/action/getaccountinformation" redirect="ture&gt;<br />    &lt;forward name="Failure" path="/login.jsp" redirect="true"/&gt;<br />  &lt;/action&gt;<br />注意：登录动作映射的name正好和前面form-beans段里某个name属性相匹配。</p>
		<p> </p>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/dorydoo/aggbug/56635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorydoo/" target="_blank">多力宇扬</a> 2006-07-05 08:07 <a href="http://www.blogjava.net/dorydoo/archive/2006/07/05/56635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 控制器组件-- ActionServlet类</title><link>http://www.blogjava.net/dorydoo/archive/2006/06/30/55867.html</link><dc:creator>多力宇扬</dc:creator><author>多力宇扬</author><pubDate>Fri, 30 Jun 2006 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/dorydoo/archive/2006/06/30/55867.html</guid><wfw:comment>http://www.blogjava.net/dorydoo/comments/55867.html</wfw:comment><comments>http://www.blogjava.net/dorydoo/archive/2006/06/30/55867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dorydoo/comments/commentRss/55867.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dorydoo/services/trackbacks/55867.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">                                                </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制器组件</span>
				<span lang="EN-US">-- ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们知道</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的入口是</span>
				<span lang="EN-US">ActionServlet. org.apache.struts.ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类在</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用程序中负责拦截工作。所有来自客户层的请求，在交给应用程序处理之前，都会先经过</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的一个实例接受到一个</span>
				<span lang="EN-US">HttpRequest</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象时，无论这是通过</span>
				<span lang="EN-US">doGet()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法还是</span>
				<span lang="EN-US">doPost()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法受到的</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都会调用</span>
				<span lang="EN-US">process()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法来处理该请求。</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">process()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法如下所示</span>
				<span lang="EN-US">:</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Protected void process(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletExcepion</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 5.25pt; mso-char-indent-count: .5">
				<span lang="EN-US">{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">RequestUtils.selectModule(request,getServletContext());</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">getRequestProcessor(getModuleConfig(request)).process(request,response);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 5.25pt; mso-char-indent-count: .5">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">尽管</span>
				<span lang="EN-US">process()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法看起来并不复杂，但是它调用的方法却很复杂。首先，它会调用</span>
				<span lang="EN-US">org.apache.struts.util.RequestUtils</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类的静态方法</span>
				<span lang="EN-US">selectModule(),</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并把当前的请求和这个</span>
				<span lang="EN-US">Web</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用程序的</span>
				<span lang="EN-US">ServletContext</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都传入该方法。</span>
				<span lang="EN-US">selectModule()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法的工作是将</span>
				<span lang="EN-US">request.getServletContext()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回的路径与每个配置应用模块的前缀相匹配，从而选出处理当前请求的应用模块。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注</span>
				<span lang="EN-US">: </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果你只用到了一个</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置文件</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那么你就只会有一个应用程序，也就是默认的应用程序。为了让默认的应用程序和应用模块能够简单而一致的处理请求，默认应用程序可视为一个应用模块。因此</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">任何请求只要不含应用程序的后缀</span>
				<span lang="EN-US">(suffix),</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都会被传送给默认的应用程序</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">由其处理。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">扩展</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">尽管</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架仍然允许你扩展</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类，但是这么做的好处已大不入前，因为它的大部分功能都已经放到新的</span>
				<span lang="EN-US">RequestProcessor</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类里了。如果你仍然想扩展自己的</span>
				<span lang="EN-US">ActionSerlvet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类，那么只要创建一个扩展了</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的类并配置</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架让它使用你的类就可以了。看以下一个覆盖了</span>
				<span lang="EN-US">init()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法的类。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Package dory.doo.framework;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import javax.servlet.ServeltException;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import javax.sertlvet.UnaviableException;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import org.apache.struts.action.ActionServlet;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import dory.doo.strutus.service.IStorefrontService;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import dory.doo.strutus.service.StorefrontServiceImpl;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import dory.doo.strutus.framework.util.IConstants;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import dory.doo.strutus.framework.exceptions.DatastoreException;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">/**</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">* </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">扩展了</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">ActionServlet,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以此来完成你自己特殊的初始化工作</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">*/</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">public class ExtendedActionServlet extends ActionServlet</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>public void init() throws ServletException</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">确定你先调用了超类</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>super.init();</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化持久存储服务</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>try</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创建服务接口的一个实例</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>IStorefrontService serviceImpl=new StorefrontServiceImpl();</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">把服务对象存储到应用作用域类</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>getServletContext().setAttribute(IConstants.SERVICE_INTERPACE_KEY,serviceImpl);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>catch(DatastoreException ex)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果服务对象的初始化工作出了问题，就关闭</span>
				<span lang="EN-US">web</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用程序</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>ex.printStackTrace();</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">     </span>throw new UnavailableException(ex.getMessage());</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">    </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">覆盖</span>
				<span lang="EN-US">init()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法只是一个例子</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你可以覆盖任何你想覆盖的方法</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果真的需要覆盖</span>
				<span lang="EN-US">init()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">请确定你先调用了</span>
				<span lang="EN-US">super.init()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这样才会完成默认的初始化工作。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">要使用自己的</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">子类，那么必须将</span>
				<span lang="EN-US">web.xml</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改如下</span>
				<span lang="EN-US">:</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>&lt;servlet&gt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>&lt;servlet-name&gt;MyActionServlet&lt;/servlt-name&gt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">   </span>&lt;servlet-class&gt;dory.doo.framework. ExtendedActionServlet&lt;/servlet-class&gt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>&lt;/servlet&gt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化过程</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">依</span>
				<span lang="EN-US">web.xml</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中配置的初始化参数而定，</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">容器首次启动时</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或者第一个对比</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的请求来到时</span>
				<span lang="EN-US">,servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">容器就会加载</span>
				<span lang="EN-US">Stuts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">ActionServlet.</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">无论是哪种情况</span>
				<span lang="EN-US">( </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也不管是什么样的</span>
				<span lang="EN-US">Java Servlet)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，都一定要保证</span>
				<span lang="EN-US">inint()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">得到调用，而且必须在</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">处理任何请求之前完成。</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架在</span>
				<span lang="EN-US">init()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">被调用时</span>
				<span lang="EN-US">,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会做好所有的初始化工作。看看如下就知道了它到底干了些什么</span>
				<span lang="EN-US">:</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架内部的消息资源包进行初始化。这些消息资源包是用来向日志文件传输信息性，警示和错误消息的</span>
				<span lang="EN-US">.</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而</span>
				<span lang="EN-US">org.apache.struts.action.ActionResources</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">资源包</span>
				<span lang="EN-US">(</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即</span>
				<span lang="EN-US">/org/acache/struts/action/ActionResources.properties</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件</span>
				<span lang="EN-US">)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则用来取得这些内部消息。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从</span>
				<span lang="EN-US">web.xml</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件加载控制</span>
				<span lang="EN-US">ActionServlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类各项行为的初始化参数。这些参数包括</span>
				<span lang="EN-US">config,debug,detail</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以及</span>
				<span lang="EN-US">convertNull</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从</span>
				<span lang="EN-US">web.xml</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件加载</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">名和</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">映射信息，并进行初始化。这些值可供整个</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架使用</span>
				<span lang="EN-US">(</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">几乎都是给</span>
				<span lang="EN-US">JSP</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标记库使用</span>
				<span lang="EN-US">),</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以便在</span>
				<span lang="EN-US">HTML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表单提交时，输出正确的</span>
				<span lang="EN-US">URL</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目标。在此初始化期间，</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架给所有使用</span>
				<span lang="EN-US">DTD</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也会得到注册。</span>
				<span lang="EN-US">DTD</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接下来可以用于严正配置文件。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">加载默认应用程序的</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置数据，并进行初始化，这些配置数据由</span>
				<span lang="EN-US">config</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化参数来指定。默认的</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置文件得到解析后，会创建一个</span>
				<span lang="EN-US">ApplicationConfig</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象，并存储在</span>
				<span lang="EN-US">ServletContext</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象中。默认应用程序的</span>
				<span lang="EN-US">ApplicationConfig</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象会以</span>
				<span lang="EN-US">org.apache.struts.action.APPLICATION</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个键值存储在</span>
				<span lang="EN-US">ServeltContext</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象中。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">5.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置文件中为默认应用程序指定的每个消息资源都会被加载，初始化，并存储在</span>
				<span lang="EN-US">ServletContext</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象中适当位置</span>
				<span lang="EN-US">(</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">依每个</span>
				<span lang="EN-US">message-resources</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素中指定的</span>
				<span lang="EN-US">key</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性而定</span>
				<span lang="EN-US">)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。如果没有指定</span>
				<span lang="EN-US">key</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性，那么相应的消息资源会键值</span>
				<span lang="EN-US">org.apache.struts.action.MESSAGE</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来存储。只有一个消息资源可作为默认消息资源存储，因为每个键都必须是唯一的。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">6.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置文件中所声明的每个数据源都被会被加载并初始化。如果没有指定任何</span>
				<span lang="EN-US">data-sources</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素，则会跳过这个步骤。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">7.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置文件中所指定的每个</span>
				<span lang="EN-US">plug-in(</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件</span>
				<span lang="EN-US">)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素都会被加载和初始化。对于每个</span>
				<span lang="EN-US">plug-in</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素所指定的类，其</span>
				<span lang="EN-US">itit()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法都将被调用。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">8.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一旦默认应用程序正确地完成了初始化之后，</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">init()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法会确定是否指定了任何其他的应用模块，如果有的话，对于每个应用模块都要重复步骤</span>
				<span lang="EN-US">4-7</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注</span>
				<span lang="EN-US">: </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了达到更好的性能，你可能会尝试为一个应用程序建立多个</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制器</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。这么做几乎得不到更好的性能或扩展性，</span>
				<span lang="EN-US">Struts</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设计者也不认为这是一个好注意。</span>
				<span lang="EN-US">Servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是多线程的，因此可以让多个客户同时执行。一个</span>
				<span lang="EN-US">servlet</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就能同时为多个客户提供服务。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
<img src ="http://www.blogjava.net/dorydoo/aggbug/55867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dorydoo/" target="_blank">多力宇扬</a> 2006-06-30 10:14 <a href="http://www.blogjava.net/dorydoo/archive/2006/06/30/55867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>