<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[21 工作室 - 配置文件]]></title>
<link>http://www.is21.cn/</link>
<description><![CDATA[本站承接网页制作、软件项目开发、代写代码等业务，我们将和您真诚合作，以最低的价格提供最优越的服务。13488846575   联系人:潘劲]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[lianxiangpanjin@163.com(潘劲)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>21 工作室</title> 
	<url>http://www.is21.cn/images/logos.gif</url> 
	<link>http://www.is21.cn/</link> 
	<description>21 工作室</description> 
</image>

			<item>
			<link>http://www.is21.cn/default.asp?id=280</link>
			<title><![CDATA[配置web.xml]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Tue,15 Apr 2008 18:21:58 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=280</guid>	
		<description><![CDATA[控制台输出信息如下：&nbsp;<br/>reload&nbsp;&nbsp;&nbsp;on&nbsp;&nbsp;&nbsp;error:&nbsp;&nbsp;&nbsp;com.caucho.server.http.ConfigException:&nbsp;&nbsp;&nbsp;D:\resin-2.1.17\webapps\testmysql\WEB-INF\web.xml:4:&nbsp;&nbsp;&nbsp;unknown&nbsp;&nbsp;&nbsp;element&nbsp;&nbsp;&nbsp;`version&nbsp;&#39;&nbsp;&nbsp;&nbsp;in&nbsp;&nbsp;&nbsp;web-app<br/><br/><br/><br/>-------------------------------------------------------------------------<br/>在resin2:web.xml&nbsp;<br/><br/>&lt;web-app&nbsp;xmlns=&#34;<a href="http://java.sun.com/xml/ns/j2ee" target="_blank">http://java.sun.com/xml/ns/j2ee</a>&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi=&#34;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&#34;&gt;&nbsp;<br/>&lt;/web-app&gt;<br/><br/>resin3:&nbsp;web.xml&nbsp;<br/><br/>&lt;web-app&nbsp;xmlns=&#34;<a href="http://java.sun.com/xml/ns/j2ee" target="_blank">http://java.sun.com/xml/ns/j2ee</a>&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi=&#34;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation=&#34;<a href="http://java.sun.com/xml/ns/j2ee" target="_blank">http://java.sun.com/xml/ns/j2ee</a>&nbsp;<a href="http://java.sun.com/xml/ns/j2ee" target="_blank">http://java.sun.com/xml/ns/j2ee</a>/web-app_2_4.xsd&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version=&#34;2.4&#34;&gt;&nbsp;<br/>&lt;/web-app&gt;<br/><br/>tomcat:&nbsp;web.xml&nbsp;<br/><br/>&lt;web-app&nbsp;xmlns=&#34;<a href="http://java.sun.com/xml/ns/j2ee" target="_blank">http://java.sun.com/xml/ns/j2ee</a>&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi=&#34;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation=&#34;<a href="http://java.sun.com/xml/ns/j2ee" target="_blank">http://java.sun.com/xml/ns/j2ee</a>&nbsp;<a href="http://java.sun.com/xml/ns/j2ee" target="_blank">http://java.sun.com/xml/ns/j2ee</a>/web-app_2_4.xsd&#34;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version=&#34;2.4&#34;&gt;&nbsp;<br/>&lt;/web-app&gt;]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=94</link>
			<title><![CDATA[用ASP实现网上“五子棋”大赛]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Sun,07 Oct 2007 09:57:53 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=94</guid>	
		<description><![CDATA[“五子棋”是大家都非常熟悉的一种益智类游戏，相关的游戏软件也非常多，在此我向大家隆重推出一款新的纯“网络版”的五子棋，它利用asp做为开发环境，因此在Internet上对战的时候无需下载客户端软件，只要你有一个浏览器就可以了。你也可以在局域网上进行这个游戏。<br/>对于asp，我不想做过多的说明，在以前的文章中，我已经说过很多。<br/>游戏的过程是这样的，我们首先登录，然后可以选择战场，有“金星”、“木星”、“水星”、“火星”、“土星”等五个战场，如果你自认为是一个高手，可以选择金星，否则可以依次选择其它几个星球做为战场。如果这个星球上没有擂主，你就应该以擂主的身份进入，然后别人就可以和你进行对战了。当然，如果所有的星球上都已经开始了战争，那么你就只能等一会儿了。<br/>如果你是以擂主身份进入的，你可以等待别人来和你对战，如果你是以攻擂手的身份登录，你可以很快的和擂主展开战斗。开始战斗后，由擂主执黑先行，然后由攻擂手出招，如此这般。当最后决出胜负的时候，会有相应的提示。<br/>该站点有几个主要的文件是：<br/>Index.asp&nbsp;登录文件：<br/>Index0.asp中间文件：<br/>Match.asp&nbsp;比赛文件：<br/>Back0.jpg&nbsp;white0.jpg&nbsp;black0.jpg&nbsp;中间用到的图形文件，分别指的棋盘，白子和黑子，如下图：<br/>在程序的初始化的时候，将棋盘上分成若干的表格，将背景图片放入其中，形成一个棋盘，然后在放上一个棋子后，再将图片换上相应的白子或黑子就可以了。<br/>先看看登录文件：<br/><br/>＜%@&nbsp;Language=VBScript&nbsp;%＞<br/>＜HTML＞<br/>＜HEAD＞<br/>＜META&nbsp;NAME=&#34;GENERATOR&#34;&nbsp;Content=&#34;Microsoft&nbsp;Visual&nbsp;Studio&nbsp;6.0&#34;＞<br/>＜title＞星球大战之“五子连珠”大赛！＜/title＞<br/>＜/HEAD＞<br/>＜BODY＞<br/>　<br/>＜p&nbsp;align=center＞＜font&nbsp;size=6＞星球大战＜/font＞＜/P＞<br/>＜table&nbsp;border=1&nbsp;width=80%&nbsp;align=center＞<br/>＜tr＞＜td＞星球＜/td＞＜td＞擂主＜/td＞＜td＞大战＜/td＞＜td＞攻擂＜/td＞＜/tr＞<br/>＜tr＞<br/>＜td＞金星＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;first1&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>＜form&nbsp;action=index0.asp?flag=First1&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtFirst1&nbsp;size=10＞＜INPUT&nbsp;id=submit1&nbsp;name=submit1<br/>type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;first1&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜td＞大战＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;second1&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>　<br/>＜form&nbsp;action=index0.asp?flag=second1&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtSecond1&nbsp;size=10＞＜INPUT&nbsp;id=submit1<br/>name=submit1&nbsp;type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;Second1&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜/tr＞<br/>　<br/>＜tr＞<br/>＜td＞木星＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;first2&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>＜form&nbsp;action=index0.asp?flag=First2&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtFirst2&nbsp;size=10＞＜INPUT&nbsp;id=submit1&nbsp;name=submit1<br/>type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;first2&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜td＞大战＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;second2&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>　<br/>＜form&nbsp;action=index0.asp?flag=second2&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtSecond2&nbsp;size=10＞＜INPUT&nbsp;id=submit1<br/>name=submit1&nbsp;type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;Second2&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜/tr＞<br/>　<br/>＜tr＞<br/>＜td＞金星＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;first3&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>＜form&nbsp;action=index0.asp?flag=First3&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtFirst3&nbsp;size=10＞＜INPUT&nbsp;id=submit1&nbsp;name=submit1<br/>type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;first3&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜td＞大战＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;second3&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>　<br/>＜form&nbsp;action=index0.asp?flag=second3&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtSecond3&nbsp;size=10＞＜INPUT&nbsp;id=submit1<br/>name=submit1&nbsp;type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;Second3&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜/tr＞<br/>　<br/>＜tr＞<br/>＜td＞金星＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;first4&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>＜form&nbsp;action=index0.asp?flag=First4&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtFirst4&nbsp;size=10＞＜INPUT&nbsp;id=submit1&nbsp;name=submit1<br/>type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;first4&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜td＞大战＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;second4&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>　<br/>＜form&nbsp;action=index0.asp?flag=second4&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtSecond4&nbsp;size=10＞＜INPUT&nbsp;id=submit1<br/>name=submit1&nbsp;type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;Second4&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜/tr＞<br/>　<br/>＜tr＞<br/>＜td＞金星＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;first5&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>＜form&nbsp;action=index0.asp?flag=First5&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtFirst5&nbsp;size=10＞＜INPUT&nbsp;id=submit1&nbsp;name=submit1<br/>type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;first5&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜td＞大战＜/td＞<br/>＜td＞<br/>＜%<br/>if&nbsp;application(&#34;second5&#34;)=&#34;&#34;&nbsp;then<br/>%＞<br/>　<br/>＜form&nbsp;action=index0.asp?flag=second5&nbsp;method=post＞<br/>＜INPUT&nbsp;id=text1&nbsp;name=txtSecond5&nbsp;size=10＞＜INPUT&nbsp;id=submit1<br/>name=submit1&nbsp;type=submit&nbsp;value=进入＞<br/>＜/form＞<br/>＜%<br/>else<br/>response.write&nbsp;application(&#34;Second5&#34;)<br/>end&nbsp;if<br/>%＞<br/>＜/td＞<br/>＜/tr＞　<br/>＜/table＞<br/>＜/BODY＞<br/>＜/HTML＞<br/>这个文件不用做过多的说明，就是一个大的表格，大家可以从那里进入，如果某个位置已经被使用，则它会变成该大&nbsp;侠的名字，不允许重复登录。在登录后进入<br/>index0.asp，这是一个中间交换文件，在里面进行一些变量的处理及赋值，然后再进入match.asp，进行正式的比赛。我们来看一下index0.asp的内容：<br/>＜%@&nbsp;Language=VBScript&nbsp;%＞<br/>＜%<br/>if&nbsp;Request.Form(&#34;txt&#34;&nbsp;&amp;&nbsp;request.querystring(&#34;flag&#34;))＜＞&#34;&#34;&nbsp;then<br/>&#39;response.write&nbsp;&#34;in!&#34;&nbsp;&amp;&nbsp;&#34;&#34;<br/>session(&#34;nice&#34;)=Request.Form(&#34;txt&#34;&nbsp;&amp;&nbsp;request.querystring(&#34;flag&#34;))<br/>&#39;response.write&nbsp;session(&#34;nice&#34;)&nbsp;&amp;&nbsp;&#34;&#34;<br/>&#39;response.write&nbsp;application(request.querystring(&#34;flag&#34;))<br/>if&nbsp;application(request.querystring(&#34;flag&#34;))=&#34;&#34;&nbsp;then<br/>application(request.querystring(&#34;flag&#34;))=session(&#34;nice&#34;)<br/>session(&#34;class&#34;)=right(request.querystring(&#34;flag&#34;),1)<br/>if&nbsp;left(request.querystring(&#34;flag&#34;),1)=&#34;f&#34;&nbsp;then<br/>application(session(&#34;nice&#34;))=false<br/>elseif&nbsp;left(request.querystring(&#34;flag&#34;),1)=&#34;s&#34;&nbsp;then<br/>application(session(&#34;nice&#34;))=false<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=true<br/>end&nbsp;if<br/>Response.Redirect&nbsp;&#34;match.asp&#34;<br/>end&nbsp;if<br/>　<br/>　<br/>end&nbsp;if<br/>　<br/>%＞<br/>＜HTML＞<br/>＜/HTML＞<br/>该程序中，用session(“nice”)来记录您登录的大名，以后的处理中，很多都要用到它，用它来区分很多的用户。如果您是从擂主的位置进入，则您的权利是<br/>first，否则是second，用session(&#34;class&#34;)来记录位于哪个战场场，“金”“木”<br/>“水”&nbsp;“火”“土”分别表示为1、2、3、4、5，因为有多个战场可能同时开战，如果不能正确地区分开，则可能导致一片混乱。application&nbsp;(session(&#34;nice&#34;))是一个逻辑型变量，用真假来表示您是否可以出棋，如果是假，您要等待一个，如果是真，您就可以下棋了。只有一个战场上的两个人都进入了以后，擂主方可以下棋，而且只有当擂主出子以后，攻擂手才可以下棋。准备好以后，下面就进入赛场，请看文件match.asp<br/><br/>＜html＞<br/>＜head＞<br/>＜meta&nbsp;http-equiv=&#34;Content-Type&#34;&nbsp;content=&#34;text/html;&nbsp;charset=gb2312&#34;＞<br/>＜meta&nbsp;name=&#34;GENERATOR&#34;&nbsp;content=&#34;Microsoft&nbsp;FrontPage&nbsp;4.0&#34;＞<br/>＜meta&nbsp;name=&#34;ProgId&#34;&nbsp;content=&#34;FrontPage.Editor.Document&#34;＞<br/>＜META&nbsp;http-equiv=refresh&nbsp;content=3＞<br/>＜title＞连珠大赛...＜/title＞<br/>＜/head＞<br/>＜%<br/>Response.Write&nbsp;&#34;擂主:&#34;&nbsp;&amp;&nbsp;application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;))<br/>&amp;&nbsp;&#34;&nbsp;&nbsp;&nbsp;&nbsp;攻擂：&#34;&nbsp;&amp;&nbsp;application(&#34;second&#34;&nbsp;&amp;&nbsp;session<br/>(&#34;class&#34;))<br/>if&nbsp;Request.QueryString(&#34;pos&#34;)＜＞&#34;&#34;&nbsp;then<br/>application(&#34;pos&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;Request.QueryString(&#34;pos&#34;))<br/>=true<br/>end&nbsp;if<br/>%＞<br/>＜body＞<br/>＜%<br/>&#39;Response.Write&nbsp;application(&#34;aaa&#34;)<br/>if&nbsp;application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;))=session(&#34;nice&#34;)&nbsp;then<br/>color=&#34;black&#34;<br/>if&nbsp;Request.QueryString(&#34;pos&#34;)＜＞&#34;&#34;&nbsp;then<br/>if&nbsp;session(&#34;last&#34;)=&#34;&#34;&nbsp;then&nbsp;session(&#34;last&#34;)=&#34;abc&#34;<br/>if&nbsp;session(&#34;last&#34;)＜＞&nbsp;Request.QueryString(&#34;pos&#34;)&nbsp;then<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>if&nbsp;application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;))＜＞&#34;&#34;&nbsp;then&nbsp;application<br/>(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=true<br/>session(&#34;last&#34;)=Request.QueryString(&#34;pos&#34;)<br/>END&nbsp;IF<br/>end&nbsp;if<br/>else<br/>if&nbsp;application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;))=session(&#34;nice&#34;)&nbsp;then<br/>color=&#34;white&#34;<br/>if&nbsp;Request.QueryString(&#34;pos&#34;)＜＞&#34;&#34;&nbsp;then<br/>&#39;if&nbsp;session(&#34;last&#34;)=&#34;&#34;&nbsp;then&nbsp;session(&#34;last&#34;)=&#34;abc&#34;<br/>if&nbsp;session(&#34;last&#34;)＜＞&nbsp;Request.QueryString(&#34;pos&#34;)&nbsp;then<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=true<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>session(&#34;last&#34;)=Request.QueryString(&#34;pos&#34;)<br/>END&nbsp;IF<br/>end&nbsp;if<br/>else<br/>if&nbsp;application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;))=&#34;&#34;&nbsp;then<br/>application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;))=session(&#34;nice&#34;)<br/>color=&#34;white&#34;<br/>if&nbsp;Request.QueryString(&#34;pos&#34;)＜＞&#34;&#34;&nbsp;then<br/>if&nbsp;session(&#34;last&#34;)=&#34;&#34;&nbsp;then&nbsp;session(&#34;last&#34;)=&#34;abc&#34;<br/>if&nbsp;session(&#34;last&#34;)＜＞&nbsp;Request.QueryString(&#34;pos&#34;)&nbsp;then<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=true<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>session(&#34;last&#34;)=Request.QueryString(&#34;pos&#34;)<br/>END&nbsp;IF<br/>end&nbsp;if<br/>else<br/>color=&#34;&#34;<br/>end&nbsp;if<br/>end&nbsp;if<br/>end&nbsp;if<br/>Response.Write&nbsp;&#34;＜table&nbsp;width=400&nbsp;height=400&nbsp;border=0&nbsp;cellspacing=0<br/>cellpadding=0＞&#34;<br/>for&nbsp;i=1&nbsp;to&nbsp;16<br/>Response.Write&nbsp;&#34;＜tr＞&#34;<br/>for&nbsp;j=1&nbsp;to&nbsp;16<br/>if&nbsp;application(&#34;pos&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(j))=&#34;&#34;<br/>then<br/>application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;Request.QueryString<br/>(&#34;pos&#34;))=color<br/>Response.Write&nbsp;&#34;＜td&nbsp;width=25&nbsp;height=25＞&#34;<br/>&#39;response.write&nbsp;application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))<br/>if&nbsp;application(session(&#34;nice&#34;))=true&nbsp;then<br/>response.write&nbsp;&#34;＜a&nbsp;href=match.asp?pos=&#34;&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(j)<br/>&amp;&nbsp;&#34;＞＜img&nbsp;border=0&nbsp;src=back0.jpg&nbsp;width=25&nbsp;height=25＞＜/a＞&#34;<br/>else<br/>response.write&nbsp;&#34;＜img&nbsp;border=0&nbsp;src=back0.jpg&nbsp;width=25&nbsp;height=25＞&#34;<br/>end&nbsp;if<br/>response.write&nbsp;&#34;＜/td＞&#34;<br/>else<br/>Response.Write&nbsp;&#34;＜td&nbsp;width=25&nbsp;height=25＞＜img&nbsp;border=0&nbsp;src=&#34;&nbsp;&amp;<br/>application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr<br/>(j))&nbsp;&amp;&nbsp;&#34;0.jpg&nbsp;width=25&nbsp;height=25＞＜/td＞&#34;&nbsp;&amp;&nbsp;chr(13)<br/>end&nbsp;if<br/>next<br/>Response.Write&nbsp;&#34;＜/tr＞&#34;<br/>next<br/>Response.Write&nbsp;&#34;＜/table＞&#34;<br/>&#39;判断输赢<br/>if&nbsp;application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;))=session(&#34;nice&#34;)&nbsp;then<br/>m=&#34;black&#34;<br/>h=&#34;white&#34;<br/>else<br/>h=&#34;black&#34;<br/>m=&#34;white&#34;<br/>end&nbsp;if<br/>&#39;横向判断&#34;-&#34;<br/>for&nbsp;i=1&nbsp;to&nbsp;15<br/>win=false<br/>loss=false<br/>five_me=0<br/>five_he=0<br/>for&nbsp;j=1&nbsp;to&nbsp;15<br/>if&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr<br/>(j))=m&nbsp;then<br/>five_me=five_me+1<br/>five_he=0<br/>elseif&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;<br/>cstr(j))=h&nbsp;then<br/>five_me=0<br/>five_he=five_he+1<br/>else<br/>five_me=0<br/>five_he=0<br/>end&nbsp;if<br/>if&nbsp;five_me=5&nbsp;then<br/>win=true<br/>loss=false<br/>exit&nbsp;for<br/>elseif&nbsp;five_he=5&nbsp;then<br/>win=false<br/>loss=true<br/>exit&nbsp;for<br/>end&nbsp;if<br/>next<br/>if&nbsp;win&nbsp;o&#114;&nbsp;loss&nbsp;then&nbsp;exit&nbsp;for<br/>next<br/>if&nbsp;win&nbsp;then<br/>response.write&nbsp;&#34;你赢了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>if&nbsp;loss&nbsp;then<br/>response.write&nbsp;&#34;对不起，你输了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>　<br/>&#39;列向判断&#34;|&#34;<br/>for&nbsp;j=1&nbsp;to&nbsp;15<br/>win=false<br/>loss=false<br/>five_me=0<br/>five_he=0<br/>for&nbsp;i=1&nbsp;to&nbsp;15<br/>if&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr<br/>(j))=m&nbsp;then<br/>five_me=five_me+1<br/>five_he=0<br/>elseif&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;<br/>cstr(j))=h&nbsp;then<br/>five_me=0<br/>five_he=five_he+1<br/>else<br/>five_me=0<br/>five_he=0<br/>end&nbsp;if<br/>if&nbsp;five_me=5&nbsp;then<br/>win=true<br/>loss=false<br/>exit&nbsp;for<br/>elseif&nbsp;five_he=5&nbsp;then<br/>win=false<br/>loss=true<br/>exit&nbsp;for<br/>end&nbsp;if<br/>next<br/>if&nbsp;win&nbsp;o&#114;&nbsp;loss&nbsp;then&nbsp;exit&nbsp;for<br/>next<br/>if&nbsp;win&nbsp;then<br/>response.write&nbsp;&#34;你赢了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>if&nbsp;loss&nbsp;then<br/>response.write&nbsp;&#34;对不起，你输了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>　<br/>&#39;斜向判断&#34;/&#34;<br/>for&nbsp;i=1&nbsp;to&nbsp;11<br/>win=false<br/>loss=false<br/>five_me=0<br/>five_he=0<br/>for&nbsp;j=i+4&nbsp;to&nbsp;1&nbsp;step&nbsp;-1<br/>if&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(j)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr<br/>(i+5-j))=m&nbsp;then<br/>five_me=five_me+1<br/>five_he=0<br/>elseif&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(j)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;<br/>cstr(i+5-j))=h&nbsp;then<br/>five_me=0<br/>five_he=five_he+1<br/>else<br/>five_me=0<br/>five_he=0<br/>end&nbsp;if<br/>if&nbsp;five_me=5&nbsp;then<br/>win=true<br/>loss=false<br/>exit&nbsp;for<br/>elseif&nbsp;five_he=5&nbsp;then<br/>win=false<br/>loss=true<br/>exit&nbsp;for<br/>end&nbsp;if<br/>next<br/>if&nbsp;win&nbsp;o&#114;&nbsp;loss&nbsp;then&nbsp;exit&nbsp;for<br/>next<br/>if&nbsp;win&nbsp;then<br/>response.write&nbsp;&#34;你赢了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>if&nbsp;loss&nbsp;then<br/>response.write&nbsp;&#34;对不起，你输了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>　<br/>&#39;斜向判断&#34;\&#34;<br/>for&nbsp;i=1&nbsp;to&nbsp;11<br/>win=false<br/>loss=false<br/>five_me=0<br/>five_he=0<br/>for&nbsp;j=12-i&nbsp;to&nbsp;15<br/>if&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(13-i-j)&nbsp;&amp;&nbsp;&#34;_&#34;<br/>&amp;&nbsp;cstr(j))=m&nbsp;then<br/>five_me=five_me+1<br/>five_he=0<br/>elseif&nbsp;application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(13-i-j)<br/>&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(j))=h&nbsp;then<br/>five_me=0<br/>five_he=five_he+1<br/>else<br/>five_me=0<br/>five_he=0<br/>end&nbsp;if<br/>if&nbsp;five_me=5&nbsp;then<br/>win=true<br/>loss=false<br/>exit&nbsp;for<br/>elseif&nbsp;five_he=5&nbsp;then<br/>win=false<br/>loss=true<br/>exit&nbsp;for<br/>end&nbsp;if<br/>next<br/>if&nbsp;win&nbsp;o&#114;&nbsp;loss&nbsp;then&nbsp;exit&nbsp;for<br/>next<br/>if&nbsp;win&nbsp;then<br/>response.write&nbsp;&#34;你赢了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>if&nbsp;loss&nbsp;then<br/>response.write&nbsp;&#34;对不起，你输了！&#34;<br/>application(application(&#34;first&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>application(application(&#34;second&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)))=false<br/>end&nbsp;if<br/>%＞<br/>＜/body＞<br/>＜/html＞<br/>如果某点没有棋子，则加上一个超连接，根据擂主与攻擂手的区别放上一个不同颜色的棋子。最后的一段是用来判断输与赢，分为横，列和两个斜线方向。具体内容看一下就可以明白。<br/>最后要说的一点就是global.asa&nbsp;，这是站点上的一个核心文件，为了在退出棋局后，将位置留给别人，需要在sesison_onend中加入代码进行处理，如下：<br/><br/>＜script&nbsp;language=vbscript&nbsp;runat&nbsp;=&nbsp;server＞<br/>sub&nbsp;application_onstart<br/>session.timeout=1<br/>end&nbsp;sub<br/>sub&nbsp;session_onstart<br/>if&nbsp;application(&#34;num&#34;)=&#34;&#34;&nbsp;then<br/>application(&#34;num&#34;)=0<br/>end&nbsp;if<br/>application(&#34;num&#34;)=application(&#34;num&#34;)+1<br/>end&nbsp;sub<br/>＜/script＞<br/>　<br/>＜script&nbsp;language=vbscript&nbsp;runat&nbsp;=&nbsp;server＞<br/>sub&nbsp;session_onend<br/>if&nbsp;application(&#34;num&#34;)=&#34;&#34;&nbsp;then<br/>application(&#34;num&#34;)=0<br/>end&nbsp;if<br/>application(&#34;num&#34;)=application(&#34;num&#34;)-1<br/>　<br/>if&nbsp;application(&#34;first1&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;first1&#34;)=&#34;&#34;<br/>elseif&nbsp;application(&#34;second1&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;second1&#34;)=&#34;&#34;<br/>　<br/>elseif&nbsp;application(&#34;first2&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;first2&#34;)=&#34;&#34;<br/>elseif&nbsp;application(&#34;second2&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;second2&#34;)=&#34;&#34;<br/>　<br/>elseif&nbsp;application(&#34;first3&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;first3&#34;)=&#34;&#34;<br/>elseif&nbsp;application(&#34;second3&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;second3&#34;)=&#34;&#34;<br/>　<br/>elseif&nbsp;application(&#34;first4&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;first4&#34;)=&#34;&#34;<br/>elseif&nbsp;application(&#34;second4&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;second4&#34;)=&#34;&#34;<br/>　<br/>elseif&nbsp;application(&#34;first5&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;first5&#34;)=&#34;&#34;<br/>elseif&nbsp;application(&#34;second5&#34;)=session(&#34;nice&#34;)&nbsp;then<br/>application(&#34;second5&#34;)=&#34;&#34;<br/>end&nbsp;if<br/>for&nbsp;i=1&nbsp;to&nbsp;15<br/>for&nbsp;j=1&nbsp;to&nbsp;15<br/>application(&#34;color&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr<br/>(J))=&#34;&#34;<br/>application(&#34;pos&#34;&nbsp;&amp;&nbsp;session(&#34;class&#34;)&nbsp;&amp;&nbsp;cstr(i)&nbsp;&amp;&nbsp;&#34;_&#34;&nbsp;&amp;&nbsp;cstr(j))=&#34;&#34;<br/>next<br/>next<br/>application(session(&#34;nice&#34;))=&#34;&#34;<br/>end&nbsp;sub<br/>＜/script＞<br/>以上就是几个主要的文件，大家可以一试。什么，想做围棋？把棋盘改一下就可以了。<br/>祝大家成功]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=54</link>
			<title><![CDATA[用dom4j建立,修改XML文档,并解决格式化输出和中文问题]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Wed,12 Sep 2007 14:53:30 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=54</guid>	
		<description><![CDATA[&lt;books&gt;<br/>&nbsp;&nbsp;&lt;!--This&nbsp;is&nbsp;a&nbsp;test&nbsp;for&nbsp;dom4j,&nbsp;holen,&nbsp;2004.9.11--&gt;<br/>&nbsp;&nbsp;&lt;book&nbsp;show=&#34;no&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Dom4j&nbsp;Tutorials&lt;/title&gt;<br/>&nbsp;&nbsp;&lt;/book&gt;<br/>&nbsp;&nbsp;&lt;book&nbsp;show=&#34;no&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Lucene&nbsp;Studing&lt;/title&gt;<br/>&nbsp;&nbsp;&lt;/book&gt;<br/>&nbsp;&nbsp;&lt;book&nbsp;show=&#34;no&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Lucene&nbsp;in&nbsp;Action&lt;/title&gt;<br/>&nbsp;&nbsp;&lt;/book&gt;<br/>&nbsp;&nbsp;&lt;owner&gt;O&#39;Reilly&lt;/owner&gt;<br/>&lt;/books&gt;<br/><br/>&nbsp;---------------------<br/>package&nbsp;com.holen.dom4j;<br/><br/>&nbsp;<br/><br/>import&nbsp;java.io.File;<br/><br/>import&nbsp;java.io.FileWriter;<br/><br/>import&nbsp;java.util.Iterator;<br/><br/>import&nbsp;java.util.List;<br/><br/>&nbsp;<br/><br/>import&nbsp;o&#114;g.dom4j.Attribute;<br/><br/>import&nbsp;o&#114;g.dom4j.Document;<br/><br/>import&nbsp;o&#114;g.dom4j.DocumentHelper;<br/><br/>import&nbsp;o&#114;g.dom4j.Element;<br/><br/>import&nbsp;o&#114;g.dom4j.io.OutputFormat;<br/><br/>import&nbsp;o&#114;g.dom4j.io.SAXReader;<br/><br/>import&nbsp;o&#114;g.dom4j.io.XMLWriter;<br/><br/>&nbsp;<br/><br/>/**<br/><br/>&nbsp;*&nbsp;@author&nbsp;Holen&nbsp;Chen<br/><br/>&nbsp;*/<br/><br/>public&nbsp;class&nbsp;Dom4jDemo&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Dom4jDemo()&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;建立一个XML文档,文档名由输入参数决定<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filename&nbsp;需建立的文件名<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;返回操作结果,&nbsp;0表失败,&nbsp;1表成功<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;cr&#101;ateXMLFile(String&nbsp;filename){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;返回操作结果,&nbsp;0表失败,&nbsp;1表成功&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;returnValue&nbsp;=&nbsp;0;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;建立document对象&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;=&nbsp;DocumentHelper.cr&#101;ateDocument();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;建立XML文档的根books&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;booksElement&nbsp;=&nbsp;document.addElement(&#34;books&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;加入一行注释&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;booksElement.addComment(&#34;This&nbsp;is&nbsp;a&nbsp;test&nbsp;for&nbsp;dom4j,&nbsp;holen,&nbsp;2004.9.11&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;加入第一个book节点&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;bookElement&nbsp;=&nbsp;booksElement.addElement(&#34;book&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;加入show参数内容&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bookElement.addAttribute(&#34;show&#34;,&#34;yes&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;加入title节点&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;titleElement&nbsp;=&nbsp;bookElement.addElement(&#34;title&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;为title设置内容&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(&#34;Dom4j&nbsp;Tutorials&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;类似的完成后两个book&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bookElement&nbsp;=&nbsp;booksElement.addElement(&#34;book&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bookElement.addAttribute(&#34;show&#34;,&#34;yes&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement&nbsp;=&nbsp;bookElement.addElement(&#34;title&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(&#34;Lucene&nbsp;Studing&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bookElement&nbsp;=&nbsp;booksElement.addElement(&#34;book&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bookElement.addAttribute(&#34;show&#34;,&#34;no&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement&nbsp;=&nbsp;bookElement.addElement(&#34;title&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(&#34;Lucene&nbsp;in&nbsp;Action&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;加入owner节点&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;ownerElement&nbsp;=&nbsp;booksElement.addElement(&#34;owner&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ownerElement.setText(&#34;O&#39;Reilly&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;将document中的内容写入文件中&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter&nbsp;writer&nbsp;=&nbsp;new&nbsp;XMLWriter(new&nbsp;FileWriter(new&nbsp;File(filename)));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(document);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.close();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;执行成功,需返回1&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnValue&nbsp;=&nbsp;1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(Exception&nbsp;ex){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;returnValue;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;修改XML文件中内容,并另存为一个新文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;重点掌握dom4j中如何添加节点,修改节点,删除节点<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filename&nbsp;修改对象文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;newfilename&nbsp;修改后另存为该文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;返回操作结果,&nbsp;0表失败,&nbsp;1表成功<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;ModiXMLFile(String&nbsp;filename,String&nbsp;newfilename){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;returnValue&nbsp;=&nbsp;0;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXReader&nbsp;saxReader&nbsp;=&nbsp;new&nbsp;SAXReader();&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;=&nbsp;saxReader.read(new&nbsp;File(filename));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;修改内容之一:&nbsp;如果book节点中show参数的内容为yes,则修改成no&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;先用xpath查找对象&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;=&nbsp;document.sel&#101;ctNodes(&#34;/books/book/@show&#34;&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;iter&nbsp;=&nbsp;list.iterator();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(iter.hasNext()){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attribute&nbsp;attribute&nbsp;=&nbsp;(Attribute)iter.next();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(attribute.getValue().equals(&#34;yes&#34;)){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute.setValue(&#34;no&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;修改内容之二:&nbsp;把owner项内容改为Tshinghua<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个参数type<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;=&nbsp;document.sel&#101;ctNodes(&#34;/books/owner&#34;&nbsp;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iter&nbsp;=&nbsp;list.iterator();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(iter.hasNext()){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;ownerElement&nbsp;=&nbsp;(Element)iter.next();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ownerElement.setText(&#34;Tshinghua&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;dateElement&nbsp;=&nbsp;ownerElement.addElement(&#34;date&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateElement.setText(&#34;2004-09-11&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateElement.addAttribute(&#34;type&#34;,&#34;Gregorian&nbsp;calendar&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;修改内容之三:&nbsp;若title内容为Dom4j&nbsp;Tutorials,则删除该节点&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;=&nbsp;document.sel&#101;ctNodes(&#34;/books/book&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iter&nbsp;=&nbsp;list.iterator();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(iter.hasNext()){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;bookElement&nbsp;=&nbsp;(Element)iter.next();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;iterator&nbsp;=&nbsp;bookElement.elementIterator(&#34;title&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(iterator.hasNext()){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;titleElement=(Element)iterator.next();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(titleElement.getText().equals(&#34;Dom4j&nbsp;Tutorials&#34;)){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bookElement.remove(titleElement);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;将document中的内容写入文件中&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter&nbsp;writer&nbsp;=&nbsp;new&nbsp;XMLWriter(new&nbsp;FileWriter(new&nbsp;File(newfilename)));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(document);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.close();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;执行成功,需返回1&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnValue&nbsp;=&nbsp;1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(Exception&nbsp;ex){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(Exception&nbsp;ex){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;returnValue;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;格式化XML文档,并解决中文问题<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filename<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;formatXMLFile(String&nbsp;filename){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;returnValue&nbsp;=&nbsp;0;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXReader&nbsp;saxReader&nbsp;=&nbsp;new&nbsp;SAXReader();&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;=&nbsp;saxReader.read(new&nbsp;File(filename));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter&nbsp;output&nbsp;=&nbsp;null;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;格式化输出,类型IE浏览一样&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputFormat&nbsp;format&nbsp;=&nbsp;OutputFormat.cr&#101;atePrettyPrint();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;指定XML字符集编码&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format.setEncoding(&#34;GBK&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;=&nbsp;new&nbsp;XMLWriter(new&nbsp;FileWriter(new&nbsp;File(filename)),format);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.write(document);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;执行成功,需返回1&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnValue&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(Exception&nbsp;ex){<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;returnValue;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dom4jDemo&nbsp;temp&nbsp;=&nbsp;new&nbsp;Dom4jDemo();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(temp.cr&#101;ateXMLFile(&#34;d://holen.xml&#34;));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(temp.ModiXMLFile(&#34;d://holen.xml&#34;,&#34;d://holen2.xml&#34;));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(temp.formatXMLFile(&#34;d://holen2.xml&#34;));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>}<br/><br/>&nbsp;<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=53</link>
			<title><![CDATA[Log4j基本知识]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Tue,11 Sep 2007 22:52:51 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=53</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log4j可以更自如控制日志信息。<br/><br/>Log4j简介&nbsp;<br/>第1章.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log4j&nbsp;的优点<br/><br/>Log4j是Apache的一个开放源代码项目，通过使用Log4j，我们可以控制日志信息输送的；我们也可以控制每一条日志的输出格式；通过定义每一条日志信息的级别，我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是，这些可以通过一个配置文件来灵活地进行配置，而不需要修改应用的代码。&nbsp;<br/>log4j的好处在于：&nbsp;<br/>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过修改配置文件，就可以决定log信息的目的地——控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX&nbsp;Syslog守护进程等&nbsp;<br/>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过修改配置文件，可以定义每一条日志信息的级别，从而控制是否输出。在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码（System.out.println(......)等)。&nbsp;<br/>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用log4j，需要整个系统有一个统一的log机制，有利于系统的规划。&nbsp;<br/><br/>第2章.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置文件<br/><br/>Log4j由三个重要的组件构成：日志信息的优先级，日志信息的输出目的地，日志信息的输出格式。日志信息的优先级从高到低有FATAL、ERROR、WARN、INFO、DEBUG，分别用来指定这条日志信息的重要程度；日志信息的输出目的地指定了日志将打印到控制台还是文件中；而输出格式则控制了日志信息的显示内容。&nbsp;<br/>2.1.&nbsp;&nbsp;&nbsp;日志信息的优先级<br/><br/>分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。&nbsp;<br/>Log4j建议只使用四个级别，优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别，您可以控制到应用程序中相应级别的日志信息的开关。&nbsp;<br/>假如在一个级别为q的Logger中发生一个级别为p的日志请求，如果p&gt;=q,那么请求将被启用。这是Log4j的核心原则。&nbsp;<br/>比如在这里定义了INFO级别，则应用程序中所有DEBUG级别的日志信息将不被打印出来；&nbsp;<br/><br/>2.2.&nbsp;&nbsp;&nbsp;输出源的使用<br/><br/>有选择的能用或者禁用日志请求仅仅是Log4j的一部分功能。Log4j允许日志请求被输出到多个输出源。用Log4j的话说，一个输出源被称做一个Appender。&nbsp;<br/>Appender包括console（控制台）,&nbsp;files（文件）,&nbsp;GUI&nbsp;components（图形的组件）,&nbsp;remote&nbsp;socket&nbsp;servers（socket&nbsp;服务）,&nbsp;JMS（java信息服务）,&nbsp;NT&nbsp;Event&nbsp;Loggers（NT的事件日志）,&nbsp;and&nbsp;remote&nbsp;UNIX&nbsp;Syslog&nbsp;daemons（远程UNIX的后台日志服务）。它也可以做到异步记录。&nbsp;<br/>一个logger可以设置超过一个的appender。&nbsp;<br/>用addAppender&nbsp;方法添加一个appender到一个给定的logger。对于一个给定的logger它每个生效的日志请求都被转发到该logger所有的appender上和该logger的父辈logger的appender上。&nbsp;<br/>2.2.1.&nbsp;&nbsp;ConsoleAppender<br/><br/>如果使用ConsoleAppender，那么log信息将写到Console。效果等同于直接把信息打印到System.out上了。&nbsp;<br/>2.2.2.&nbsp;&nbsp;FileAppender<br/><br/>使用FileAppender，那么log信息将写到指定的文件中。这应该是比较经常使用到的情况。&nbsp;<br/>相应地，在配置文件中应该指定log输出的文件名。如下配置指定了log文件名为dglog.txt&nbsp;<br/>log4j.appender.A2.File=dglog.txt&nbsp;<br/>注意将A2替换为具体配置中Appender的别名。&nbsp;<br/>2.2.3.&nbsp;&nbsp;DailyRollingAppender<br/><br/>使用FileAppender可以将log信息输出到文件中，但是如果文件太大了读起来就不方便了。这时就可以使用DailyRollingAppender。DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。配置文件就会每天产生一个log文件，每个log文件只记录当天的log信息：&nbsp;<br/>log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender&nbsp;<br/>log4j.appender.A2.file=dglog&nbsp;<br/>log4j.appender.A2.DatePattern=&#39;.&#39;yyyy-MM-dd&nbsp;<br/>log4j.appender.A2.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A2.layout.ConversionPattern=&nbsp;%5r&nbsp;%-5p&nbsp;%c{2}&nbsp;-&nbsp;%m%n&nbsp;<br/>2.2.4.&nbsp;&nbsp;o&#114;g.apache.log4j.RollingFileAppender<br/><br/>文件大小到达指定尺寸的时候产生一个新的文件。&nbsp;<br/>log4j.appender.R=org.apache.log4j.RollingFileAppender&nbsp;<br/>log4j.appender.R.File=&nbsp;../logs/dglog.log&nbsp;<br/>#&nbsp;Control&nbsp;the&nbsp;maximum&nbsp;log&nbsp;file&nbsp;size&nbsp;<br/>log4j.appender.R.MaxFileSize=100KB&nbsp;<br/>#&nbsp;Archive&nbsp;log&nbsp;files&nbsp;(one&nbsp;backup&nbsp;file&nbsp;here)&nbsp;<br/>log4j.appender.R.MaxBackupIndex=1&nbsp;<br/>log4j.appender.R.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.R.layout.ConversionPattern=%p&nbsp;%t&nbsp;%c&nbsp;-&nbsp;%m%n&nbsp;<br/>这个配置文件指定了输出源R，是一个轮转日志文件。最大的文件是100KB，当一个日志文件达到最大尺寸时，Log4J会自动把example.log重命名为dglog.log.1，然后重建一个新的dglog.log文件，依次轮转。&nbsp;<br/><br/>2.2.5.&nbsp;&nbsp;o&#114;g.apache.log4j.WriterAppender<br/><br/>将日志信息以流格式发送到任意指定的地方。&nbsp;<br/><br/>2.3.&nbsp;&nbsp;Layout的配置<br/><br/>Layout指定了log信息输出的样式。&nbsp;<br/>2.3.1.&nbsp;&nbsp;布局样式<br/><br/>o&#114;g.apache.log4j.HTMLLayout（以HTML表格形式布局），&nbsp;<br/>o&#114;g.apache.log4j.PatternLayout（可以灵活地指定布局模式），&nbsp;<br/>o&#114;g.apache.log4j.SimpleLayout（包含日志信息的级别和信息字符串），&nbsp;<br/>o&#114;g.apache.log4j.TTCCLayout（包含日志产生的时间、线程、类别等等信息）&nbsp;<br/>2.3.2.&nbsp;&nbsp;格式<br/><br/>%m&nbsp;输出代码中指定的消息&nbsp;<br/>%p&nbsp;输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL&nbsp;<br/>%r&nbsp;输出自应用启动到输出该log信息耗费的毫秒数&nbsp;<br/>%c&nbsp;输出所属的类目，通常就是所在类的全名&nbsp;<br/>%t&nbsp;输出产生该日志事件的线程名&nbsp;<br/>%n&nbsp;输出一个回车换行符，Windows平台为&#34;rn&#34;，Unix平台为&#34;n&#34;&nbsp;<br/>%d&nbsp;输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy&nbsp;MMM&nbsp;dd&nbsp;HH:mm:ss,SSS}，输出类似：2002年10月18日&nbsp;22：10：28，921&nbsp;<br/>%l&nbsp;输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(Test&nbsp;Log4.java:10)&nbsp;<br/><br/>2.3.3.&nbsp;&nbsp;例子<br/><br/>例子1：显示日期和log信息&nbsp;<br/>log4j.appender.A2.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd&nbsp;HH:mm:ss,SSS}&nbsp;%m%n&nbsp;<br/>打印的信息是：&nbsp;<br/>2002-11-12&nbsp;11:49:42,866&nbsp;Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;Role&nbsp;Wh&#101;re&nbsp;1=1&nbsp;o&#114;der&nbsp;by&nbsp;cr&#101;ateDate&nbsp;desc&nbsp;<br/><br/>例子2：显示日期，log发生地方和log信息&nbsp;<br/>log4j.appender.A2.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd&nbsp;HH:mm:ss,SSS}&nbsp;%l&nbsp;&#34;#&#34;&nbsp;%m%n&nbsp;<br/>2002-11-12&nbsp;11:51:46,313&nbsp;cn.net.unet.weboa.system.dao.RoleDAO.sel&#101;ct(RoleDAO.java:409)&nbsp;&#34;#&#34;&nbsp;<br/>Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;Role&nbsp;Wh&#101;re&nbsp;1=1&nbsp;o&#114;der&nbsp;by&nbsp;cr&#101;ateDate&nbsp;desc&nbsp;<br/>&nbsp;&nbsp;<br/>例子3：显示log级别,时间,调用方法,log信息&nbsp;<br/>log4j.appender.A2.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A2.layout.ConversionPattern=[%-5p]&nbsp;%d{yyyy-MM-dd&nbsp;HH:mm:ss,SSS}&nbsp;<br/>method:%l%n%m%n&nbsp;<br/>log信息:&nbsp;<br/>[DEBUG]&nbsp;2002-11-12&nbsp;12:00:57,376&nbsp;<br/>method:cn.net.unet.weboa.system.dao.RoleDAO.sel&#101;ct(RoleDAO.java:409)&nbsp;<br/>Sel&#101;ct&nbsp;*&nbsp;FROM&nbsp;Role&nbsp;Wh&#101;re&nbsp;1=1&nbsp;o&#114;der&nbsp;by&nbsp;cr&#101;ateDate&nbsp;desc&nbsp;<br/><br/>2.4.&nbsp;&nbsp;&nbsp;配置文件的例子:<br/><br/>log4j.rootLogger=DEBUG&nbsp;<br/>#将DAO层log记录到DAOLog,allLog中&nbsp;<br/>log4j.logger.DAO=DEBUG,A2,A4&nbsp;<br/>#将逻辑层log记录到BusinessLog,allLog中&nbsp;<br/>log4j.logger.Businesslog=DEBUG,A3,A4&nbsp;<br/><br/>#A1--打印到屏幕上&nbsp;<br/>log4j.appender.A1=org.apache.log4j.ConsoleAppender&nbsp;<br/>log4j.appender.A1.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A1.layout.ConversionPattern=%-5p&nbsp;[%t]&nbsp;%37c&nbsp;%3x&nbsp;-&nbsp;%m%n&nbsp;<br/><br/>#A2--打印到文件DAOLog中--专门为DAO层服务&nbsp;<br/>log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender&nbsp;<br/>log4j.appender.A2.file=DAOLog&nbsp;<br/>log4j.appender.A2.DatePattern=&#39;.&#39;yyyy-MM-dd&nbsp;<br/>log4j.appender.A2.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A2.layout.ConversionPattern=[%-5p]&nbsp;%d{yyyy-MM-dd&nbsp;HH:mm:ss,SSS}&nbsp;<br/>method:%l%n%m%n&nbsp;<br/><br/>#A3--打印到文件BusinessLog中--专门记录逻辑处理层服务log信息&nbsp;<br/>log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender&nbsp;<br/>log4j.appender.A3.file=BusinessLog&nbsp;<br/>log4j.appender.A3.DatePattern=&#39;.&#39;yyyy-MM-dd&nbsp;<br/>log4j.appender.A3.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A3.layout.ConversionPattern=[%-5p]&nbsp;%d{yyyy-MM-dd&nbsp;HH:mm:ss,SSS}&nbsp;<br/>method:%l%n%m%n&nbsp;<br/><br/>#A4--打印到文件alllog中--记录所有log信息&nbsp;<br/>log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender&nbsp;<br/>log4j.appender.A4.file=alllog&nbsp;<br/>log4j.appender.A4.DatePattern=&#39;.&#39;yyyy-MM-dd&nbsp;<br/>log4j.appender.A4.layout=org.apache.log4j.PatternLayout&nbsp;<br/>log4j.appender.A4.layout.ConversionPattern=[%-5p]&nbsp;%d{yyyy-MM-dd&nbsp;HH:mm:ss,SSS}&nbsp;<br/>method:%l%n%m%n&nbsp;<br/><br/><br/>第3章.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;API使用<br/><br/>log4j使用步骤有3个：&nbsp;<br/>3.1.&nbsp;&nbsp;&nbsp;初始化<br/>3.1.1.&nbsp;&nbsp;Tomcat下的初始化<br/><br/>默认的Log4j&nbsp;initialization典型的应用是在web-server&nbsp;环境下。在tomcat3.x和tomcat4.x下，你应该将配置文件Log4j.properties放在你的web应用程序的WEB-INF/classes&nbsp;目录下。&nbsp;<br/>Log4j将发现属性文件，并且以此初始化。这是使它工作的最容易的方法。&nbsp;<br/>你也可以选择在运行tomcat前设置系统属性Log4j.configuration&nbsp;。对于tomcat&nbsp;3.x，TOMCAT_OPTS&nbsp;系统变量是用来设置命令行的选项。对于tomcat4.0，用系统环境变量CATALINA_OPTS&nbsp;代替了TOMCAT_OPTS。&nbsp;<br/>UNIX&nbsp;命令行&nbsp;<br/>export&nbsp;TOMCAT_OPTS=&#34;-DLog4j.configuration=foobar.txt&#34;&nbsp;<br/>告诉Log4j用文件foobar.txt作为默认的配置文件。这个文件应该放在WEB-INF/classes&nbsp;目录下。这个文件将被PropertyConfigurator所读。每个web-application将用不同的默认配置文件，因为每个文件是和它的web-application&nbsp;相关的。&nbsp;<br/>1.&nbsp;export&nbsp;TOMCAT_OPTS=&#34;-DLog4j.debug&nbsp;-DLog4j.configuration=foobar.xml&#34;&nbsp;export&nbsp;TOMCAT_OPTS=&#34;-DLog4j.debug&nbsp;-DLog4j.configuration=foobar.xml&#34;&nbsp;<br/>告诉Log4j输出Log4j-internal的调试信息，并且用foobar.xml作为默认的配置文件。这个文件应该放在你的web-application的WEB-INF/classes&nbsp;目录下。因为有.xml的扩展名，它将被DOMConfigurator所读。每个web-application将用不同的默认配置文件。因为每个文件都和它所在的web-application&nbsp;相关的。&nbsp;<br/>2.&nbsp;set&nbsp;TOMCAT_OPTS=-DLog4j.configuration=foobar.lcf&nbsp;<br/>-DLog4j.configuratorClass=com.foo.BarConfigurator&nbsp;<br/>告诉Log4j用文件foobar.lcf作为默认的配置文件。这个文件应该放在你的web-application的WEB-INF/classes&nbsp;目录下。因为定义了Log4j.configuratorClass&nbsp;系统属性，文件将用自定义的com.foo.barconfigurator类来解析。每个web-application将用不同的默认配置文件。因为每个文件都和它所在的web-application&nbsp;相关的。&nbsp;<br/>3.&nbsp;set&nbsp;TOMCAT_OPTS=-DLog4j.configuration=file:/c:/foobar.lcf&nbsp;set&nbsp;TOMCAT_OPTS=-DLog4j.configuration=file:/c:/foobar.lcf&nbsp;<br/>告诉Log4j用文件foobar.lcf作为默认的配置文件。这个配置文件用URL&nbsp;file:/c:/foobar.lcf定义了全路径名。这样同样的配置文件将被所有的web-application所用。&nbsp;<br/>不同的web-application将通过它们自己的类装载器来装载Log4j。这样，每个Log4j的环境将独立的运作，而没有任何的相互同步。例如：在多个web-application中定义了完全相同的输出源的FileAppenders将尝试写同样的文件。结果好象是缺乏安全性的。你必须确保每个不同的web-application的Log4j配置没有用到同样的系统资源。&nbsp;<br/>3.1.2.&nbsp;&nbsp;Servlet&nbsp;的初始化<br/><br/>用一个特别的servlet来做Log4j的初始化也是可以的。如下是一个例子：&nbsp;<br/>public&nbsp;class&nbsp;Log4jInit&nbsp;extends&nbsp;HttpServlet&nbsp;{&nbsp;<br/>public&nbsp;void&nbsp;init()&nbsp;{&nbsp;<br/>String&nbsp;prefix&nbsp;=&nbsp;getServletContext().getRealPath(&#34;/&#34;);&nbsp;<br/>String&nbsp;file&nbsp;=&nbsp;getInitParameter(&#34;Log4j-init-file&#34;);&nbsp;<br/>if(file&nbsp;!=&nbsp;null)&nbsp;{&nbsp;<br/>PropertyConfigurator.configure(prefix+file);&nbsp;<br/>}&nbsp;<br/>}&nbsp;<br/>public&nbsp;void&nbsp;doGet(HttpServletRequest&nbsp;req,&nbsp;HttpServletResponse&nbsp;res)&nbsp;{&nbsp;<br/>}&nbsp;<br/>}&nbsp;<br/><br/>在web.xml中定义随后的servlet为你的web-application。&nbsp;<br/>&lt;servlet&gt;&nbsp;<br/>&lt;servlet-name&gt;Log4j-init&lt;/servlet-name&gt;&nbsp;<br/>&lt;servlet-class&gt;xx.xx.Log4jInit&lt;/servlet-class&gt;&nbsp;<br/>&lt;init-param&gt;&nbsp;<br/>&lt;param-name&gt;Log4j-init-file&lt;/param-name&gt;&nbsp;<br/>&lt;param-value&gt;WEB-INF/classes/Log4j.properties&lt;/param-value&gt;&nbsp;<br/>&lt;/init-param&gt;&nbsp;<br/>&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;&nbsp;<br/>&lt;/servlet&gt;&nbsp;<br/>写一个初始化的servlet是最有弹性的初始化Log4j的方法。代码中没有任何限制，你可以在servlet的init方法中定义它。&nbsp;<br/>3.2.&nbsp;&nbsp;&nbsp;根据配置文件初始化log4j<br/><br/>log4j可以使用3中配置器来初始化：BasicConfigurator,DOMConfigurator,PropertyConfigurator&nbsp;<br/>其语法为：&nbsp;<br/>BasicConfigurator.configure&nbsp;()：&nbsp;自动快速地使用缺省Log4j环境。&nbsp;<br/>PropertyConfigurator.configure&nbsp;(&nbsp;String&nbsp;configFilename)&nbsp;：读取使用Java的特性文件编写的配置文件。&nbsp;<br/>DOMConfigurator.configure&nbsp;(&nbsp;String&nbsp;filename&nbsp;)&nbsp;：读取XML形式的配置文件。&nbsp;<br/>这里用的是PropertyConfigurator。使用PropertyConfigurator适用于所有的系统。如下的语句：&nbsp;<br/>PropertyConfigurator.configure(&#34;log4j.properties&#34;);&nbsp;<br/>就以log4j.properties为配置文件初始化好了log4j环境。&nbsp;<br/>注意一点：这个语句只需要在系统启动的时候执行一次。例如，在ActionServlet的init()方法中调用一次。&nbsp;<br/>public&nbsp;class&nbsp;ActionServlet&nbsp;extends&nbsp;HttpServlet{&nbsp;<br/>...&nbsp;<br/>/**&nbsp;<br/>*&nbsp;Initialize&nbsp;global&nbsp;variables&nbsp;<br/>*/&nbsp;<br/>public&nbsp;void&nbsp;init()&nbsp;throws&nbsp;ServletException&nbsp;{&nbsp;<br/>//&nbsp;初始化Action资源&nbsp;<br/>try{&nbsp;<br/>initLog4j();&nbsp;<br/>...&nbsp;<br/>}catch(IOException&nbsp;e){&nbsp;<br/>throw&nbsp;new&nbsp;ServletException(&#34;Load&nbsp;ActionRes&nbsp;is&nbsp;Error&#34;);&nbsp;<br/>}&nbsp;<br/>}&nbsp;<br/>...&nbsp;<br/>protected&nbsp;void&nbsp;initLog4j(){&nbsp;<br/>PropertyConfigurator.configure(&#34;log4j.properties&#34;);&nbsp;<br/>}&nbsp;<br/>...&nbsp;<br/>}//end&nbsp;class&nbsp;ActionServlet&nbsp;<br/><br/>3.3.&nbsp;&nbsp;&nbsp;在需要使用log4j的地方获取Logger实例<br/><br/>使用Log4j，首先就是获取日志记录器，这个记录器将负责控制日志信息。其语法为：&nbsp;<br/>public&nbsp;static&nbsp;Logger&nbsp;getLogger(&nbsp;String&nbsp;name)，&nbsp;<br/>通过指定的名字获得记录器，如果必要的话，则为这个名字创建一个新的记录器。Name一般取本类的名字，比如：&nbsp;<br/>static&nbsp;Logger&nbsp;logger&nbsp;=&nbsp;Logger.getLogger&nbsp;(&nbsp;ServerWithLog4j.class.getName&nbsp;()&nbsp;)&nbsp;;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log4j使得通过软件组件命名logger很容易。我们可以通过Logger的静态的初始化方法在每一个类里定义一个logger，令logger的名字等于类名的全局名，而实现logger的命名。这是一个实效的简单的定义一个logger的方法。因为日志输出带有产生日志的类的名字，这个命名策略使得我们更容易定位到一个日志信息的来源。虽然普通，但却是命名logger的常用策略之一。&nbsp;<br/>Log4j没有限制定义logger的可能。开发员可以自由的按照它们的意愿定义logger的名称。&nbsp;<br/>然而，以类的所在位置来命名Logger好象是目前已知的最好方法。&nbsp;<br/><br/>3.4.&nbsp;&nbsp;&nbsp;使用Logger对象的debug,info,fatal...方法<br/><br/>log.debug(&#34;it&nbsp;is&nbsp;the&nbsp;debug&nbsp;info&#34;);&nbsp;<br/><br/>第4章.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;优化<br/><br/>一个经常引用的依靠于logging的参数是可以计算的花费。这是一个合理的概念，一个适度的应用程序可能产生成千上万个日志请求。许多努力花在测量和调试logging的优化上。Log4j要求快速和弹性：速度最重要，弹性是其次。&nbsp;<br/>4.1.&nbsp;&nbsp;&nbsp;日志为禁用时，日志的优化。<br/><br/>当日志被彻底的关闭，一个日志请求的花费等于一个方法的调用加上整数的比较时间。在233mhz的Pentium&nbsp;II&nbsp;机器上这个花费通常在5-50纳秒之间。&nbsp;<br/>然而，方法调用包括参数构建的隐藏花费。&nbsp;<br/>例如，对于logger&nbsp;cat，logger.debug(&#34;Entry&nbsp;number:&nbsp;&#34;&nbsp;+&nbsp;i&nbsp;+&nbsp;&#34;&nbsp;is&nbsp;&#34;&nbsp;+&nbsp;String.valueOf(entry[i]));&nbsp;<br/>引起了构建信息参数的花费，例如，转化整数i和entry[i]到一个string，并且连接中间字符串，不管信息是否被输出。这个参数的构建花费可能是很高，它主要决定于被调用的参数的大小。&nbsp;<br/>避免参数构建的花费应如下，&nbsp;<br/>if(logger.isDebugEnabled())&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(&#34;result&nbsp;is&#34;&nbsp;+&nbsp;result&nbsp;);&nbsp;<br/>}&nbsp;<br/>如果logger的debug被关闭这将不会招致参数构建的花费。另一方面，如果logger是debug的话，它将产生两次判断&nbsp;logger是否能用的花费。一次是在debugenabled，一次是debug。这是无关紧要的，因为判断日志的能用&nbsp;只占日志实际花费时间的约1%。&nbsp;<br/>在Log4j里，日志请求在Logger&nbsp;类的实例里。Logger&nbsp;是一个类，而不是一个接口。这大量的减少了在方法调用上的弹性化的花费。&nbsp;<br/>当然用户采用预处理或编译时间技术去编译出所有的日志声明。这将导致完美的执行成效。然而因为二进制应用程序不包括任何的日志声明的结果，日志不可能对那个二进制程序开启。以我的观点，以这种较大的代价来换取较小的性能优化是不值得的。&nbsp;<br/><br/>4.2.&nbsp;&nbsp;&nbsp;当日志状态为启用时，日志的优化。<br/><br/>这是本质上的优化logger的层次。当日志状态为开，Log4j依然需要比较请求的级别与logger的级别。然而，&nbsp;logger可能没有被安排一个级别；它们将从它们的father继承。这样，在继承之前，logger可能需要搜索它的ancestor。&nbsp;<br/>这里有一个认真的努力使层次的搜索尽可能的快。例如，子logger仅仅连接到它的存在的father&nbsp;logger。&nbsp;<br/>在先前展示的BasicConfigurator&nbsp;例子中，名为com.foo.bar&nbsp;的logger是连接到跟根logger，因此绕过&nbsp;了不存在的logger&nbsp;com和com.foo。这将显著的改善执行的速度，特别是解析logger的层结构时。&nbsp;<br/>典型的层次结构的解析的花费是logger彻底关闭时的三倍。&nbsp;<br/><br/>4.3.&nbsp;&nbsp;&nbsp;日志信息的输出时，日志的优化。<br/><br/>这是主要花费在日志输出的格式化和发送它到它的输出源上。这里我们再一次的付出努力以使格式化执行的尽可能快。同appender一样。实际上典型的花费大约是100-300毫秒。&nbsp;<br/>详情看org.apache.log4.performance.Logging。&nbsp;<br/>虽然Log4j有许多特点，但是它的第一个设计目标还是速度。一些Log4j的组件已经被重写过很多次以改善性能。不过，投稿者经常提出了新的优化。你应该满意的知道，以SimpleLayout的配置执行测试已经展示了Log4j的输出同System.out.println一样快。&nbsp;]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=44</link>
			<title><![CDATA[Struts-config.xml配置文件讲解]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Sat,25 Aug 2007 21:03:07 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=44</guid>	
		<description><![CDATA[Struts的核心是struts-config.xml配置文件，在这个文件里描述了所有的Struts组件。在这里包括配置主要的组件及次要的组件，下面是struts-config.xml包含主要元素的内容：<br/><br/>一、&nbsp;&nbsp;&nbsp;&nbsp;struts-config.xml的主要元素：<br/>&lt;?xml&nbsp;version=”1.0”&nbsp;encoding=”ISO-8859-1”?&gt;<br/>&lt;!DOCTYPE&nbsp;struts-config&nbsp;PUBLIC&nbsp;&#34;-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;1.1//EN&#34;<br/>&#34;<a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd" target="_blank">http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd</a>&#34;;&gt;<br/>&lt;struts-config&gt;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&lt;data-sources&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/data-source&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/data-sources&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;form-beans&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form-bean&nbsp;/&nbsp;&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/form-beans&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;global-forwards&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;forward&nbsp;/&nbsp;&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/global-forwards&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;action-mappings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;/&nbsp;&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/action-mappings&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;controller&nbsp;/&nbsp;&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;message-resources&nbsp;/&nbsp;&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;plug-in&nbsp;/&gt;<br/><br/>&lt;/struts-config&gt;<br/>注意：以上各元素的顺序是非常重要的，你的struts-config.xml配置文件必须按照这个顺序进行配置，否则在你的容器启动的时候就会出错。<br/><br/>二、&nbsp;&nbsp;&nbsp;&nbsp;struts-config.xml的子元素：<br/>1．&lt;icon&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;它包含&lt;small-icon&nbsp;/&nbsp;&gt;及&lt;large-icon&nbsp;/&nbsp;&gt;，它的作用是图形化其父元素，&lt;small-icon/&gt;的内容是一个16x16的图像文件，而&lt;large-icon/&gt;的内容是一个32x32的图像文件。如下例子：<br/>&nbsp;&nbsp;&nbsp;&lt;icon&gt;<br/>&lt;small-icon&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/images/smalllogo.gif<br/>&lt;/small-icon&gt;<br/>&lt;large-icon&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/images/largelogo.gif<br/>&lt;/large-icon&gt;<br/>&lt;/icon&gt;<br/>2．&lt;display-name&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;它提供对父元素的短文字（short&nbsp;textual）描述信息，如下：<br/>&nbsp;&nbsp;&nbsp;&lt;display-name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short&nbsp;textual&nbsp;discription&nbsp;of&nbsp;its&nbsp;parent&nbsp;element<br/>&nbsp;&nbsp;&nbsp;&lt;/display-name&gt;<br/>3．&lt;description&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;它提供对父元素的完全（full-length&nbsp;textual）的描述信息，如下：<br/>&lt;description&gt;<br/>full-length&nbsp;textual&nbsp;discription&nbsp;of&nbsp;its&nbsp;parent&nbsp;element<br/>&lt;/description&gt;<br/>4．&lt;set-property&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它用来设置它的父元素中设定的JavaBean的属性值，它一般用在指定的GenericDataSource&nbsp;属性，扩展的ActionMappings以及扩展的&nbsp;global&nbsp;forwards。如下：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;property=&#34;name&nbsp;of&nbsp;bean&nbsp;property&#34;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>value=&#34;value&nbsp;of&nbsp;bean&nbsp;property&#34;&nbsp;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=&#34;driverClass&#34;&nbsp;value=&#34;org.gjt.mm.mysql.Driver&#34;&nbsp;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=&#34;user&#34;&nbsp;value=&#34;admin&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=&#34;maxCount&#34;&nbsp;value=&#34;4&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;minCount&#34;&nbsp;value=&#34;2&#34;/&gt;&nbsp;<br/>&lt;set-property&nbsp;property=&#34;password&#34;&nbsp;value=&#34;&#34;/&gt;&nbsp;<br/>&lt;set-property&nbsp;property=&#34;url&#34;&nbsp;value=&#34;jdbc:mysql://localhost:3306/struts&#34;/&gt;<br/><br/>三、&nbsp;&nbsp;&nbsp;&nbsp;配置JDBC数据源<br/>其配置形式如下：<br/>&lt;data-sources&gt;<br/>&lt;data-source&gt;<br/>&lt;set-property&nbsp;property=&#34;driverClass&#34;&nbsp;value=&#34;fully&nbsp;qualified&nbsp;path&nbsp;of&nbsp;JDBC&nbsp;driver&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;url&#34;&nbsp;value=&#34;data&nbsp;source&nbsp;URL&#34;/&gt;<br/>&lt;set-property&nbsp;property=”mincount”&nbsp;value=&#34;the&nbsp;minimum&nbsp;number&nbsp;of&nbsp;connections&nbsp;to&nbsp;open&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;password&#34;&nbsp;value=&#34;the&nbsp;password&nbsp;used&nbsp;to&nbsp;cr&#101;ate&nbsp;connections&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;user&#34;&nbsp;value=&#34;the&nbsp;username&nbsp;used&nbsp;to&nbsp;cr&#101;ate&nbsp;connections&#34;/&gt;<br/>&lt;/data-source&gt;<br/>&lt;/data-sources&gt;<br/>&lt;data-source&gt;的属性及其描述信息如下：<br/>属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描&nbsp;述&nbsp;信&nbsp;息<br/>Key&nbsp;&nbsp;&nbsp;&nbsp;绑定在ServletContext上的DataSource实例的索引键，若不设定则缺省为Action.DATA_SOURCE_KEY，如果在应用程序中有多于一个的DataSource，则必须设置Key的值。<br/>DriverClass&nbsp;&nbsp;&nbsp;&nbsp;所用的JDBC驱动类(必须的)如：com.microsoft.jdbc.sqlserver.SQLServerDriver<br/>url&nbsp;&nbsp;&nbsp;&nbsp;所用的JDBC的URL(必须的)如：jdbc:microsoft:sqlserver://xg088:1433<br/>MaxCount&nbsp;&nbsp;&nbsp;&nbsp;同时打开的最大连结数，缺省值为2(可选的)<br/>MinCount&nbsp;&nbsp;&nbsp;&nbsp;同时打开的最小连结数，缺省值为1(可选的)<br/>User&nbsp;&nbsp;&nbsp;&nbsp;连结到数据库的用户名(必须的)<br/>Password&nbsp;&nbsp;&nbsp;&nbsp;连结到数据库的密码(必须的)<br/>Description&nbsp;&nbsp;&nbsp;&nbsp;关于DataSource的描述信息(可选的)<br/>ReadOnly&nbsp;&nbsp;&nbsp;&nbsp;如果设为true，则表示该连结是只读的，缺省为false。(可选的)<br/>LoginTimeout&nbsp;&nbsp;&nbsp;&nbsp;创建连结的最大允许时间，以秒为单位。(可选的)<br/>AutoCommit&nbsp;&nbsp;&nbsp;&nbsp;如果为true，则每次execute之后会强制回滚。缺省为true。(可选的)<br/>举例说明：<br/>&lt;data-sources&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=”key”&nbsp;value=”&nbsp;value=&#34;WILEY_DATA_SOURCE&#34;&nbsp;/&gt;<br/>&lt;set-property&nbsp;property=&#34;driverClass&#34;&nbsp;value=&#34;org.gjt.mm.mysql.Driver&#34;&nbsp;/&gt;<br/>&lt;set-property&nbsp;property=&#34;url&#34;&nbsp;value=&#34;jdbc:mysql://localhost/wileyusers&#34;&nbsp;/&gt;<br/>&lt;set-property&nbsp;property=&#34;maxCount&#34;&nbsp;value=&#34;5&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;minCount&#34;&nbsp;value=&#34;1&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;user&#34;&nbsp;value=&#34;sa&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;password&#34;&nbsp;value=&#34;yourpassword&#34;/&gt;<br/>&lt;/data-source&gt;<br/>&lt;/data-sources&gt;<br/><br/>四、&nbsp;&nbsp;&nbsp;&nbsp;配置FormBean<br/>&lt;form-bean&nbsp;/&nbsp;&gt;用来定义将要绑定到Action的FormBean的实例。语法如下：<br/>&lt;form-beans&gt;<br/>&lt;form-bean&nbsp;name=&#34;name&nbsp;used&nbsp;to&nbsp;uniquely&nbsp;identify&nbsp;a&nbsp;FormBean&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=”fully&nbsp;qualified&nbsp;class&nbsp;name&nbsp;of&nbsp;FormBean&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form-beans&gt;<br/>例：<br/>&lt;form-beans&gt;<br/>&lt;form-bean&nbsp;name=&#34;lookupForm&#34;&nbsp;type=&#34;wiley.LookupForm&#34;&nbsp;/&gt;<br/>&lt;/form-beans&gt;<br/><br/>五、&nbsp;&nbsp;&nbsp;&nbsp;配置全局转发<br/>全局转发可以定义几个&lt;forward/&gt;子元素，struts首先会在&lt;action-mappings&gt;元素中找对应的&lt;forward&gt;，若找不到，则到全局转发配置中找。语法如下：<br/>&lt;global-forwards&gt;<br/>&lt;forward&nbsp;name=&#34;unique&nbsp;target&nbsp;identifier&#34;&nbsp;<br/>path=&#34;context-relative&nbsp;path&nbsp;to&nbsp;targetted&nbsp;resource&nbsp;&#34;/&gt;<br/>&lt;/global-forwards&gt;<br/>除了name及path属性之外，还有一个redirect属性，如果redirect设为true的时候，则用HttpServletResponse.sendRedirect()方法，否则用RequestDispatcher.forward()方法，缺省为false。<br/>注：如果为true，则用HttpServletResponse.sendRedirect()方法，此时存储在原来的HttpServletRequest中的值将会丢失。<br/>例子：<br/>&lt;global-forwards&gt;<br/>&lt;forward&nbsp;name=&#34;success&#34;&nbsp;path=&#34;/welcome.jsp&#34;/&gt;<br/>&lt;forward&nbsp;name=&#34;failure&#34;&nbsp;path=&#34;/index.jsp&#34;/&gt;<br/>&lt;/global-forwards&gt;<br/>六、&nbsp;&nbsp;&nbsp;&nbsp;配置&lt;action-mappings&gt;<br/>它可以定义几个&lt;action&nbsp;/&nbsp;&gt;子元素，它主要是定义Action实例到ActionServlet类中，语法如下：<br/>&lt;action-mappings&gt;<br/>&lt;action&nbsp;path=&#34;context-relative&nbsp;path&nbsp;mapping&nbsp;action&nbsp;to&nbsp;a&nbsp;request&#34;<br/>type=&#34;fully&nbsp;qualified&nbsp;class&nbsp;name&nbsp;of&nbsp;the&nbsp;Action&nbsp;class&#34;<br/>name=&#34;the&nbsp;name&nbsp;of&nbsp;the&nbsp;form&nbsp;bean&nbsp;bound&nbsp;to&nbsp;this&nbsp;Action&#34;&gt;<br/>&lt;forward&nbsp;name=&#34;forwardname1&#34;&nbsp;path=&#34;context-relative&nbsp;path&#34;/&gt;<br/>&nbsp;<br/>&lt;forward&nbsp;name=&#34;forwardname2&#34;&nbsp;path=&#34;context-relative&nbsp;path&#34;/&gt;<br/>&lt;/action&gt;<br/>&lt;/action-mappings&gt;<br/>&lt;action/&gt;属性及其描述信息如下：<br/>属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描&nbsp;述&nbsp;信&nbsp;息<br/>Path&nbsp;&nbsp;&nbsp;&nbsp;在浏览器的URL中输入的字符(必须的)<br/>Type&nbsp;&nbsp;&nbsp;&nbsp;连结到本映射的Action的全称(可选的)<br/>Name&nbsp;&nbsp;&nbsp;&nbsp;与本操作关联的Action&nbsp;Bean在&lt;form-bean/&gt;中定义name名(可选的)<br/>Scope&nbsp;&nbsp;&nbsp;&nbsp;指定ActionForm&nbsp;Bean的作用域(session和request)，缺省为session。(可选的)<br/>Input&nbsp;&nbsp;&nbsp;&nbsp;当Bean发生错误时返回的控制。(可选的)<br/>ClassName&nbsp;&nbsp;&nbsp;&nbsp;指定一个调用这个Action类的ActionMapping类的全名。缺省用org.apache.struts.action.ActionMapping，(可选的)<br/>Forward&nbsp;&nbsp;&nbsp;&nbsp;指定处理相应请求所对应的JSP页面。(可选的)<br/>Include&nbsp;&nbsp;&nbsp;&nbsp;如果没有forward的时候，它起forward的作用。(可选的)<br/>Validate&nbsp;&nbsp;&nbsp;&nbsp;若为true，则会调用ActionForm的validate()方法，否则不调用，缺省为true。（可选的）<br/>例子：<br/>&lt;action-mappings&gt;<br/>&lt;action&nbsp;path=&#34;/lookupAction&#34;&nbsp;<br/>type=&#34;wiley.LookupAction&#34;<br/>name=&#34;LookupForm&#34;<br/>scope=&#34;request&#34;<br/>validate=&#34;true&#34;<br/>input=&#34;/index.jsp&#34;&gt;<br/>&lt;forward&nbsp;name=&#34;success&#34;&nbsp;path=&#34;/quote.jsp&#34;/&gt;<br/>&lt;forward&nbsp;name=&#34;faliue&#34;&nbsp;path=&#34;/index.jsp&#34;/&gt;<br/>&lt;/action&gt;<br/>&lt;/action-mappings&gt;<br/><br/>七、&nbsp;&nbsp;&nbsp;&nbsp;配置RequestProcessor<br/>在struts-config.xml文件中用&lt;controller/&gt;子元素来定义RequestProcessor，其语法格式如下：<br/>&lt;controller&nbsp;processorClass=&#34;fully&nbsp;qualified&nbsp;class&nbsp;name&#34;&nbsp;/&gt;<br/>&lt;controller&nbsp;/&gt;元素属性及其描述信息如下：<br/>属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描&nbsp;&nbsp;述<br/>processorClass&nbsp;&nbsp;&nbsp;&nbsp;指定自定义的RequestProcessor类的全名<br/>BufferSize&nbsp;&nbsp;&nbsp;&nbsp;指定用来下载所用的缓存大小。缺省是4096字节。<br/>contentType&nbsp;&nbsp;&nbsp;&nbsp;定义response文本类型，缺省是text/html<br/>Debug&nbsp;&nbsp;&nbsp;&nbsp;定义当前系统的除错级别，缺省是0<br/>Locale&nbsp;&nbsp;&nbsp;&nbsp;如果是true，则在用户的session中存放Locale对象，缺省为true<br/>maxFileSize&nbsp;&nbsp;&nbsp;&nbsp;指定下载文件最大的大小。缺省是250M<br/>multipartClass&nbsp;&nbsp;&nbsp;&nbsp;指定去代替org.apache.struts.upload.DiskMultipartRequestHandler类的类的全名。<br/>Nocache&nbsp;&nbsp;&nbsp;&nbsp;如果是true，则会关闭每个response的缓存功能。缺省是false<br/>TempDir&nbsp;&nbsp;&nbsp;&nbsp;指定上载文件所用的临时目录。缺省值由容器决定<br/>例子：<br/>①&nbsp;&lt;controller&nbsp;processorClass=&#34;wiley.WileyRequestProcessor&#34;&nbsp;/&gt;<br/>②&nbsp;&lt;controller<br/>&nbsp;&nbsp;&nbsp;&nbsp;contentType=&#34;text/html;charset=UTF-8&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;debug=&#34;3&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;locale=&#34;true&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;nocache=&#34;true&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;processorClass=&#34;org.apache.struts.action.RequestProcessor&#34;/&gt;<br/>八、&nbsp;&nbsp;&nbsp;&nbsp;配置Message&nbsp;Resources<br/>在struts-config.xml文件中用&lt;message-resources&nbsp;/&gt;元素来定义消息资源。其语法如下：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;message-resources&nbsp;&nbsp;parameter=&#34;wiley.ApplicationResources&#34;/&gt;<br/>&lt;message-resources&nbsp;/&gt;元素属性及其描述信息如下：<br/>属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描&nbsp;&nbsp;述<br/>Parameter&nbsp;&nbsp;&nbsp;&nbsp;给定资源文件全名<br/>ClassName&nbsp;&nbsp;&nbsp;&nbsp;定义处理消息资源的类名的全名，缺省是org.apache.struts.config.MessageResourcesConfig<br/>Factory&nbsp;&nbsp;&nbsp;&nbsp;定义MessageResourcesFactory类的全名，缺省是org.apache.struts.util.property.MessageResourcesFacotry<br/>Key&nbsp;&nbsp;&nbsp;&nbsp;定义绑定在这个资源包中的ServletContext的属性主键，缺省值是Action.MESSAGES_KEY.<br/>Null&nbsp;&nbsp;&nbsp;&nbsp;如果为true，则找不到消息key时，则返回null，缺省是true.<br/>例子：<br/>①&nbsp;&lt;message-resources&nbsp;parameter=&#34;wiley.ApplicationResources&#34;/&gt;<br/>②&nbsp;&lt;message-resources<br/>&nbsp;&nbsp;&nbsp;&nbsp;parameter=&#34;StorefrontMessageResources&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;null=&#34;false&#34;/&gt;<br/>&lt;message-resources<br/>&nbsp;&nbsp;&nbsp;&nbsp;key=&#34;IMAGE_RESOURCE_KEY&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;parameter=&#34;StorefrontImageResources&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;null=&#34;false&#34;/&gt;<br/>注意：设定key的目的如下：<br/>&lt;html:img&nbsp;altKey=&#34;navbar.home.image.alt&#34;&nbsp;bundle=&#34;IMAGE_RESOURCE_KEY&#34;&nbsp;pageKey=&#34;navbar.home.image&#34;&nbsp;width=&#34;125&#34;&nbsp;height=&#34;15&#34;&nbsp;border=&#34;0&#34;/&gt;<br/>这里说明要到StorefrontImageResources.properties资源文件中找主键值是”navbar.home.image”所对应的值。<br/>这里StorefrontImageResources.properties的内容如下：<br/>……<br/>navbar.home.image=/images/home.gif<br/>navbar.home.image.alt=Home<br/>……<br/>此处navbar.home.image.alt说明的和&lt;img&nbsp;alt=”Home”……/&gt;一样。<br/>九、&nbsp;&nbsp;&nbsp;&nbsp;配置Plug-in<br/>配置Plug-in如下：<br/>&lt;plug-in&nbsp;className=&#34;wiley.WileyPlugin&#34;/&gt;<br/>也可如下：<br/>&lt;plug-in&nbsp;className=&#34;com.oreilly.struts.storefront.service.memory.StorefrontMemoryDatabasePlugIn&#34;&gt;<br/>&nbsp;&nbsp;&lt;set-property&nbsp;property=&#34;pathname&#34;&nbsp;value=&#34;/WEB-INF/database.xml&#34;/&gt;<br/>&lt;/plug-in&gt;<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=43</link>
			<title><![CDATA[web.xml和struts-config.xml的配置]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Sat,25 Aug 2007 19:31:46 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=43</guid>	
		<description><![CDATA[struts应用程序的配置：<br/>&nbsp;&nbsp;&nbsp;上篇文章讲了controller，但是我发现对于Jakarta&nbsp;Struts中的其它内容已经遗忘殆尽，古人云：温故而知新，就让我对前边几章作一下复习<br/>这里要配置的文件有两个，一个是web.xml，另一个是struts-config.xml<br/>一、为struts配置web.xml<br/>1,配置ActionServlet(only&nbsp;one)，使其接收应用程序收到的所有请求<br/>分为两步，a:使用servlet元素配置servlet实例，做servlet-mapping<br/>&lt;web-app&gt;<br/>&nbsp;&nbsp;&lt;servlet&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;storefront&lt;/servlet-name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;完全限定的类名&lt;/servlet-class&gt;<br/>&nbsp;&nbsp;&lt;/servlet&gt;<br/>&nbsp;&nbsp;&lt;servlet-mapping&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;storefront&lt;/servlet-name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br/>&nbsp;&nbsp;&lt;/servlet-mapping&gt;<br/>&lt;/web-map&gt;<br/>2,配置初始化参数：init-param，以name/value表示&lt;param-name&gt;&lt;param-value&gt;<br/>config&nbsp;&nbsp;:默认为/WEB-INF/struts-config.xml<br/>config/sub1:config/...&nbsp;&nbsp;&nbsp;从附加的struts配置文件中加在资程序sub1<br/>debug:servlet的调试detail<br/>detail：Digester的调试detail<br/>convertHack&nbsp;<br/>3,&lt;taglib&gt;使用struts提供的标记库时必须配置包括<br/>&nbsp;&nbsp;&nbsp;&lt;taglib-uri&gt;识别web应用程序所使用的标记库，必须是有效的<br/>&nbsp;&nbsp;&nbsp;&lt;taglib-location&gt;指定了标记库描述文件的位置<br/>4，&lt;welcome-file-list&gt;配置在web&nbsp;app中输入有效的，但不完整的url所使用的default&nbsp;&nbsp;resource；不使用servlet映射<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;welcome-file&gt;起始和结束都没有/符号<br/>5，&lt;error-page&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&lt;error-code&gt;&nbsp;&lt;location&gt;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;exception-type&gt;&lt;location&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/error-page&gt;<br/><br/>二、Struts配置文件<br/>ApplicationConfig:&nbsp;&nbsp;包含了struts配置文件中的所有信息<br/>1,&nbsp;&lt;data-source&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=““&nbsp;value=““/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt;<br/>2,&lt;form-beans&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form-bean&nbsp;name=“loginForm“&nbsp;type=“完全限定的类名，是ActionForm的子类“&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form-property&nbsp;name=““&nbsp;type=““/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form-bean&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form-bean<br/>&nbsp;&nbsp;&lt;/form-beans&gt;<br/>3,&lt;global-exceptions&gt;<br/>4,&lt;global-forwards&gt;<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=30</link>
			<title><![CDATA[Struts-config.xml配置文件讲解(一） ]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Thu,16 Aug 2007 16:58:06 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=30</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;Struts的核心是struts-config.xml配置文件，在这个文件里描述了所有的Struts组件。在这里包括配置主要的组件及次要的组件，下面是struts-config.xml包含主要元素的内容：<br/><br/>一、&nbsp;&nbsp;&nbsp;&nbsp;struts-config.xml的主要元素：<br/>&lt;?xml&nbsp;version=”1.0”&nbsp;encoding=”ISO-8859-1”?&gt;<br/>&lt;!DOCTYPE&nbsp;struts-config&nbsp;PUBLIC&nbsp;&#34;-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;1.1//EN&#34;<br/>&#34;<a href="http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd" target="_blank">http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd</a>&#34;&gt;<br/>&lt;struts-config&gt;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&lt;data-sources&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/data-source&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/data-sources&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;form-beans&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form-bean&nbsp;/&nbsp;&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/form-beans&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;global-forwards&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;forward&nbsp;/&nbsp;&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/global-forwards&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;action-mappings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;/&nbsp;&gt;<br/>&nbsp;&nbsp;&nbsp;&lt;/action-mappings&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;controller&nbsp;/&nbsp;&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;message-resources&nbsp;/&nbsp;&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&lt;plug-in&nbsp;/&gt;<br/><br/>&lt;/struts-config&gt;<br/>注意：以上各元素的顺序是非常重要的，你的struts-config.xml配置文件必须按照这个顺序进行配置，否则在你的容器启动的时候就会出错。<br/><br/>二、&nbsp;&nbsp;&nbsp;&nbsp;struts-config.xml的子元素：<br/>1．&lt;icon&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;它包含&lt;small-icon&nbsp;/&nbsp;&gt;及&lt;large-icon&nbsp;/&nbsp;&gt;，它的作用是图形化其父元素，&lt;small-icon/&gt;的内容是一个16x16的图像文件，而&lt;large-icon/&gt;的内容是一个32x32的图像文件。如下例子：<br/>&nbsp;&nbsp;&nbsp;&lt;icon&gt;<br/>&lt;small-icon&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/images/smalllogo.gif<br/>&lt;/small-icon&gt;<br/>&lt;large-icon&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/images/largelogo.gif<br/>&lt;/large-icon&gt;<br/>&lt;/icon&gt;<br/>2．&lt;display-name&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;它提供对父元素的短文字（short&nbsp;textual）描述信息，如下：<br/>&nbsp;&nbsp;&nbsp;&lt;display-name&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short&nbsp;textual&nbsp;discription&nbsp;of&nbsp;its&nbsp;parent&nbsp;element<br/>&nbsp;&nbsp;&nbsp;&lt;/display-name&gt;<br/>3．&lt;description&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;它提供对父元素的完全（full-length&nbsp;textual）的描述信息，如下：<br/>&lt;description&gt;<br/>full-length&nbsp;textual&nbsp;discription&nbsp;of&nbsp;its&nbsp;parent&nbsp;element<br/>&lt;/description&gt;<br/>4．&lt;set-property&nbsp;/&nbsp;&gt;子元素<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它用来设置它的父元素中设定的JavaBean的属性值，它一般用在指定的GenericDataSource&nbsp;属性，扩展的ActionMappings以及扩展的&nbsp;global&nbsp;forwards。如下：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;property=&#34;name&nbsp;of&nbsp;bean&nbsp;property&#34;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>value=&#34;value&nbsp;of&nbsp;bean&nbsp;property&#34;&nbsp;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=&#34;driverClass&#34;&nbsp;value=&#34;org.gjt.mm.mysql.Driver&#34;&nbsp;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=&#34;user&#34;&nbsp;value=&#34;admin&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=&#34;maxCount&#34;&nbsp;value=&#34;4&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;minCount&#34;&nbsp;value=&#34;2&#34;/&gt;&nbsp;<br/>&lt;set-property&nbsp;property=&#34;password&#34;&nbsp;value=&#34;&#34;/&gt;&nbsp;<br/>&lt;set-property&nbsp;property=&#34;url&#34;&nbsp;value=&#34;jdbc:mysql://localhost:3306/struts&#34;/&gt;<br/><br/>三、&nbsp;&nbsp;&nbsp;&nbsp;配置JDBC数据源<br/>其配置形式如下：<br/>&lt;data-sources&gt;<br/>&lt;data-source&gt;<br/>&lt;set-property&nbsp;property=&#34;driverClass&#34;&nbsp;value=&#34;fully&nbsp;qualified&nbsp;path&nbsp;of&nbsp;JDBC&nbsp;driver&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;url&#34;&nbsp;value=&#34;data&nbsp;source&nbsp;URL&#34;/&gt;<br/>&lt;set-property&nbsp;property=”mincount”&nbsp;value=&#34;the&nbsp;minimum&nbsp;number&nbsp;of&nbsp;connections&nbsp;to&nbsp;open&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;password&#34;&nbsp;value=&#34;the&nbsp;password&nbsp;used&nbsp;to&nbsp;cr&#101;ate&nbsp;connections&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;user&#34;&nbsp;value=&#34;the&nbsp;username&nbsp;used&nbsp;to&nbsp;cr&#101;ate&nbsp;connections&#34;/&gt;<br/>&lt;/data-source&gt;<br/>&lt;/data-sources&gt;<br/>&lt;data-source&gt;的属性及其描述信息如下：<br/>属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描&nbsp;述&nbsp;信&nbsp;息<br/>Key&nbsp;&nbsp;&nbsp;&nbsp;绑定在ServletContext上的DataSource实例的索引键，若不设定则缺省为Action.DATA_SOURCE_KEY，如果在应用程序中有多于一个的DataSource，则必须设置Key的值。<br/>DriverClass&nbsp;&nbsp;&nbsp;&nbsp;所用的JDBC驱动类(必须的)如：com.microsoft.jdbc.sqlserver.SQLServerDriver<br/>url&nbsp;&nbsp;&nbsp;&nbsp;所用的JDBC的URL(必须的)如：jdbc:microsoft:sqlserver://xg088:1433<br/>MaxCount&nbsp;&nbsp;&nbsp;&nbsp;同时打开的最大连结数，缺省值为2(可选的)<br/>MinCount&nbsp;&nbsp;&nbsp;&nbsp;同时打开的最小连结数，缺省值为1(可选的)<br/>User&nbsp;&nbsp;&nbsp;&nbsp;连结到数据库的用户名(必须的)<br/>Password&nbsp;&nbsp;&nbsp;&nbsp;连结到数据库的密码(必须的)<br/>Description&nbsp;&nbsp;&nbsp;&nbsp;关于DataSource的描述信息(可选的)<br/>ReadOnly&nbsp;&nbsp;&nbsp;&nbsp;如果设为true，则表示该连结是只读的，缺省为false。(可选的)<br/>LoginTimeout&nbsp;&nbsp;&nbsp;&nbsp;创建连结的最大允许时间，以秒为单位。(可选的)<br/>AutoCommit&nbsp;&nbsp;&nbsp;&nbsp;如果为true，则每次execute之后会强制回滚。缺省为true。(可选的)<br/>举例说明：<br/>&lt;data-sources&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property&nbsp;property=”key”&nbsp;value=”&nbsp;value=&#34;WILEY_DATA_SOURCE&#34;&nbsp;/&gt;<br/>&lt;set-property&nbsp;property=&#34;driverClass&#34;&nbsp;value=&#34;org.gjt.mm.mysql.Driver&#34;&nbsp;/&gt;<br/>&lt;set-property&nbsp;property=&#34;url&#34;&nbsp;value=&#34;jdbc:mysql://localhost/wileyusers&#34;&nbsp;/&gt;<br/>&lt;set-property&nbsp;property=&#34;maxCount&#34;&nbsp;value=&#34;5&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;minCount&#34;&nbsp;value=&#34;1&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;user&#34;&nbsp;value=&#34;sa&#34;/&gt;<br/>&lt;set-property&nbsp;property=&#34;password&#34;&nbsp;value=&#34;yourpassword&#34;/&gt;<br/>&lt;/data-source&gt;<br/>&lt;/data-sources&gt;<br/><br/>四、&nbsp;&nbsp;&nbsp;&nbsp;配置FormBean<br/>&lt;form-bean&nbsp;/&nbsp;&gt;用来定义将要绑定到Action的FormBean的实例。语法如下：<br/>&lt;form-beans&gt;<br/>&lt;form-bean&nbsp;name=&#34;name&nbsp;used&nbsp;to&nbsp;uniquely&nbsp;identify&nbsp;a&nbsp;FormBean&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=”fully&nbsp;qualified&nbsp;class&nbsp;name&nbsp;of&nbsp;FormBean&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form-beans&gt;<br/>例：<br/>&lt;form-beans&gt;<br/>&lt;form-bean&nbsp;name=&#34;lookupForm&#34;&nbsp;type=&#34;wiley.LookupForm&#34;&nbsp;/&gt;<br/>&lt;/form-beans&gt;<br/><br/>五、&nbsp;&nbsp;&nbsp;&nbsp;配置全局转发<br/>全局转发可以定义几个&lt;forward/&gt;子元素，struts首先会在&lt;action-mappings&gt;元素中找对应的&lt;forward&gt;，若找不到，则到全局转发配置中找。语法如下：<br/>&lt;global-forwards&gt;<br/>&lt;forward&nbsp;name=&#34;unique&nbsp;target&nbsp;identifier&#34;&nbsp;<br/>path=&#34;context-relative&nbsp;path&nbsp;to&nbsp;targetted&nbsp;resource&nbsp;&#34;/&gt;<br/>&lt;/global-forwards&gt;<br/>除了name及path属性之外，还有一个redirect属性，如果redirect设为true的时候，则用HttpServletResponse.sendRedirect()方法，否则用RequestDispatcher.forward()方法，缺省为false。<br/>注：如果为true，则用HttpServletResponse.sendRedirect()方法，此时存储在原来的HttpServletRequest中的值将会丢失。<br/>例子：<br/>&lt;global-forwards&gt;<br/>&lt;forward&nbsp;name=&#34;success&#34;&nbsp;path=&#34;/welcome.jsp&#34;/&gt;<br/>&lt;forward&nbsp;name=&#34;failure&#34;&nbsp;path=&#34;/index.jsp&#34;/&gt;<br/>&lt;/global-forwards&gt;<br/>六、&nbsp;&nbsp;&nbsp;&nbsp;配置&lt;action-mappings&gt;<br/>它可以定义几个&lt;action&nbsp;/&nbsp;&gt;子元素，它主要是定义Action实例到ActionServlet类中，语法如下：<br/>&lt;action-mappings&gt;<br/>&lt;action&nbsp;path=&#34;context-relative&nbsp;path&nbsp;mapping&nbsp;action&nbsp;to&nbsp;a&nbsp;request&#34;<br/>type=&#34;fully&nbsp;qualified&nbsp;class&nbsp;name&nbsp;of&nbsp;the&nbsp;Action&nbsp;class&#34;<br/>name=&#34;the&nbsp;name&nbsp;of&nbsp;the&nbsp;form&nbsp;bean&nbsp;bound&nbsp;to&nbsp;this&nbsp;Action&#34;&gt;<br/>&lt;forward&nbsp;name=&#34;forwardname1&#34;&nbsp;path=&#34;context-relative&nbsp;path&#34;/&gt;<br/>&nbsp;<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.is21.cn/default.asp?id=3</link>
			<title><![CDATA[PS扣图滤镜knockout2.0应用实例]]></title>
			<author>lianxiangpanjin@163.com(admin)</author>
			<category><![CDATA[配置文件]]></category>
			<pubDate>Sat,04 Aug 2007 19:41:12 +0800</pubDate>
			<guid>http://www.is21.cn/default.asp?id=3</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;这个不用我说了，很简单]]></description>
		</item>
		
</channel>
</rss>