﻿<?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-风行天下</title><link>http://www.blogjava.net/fengtaishao/</link><description>JAVA太极</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 07:54:30 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 07:54:30 GMT</pubDate><ttl>60</ttl><item><title>完全解决java开发中的中文问题（侧重struts）</title><link>http://www.blogjava.net/fengtaishao/archive/2006/08/28/66124.html</link><dc:creator>风太少</dc:creator><author>风太少</author><pubDate>Mon, 28 Aug 2006 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/fengtaishao/archive/2006/08/28/66124.html</guid><wfw:comment>http://www.blogjava.net/fengtaishao/comments/66124.html</wfw:comment><comments>http://www.blogjava.net/fengtaishao/archive/2006/08/28/66124.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fengtaishao/comments/commentRss/66124.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fengtaishao/services/trackbacks/66124.html</trackback:ping><description><![CDATA[
		<p>       在做java开发的过程中一开始就碰到中文问题，刚接触到java时用的编译器是JCreate,这是个非常好用简单的java编译器，<br />但他就在对中文的支持上有很大问题，当时我就在想中国这么大的国家为什么在世界上总是比不过那些小国家，最严重的是有日文开发文档<br />就是没有中文的，所以我们在开发java的时候总是会碰到中文问题。下面我就来说一下我在开发中是如何来处理中文的。<br />      首先讲中文的字符的编码，刚开始中文的编码是GB2312后来发现他的常用字根本不能适应现在的需求，所以就在他的基础上增加了很多<br />生僻字，不常用字得到了新的编码GBK，我们一般来说都用GBK来实现我们的开发，而如果说到国际化就不得不提Unicode （统一码）顾名思<br />义是一个将世界上各种文字统一在一起的东东。由美国各大电脑厂商组成的Unicode策进会来推动。目的，推广一个世界通用的编码体制，<br />惊世界上所有常用的文字都涵盖进去，从而减少个电脑商开发国外市场遇到的问题。<br />        这些编码系统也会互相冲突。也就是说，两种编码可能使用相同的数字代表两个不同的字符，或使用不同的数字代表相同的字符。任何<br />一台特定的计算机(特别是服务器)都需要支持许多不同的编码，但是，不论什么时候数据通过不同的编码或平台之间，那些数据总会有损坏<br />的危险。<br />    Unicode给每个字符提供了一个唯一的数字，不论是什么平台，不论是什么程序，不论什么语言。Unicode标准已经被这些工业界的领导<br />们所采用，例如：Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要<br />Unicode，例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等，并且，Unicode是实现ISO/IEC 10646的正规方式。许多<br />操作系统，所有最新的浏览器和许多其他产品都支持它。Unicode标准的出现和支持它工具的存在，是近来全球软件技术最重要的发展趋势。<br />       而Unicode4.0后有了UTF (Unicode/UCS Transformation Format),Unicode推荐使用UTF-8和UTF-16两种格式其中8和16指的是Bits数而不<br />是Bytes数。<br />UTF-16基本就是Unicode双字节的实现，加上一个应付未来需要的扩充编码机制（很少用）<br />UTF-8 是一种不等幅的编码方式，英数字（Ascii字码）保持原状，完全不受影响（因此不需要做转换），而其他汉字资料须透过程序来转换，<br />会[变胖]，因为每个字需要额外一个或两个Bytes来编码。<br />       下面我们来看看实战中我是如何做的：<br />    1.web.xml<br /> 配置过滤器<br /> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000"> Filter Configuration </span>
				<span style="COLOR: #000000">--&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">Set Character Encoding</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">cn.redstoneinfo.commons.web.EncodingFilter</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080">5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">filter</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>    <br />    2.EncodingFilter.java：<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">这里设置的默认的编码,可以在web.xml中设置,如果不设就用这里的</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #008000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">protected</span>
				<span style="COLOR: #000000"> String encoding </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">UTF-8</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">protected</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">boolean</span>
				<span style="COLOR: #000000"> ignore </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_113_183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_113_183_Open_Text.style.display='none'; Codehighlighter1_113_183_Closed_Image.style.display='inline'; Codehighlighter1_113_183_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_113_183_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_113_183_Closed_Text.style.display='none'; Codehighlighter1_113_183_Open_Image.style.display='inline'; Codehighlighter1_113_183_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span>
				<span id="Codehighlighter1_113_183_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_113_183_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000"> <br /></span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)<br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #008000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />  </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_254_649_Open_Image" onclick="this.style.display='none'; Codehighlighter1_254_649_Open_Text.style.display='none'; Codehighlighter1_254_649_Closed_Image.style.display='inline'; Codehighlighter1_254_649_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_254_649_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_254_649_Closed_Text.style.display='none'; Codehighlighter1_254_649_Open_Image.style.display='inline'; Codehighlighter1_254_649_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> init(FilterConfig filterConfig) </span>
				<span style="COLOR: #0000ff">throws</span>
				<span style="COLOR: #000000"> ServletException </span>
				<span id="Codehighlighter1_254_649_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_254_649_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  String paramValue </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> filterConfig.getInitParameter(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">encoding</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">11</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_347_382_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_382_Open_Text.style.display='none'; Codehighlighter1_347_382_Closed_Image.style.display='inline'; Codehighlighter1_347_382_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_347_382_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_347_382_Closed_Text.style.display='none'; Codehighlighter1_347_382_Open_Image.style.display='inline'; Codehighlighter1_347_382_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (paramValue </span>
						<span style="COLOR: #000000">!=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">) </span>
						<span id="Codehighlighter1_347_382_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_347_382_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080">12</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">.encoding </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> paramValue;<br /></span>
								<span style="COLOR: #008080">13</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  String value </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> filterConfig.getInitParameter(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">ignore</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (value </span>
						<span style="COLOR: #000000">==</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">)<br /></span>
						<span style="COLOR: #008080">16</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.ignore </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">true</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">else</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (value.equalsIgnoreCase(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">true</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">))<br /></span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.ignore </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">true</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">19</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">else</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (value.equalsIgnoreCase(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">yes</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">))<br /></span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.ignore </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">true</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">else</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">22</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.ignore </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">false</span>
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080">23</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">24</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p> </p>
		<p>    3.Struts-config.xml:<br /> 设置资源文件的路径<br /> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">message</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">resources<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  parameter</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">cn.redstoneinfo.oss.security.web.security-resource</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> key</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">SECURITY_RES</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">false</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /></span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">message</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">resources<br /></span>
				<span style="COLOR: #008080">5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  parameter</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">cn.redstoneinfo.oss.web.ApplicationResources</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">false</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>    4.role-list.jsp<br /> 页面编码和调用资源<br /> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ page contentType</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/html; charset=UTF-8</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /><br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">oss:panel label</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">security.role.list.title</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> bundle</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">SECURITY_RES</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">table width</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">100%</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">tr </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">tr1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> align</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">center</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> height</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">25</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">td width</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">5%</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 7</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">td</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080"> 8</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">td </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">bean:message key</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">app.common.name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">10</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">td</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">td </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">bean:message key</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">app.common.activeDate</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">td</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">14</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">td</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">15</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">bean:message key</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">app.common.inactiveDate</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">16</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">td </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">17</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">td</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">18</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">bean:message key</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">app.common.status</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">19</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">td</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">   <br /></span>
				<span style="COLOR: #008080">20</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /></span>
				<span style="COLOR: #008080">21</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">tr</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">22</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /><br /></span>
				<span style="COLOR: #008080">23</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">input type</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">button</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">   &lt;bean:message key=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">app.common.</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">buttonnew</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> onclick</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">javascript:document.forms[0].act.value='add'; goUrlFormTarget('role.do', 'roleForm', 'roleTreeFrame');</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">    <br /></span>
				<span style="COLOR: #008080">24</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p> <br />    5.ApplicationResources.properties<br /> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">app.common.name </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> 名字<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> app.common.ip </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> IP<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> app.common.port </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> 端口<br /></span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> app.common.status </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> 状态 <br /></span>
				<span style="COLOR: #008080">5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>    6.build.xml<br /> 编译资源文件生成Unicode<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">native2ascii src</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${oss.src.dir}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> encoding</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">UTF-8</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> dest</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">${target.dir}/WEB-INF/classes</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">include name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">**/*.properties</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">native2ascii</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>    7.转换后的ApplicationResources.properties<br /> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">app.common.name </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> \u540d\u5b57<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> app.common.ip </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> IP<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> app.common.port </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> \u7aef\u53e3<br /></span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> app.common.status </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> \u72b6\u6001<br /></span>
				<span style="COLOR: #008080">5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>    8.server.xml<br /> tomcat5.0以后post跟get提交方法不了不同的编码处理，应该用下面的方式来处理<br />     </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">Connector<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  port</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">8080</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">               maxHttpHeaderSize</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">8192</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />               maxThreads</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">150</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> minSpareThreads</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">25</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> maxSpareThreads</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">75</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />               enableLookups</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">false</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> redirectPort</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">8443</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> acceptCount</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">100</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />               connectionTimeout</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">20000</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> disableUploadTimeout</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">true</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">  URIEncoding</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">UTF-8</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>    9.界面<br /><img height="131" alt="11.gif" src="http://www.blogjava.net/images/blogjava_net/fengtaishao/11.gif" width="387" border="0" /><br />    以上操作基本实现彻底消灭中文乱码问题，当然还有其他更好的办法和应用，我们这里只讲struts的简单应用中如何避免相应问题的处理办法。<br /></p>
<img src ="http://www.blogjava.net/fengtaishao/aggbug/66124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fengtaishao/" target="_blank">风太少</a> 2006-08-28 10:48 <a href="http://www.blogjava.net/fengtaishao/archive/2006/08/28/66124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈网站建设的价格</title><link>http://www.blogjava.net/fengtaishao/archive/2006/07/03/56416.html</link><dc:creator>风太少</dc:creator><author>风太少</author><pubDate>Mon, 03 Jul 2006 13:54:00 GMT</pubDate><guid>http://www.blogjava.net/fengtaishao/archive/2006/07/03/56416.html</guid><wfw:comment>http://www.blogjava.net/fengtaishao/comments/56416.html</wfw:comment><comments>http://www.blogjava.net/fengtaishao/archive/2006/07/03/56416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fengtaishao/comments/commentRss/56416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fengtaishao/services/trackbacks/56416.html</trackback:ping><description><![CDATA[最近打电话给我们工作室来询价接着砍价的人特别多，一般来说都是这样的说法，比如："你们太贵了，我们之前问过了很多公司都是一两千甚至几百元一个的……"，或者还有就是这样的："太贵了，不就是一个网站吗，你们在电脑上面一下就弄出来了……"，还有就是这样的："我们也是刚刚创业的公司，没有多少钱能够投入到这方面来，能再便宜一点吗？……"。想想觉得有必要来说说网站建设设计的价格。 <br /><br />首先我们的价格是根据设计水平和业务饱和程度来拟定的，基本上恕不折扣。我们不喜欢首先定一个很高的价格，然后大家花很多宝贵的时间来议价。因为这样的方式和在菜场买菜或者是去那些服装市场淘衣服没什么区别：拼命的砍价还价，最终软磨硬泡买了下来，结果回家的路上还在想"哎，其实还可以再便宜几块钱的，说不定人家也卖……"。一个标志的产生凝聚了设计师的心血和智慧，也蕴含了一个成功的愿景！它不是机械的流水线制造出来的产品，而是一个用智慧创造出来的独特的艺术品。（"中国制造"和"中国创造"对于中国而言意义是显而易见的。）我们希望和有远见的公司一起成长，也希望每一个和我们合作的公司都百年常青！<br /><br />"你们太贵了，我们之前问过了很多公司都是一两千甚至几百元一个的……"<br />是的，还有很多只要几百元，说不定还会连带着把你的企业网站的域名空间及标志全做掉……但是请别忘了还有很多公司上万一个呢。同样是一套西服，有些只要几十元，有些却要上千上万元，穿上以后的形象气质，自己能感受，别人更能察觉。想要一个什么样的形象，您做主！<br /><br />"太贵了，不就是一个网站吗，你们在电脑上面一下就弄出来了……"<br />记得有一个这样的小故事，大概的意思是说某厂机器出了故障，自己修不了，请来外国技术人员，结果那技术人员围着机器转了几圈，在故障的地方划了一条线。问题解决了，付酬劳时，技术人员说要1000美元，那家工厂的人都觉不合理，只不过一条线，怎么值1000美元呢。技术人员的解释是，划一条线只值一美元就够了，但知道在哪里划线却值999美元。<br />再比如：咖啡厅里的一杯咖啡可要价几十甚至上百不等，拿上这些钱去买一袋咖啡，然后自己再慢慢泡不也一样可以喝吗？这又是为什么？建设网站也一样，互联网发展到今天，网站的功能也已经从原来单纯的展示信息过度到互动、营销的阶段。越来越多的企业都意识到企业网站的重要性与必要性，网站设计的好坏，功能是否齐全在一定程度上都影响着企业、公司的整体对外形象。我想您一定也明白这样的道理。<br /><br />"我们也是刚刚创业的公司，没有多少钱能够投入到这方面来，能再便宜一点吗？……"<br />如果您真的是刚刚起步，而且您的项目非常有前景，我们对您的事业也很有兴趣，那么您是我们一直在寻找的合作伙伴之一。花上个几百请个业务的人做完或购买自助建站式的服务，省钱又省力，但是效果毫无疑问，为一份长远的事业建立最基本的形象是必要的，我们了解您的雄心壮志，也佩服您的胸襟和视野，因为我们和您一样在创业，成功的事业也是我们共同的追求！所以，我相信双赢才是最好的结果。<br /><br />我们专注而踏实的做好自己的事情——创意和设计。用心做设计，站在和您的同一视角和高度设身处地去体察您在企业营销、展示进程中的困苦迷惑，和您共同探寻成功的理念及视觉上的最优解决方案。如果您赏识我们、信任我们，我们很高兴能和您合作。您能得到一个市场认可的专业的专业的品牌视觉形象和无可估量的公司愿景，我们也能得到相应的商业上的报酬和专业上的收获，这是我们期待的双赢合作！当然我们也不奢望所有的客户都欣赏我们，我们追求那些彼此欣赏，彼此尊重，有着相同的价值取向的客户做我们成功事业旅途中的好伙伴。让我们成为朋友！<br /><img src ="http://www.blogjava.net/fengtaishao/aggbug/56416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fengtaishao/" target="_blank">风太少</a> 2006-07-03 21:54 <a href="http://www.blogjava.net/fengtaishao/archive/2006/07/03/56416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts的多模块设计</title><link>http://www.blogjava.net/fengtaishao/archive/2005/08/17/10295.html</link><dc:creator>风太少</dc:creator><author>风太少</author><pubDate>Wed, 17 Aug 2005 01:03:00 GMT</pubDate><guid>http://www.blogjava.net/fengtaishao/archive/2005/08/17/10295.html</guid><wfw:comment>http://www.blogjava.net/fengtaishao/comments/10295.html</wfw:comment><comments>http://www.blogjava.net/fengtaishao/archive/2005/08/17/10295.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/fengtaishao/comments/commentRss/10295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fengtaishao/services/trackbacks/10295.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width=700 border=0>
<TBODY>
<TR>
<TD class=ContentPara>
<P>Struts在1.1以后的版本引入了模块（Module）的概念，克服了1.0的并行开发所遇到的问题。但是模板的规划往往又是比较麻烦，如果不注意，可能适得其反，影响你的开发速度。下面我们看看如何去规划一个对模块的Struts项目。</P>
<P>首先我们需要建立一个web的项目，接下来就要进行目录规划。如下图：</P></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=700 border=0>
<TBODY>
<TR>
<TD class=ContentPara>
<P>1 首先确定项目的模块，如此项目中包含两个模块：mFirst和mSecond，当然还有缺省模板。</P>
<P>2 本例子中考虑到使用XDoclet自动生成Struts配置和校验文件，所以有些特殊性。在WEB-INF下建立两个目录mFirst和mSecond，用于模块配置文件的存放。同时建立merge目录，并包含相应的模块目录，主要存放XDoclet生成Struts配置文件所需要的合并文件。模板的java源码和测试代码也分别存放，这样便于管理。为了包含某些不允许从浏览器端直接访问的jsp文件，我们在WEB-INF下同时建立webpages目录，该目录下同时包含模块目录，主要存放各个模块的受限文件。</P>
<P>3 本例中为了集成方便，所有编译后的代码均存在同一目录下(WEB-INF\classes)，编译后的测试代码同样存在同一目录下。</P>
<P>4 经过以上的设置，为XDoclet生成配置文件提供了方便，我们的原则是同一个模块只有一个配置文件(struts-config.xml)和校验文件（validation.xml）。 </P></TD>
<TD class=ContentPara>
<TABLE cellSpacing=0 cellPadding=0 bgColor=#999999 border=0>
<TBODY>
<TR>
<TD class=imageTable><IMG height=565 src="http://www.jetmaven.net/documents/j_image/j_struts_module.gif" width=344></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=700 border=0>
<TBODY>
<TR>
<TD class=ContentPara>
<P>5 接下来我们只需在web.xml中进行模块声明即可，其他信息请参考struts的sample。<BR>&lt;init-param&gt;<BR>&lt;param-name&gt;config&lt;/param-name&gt;<BR>&lt;param-value&gt;WEB-INF/struts-config.xml&lt;/param-value&gt;<BR>&lt;/init-param&gt;<BR>&lt;init-param&gt;<BR>&lt;param-name&gt;config/mFirst&lt;/param-name&gt;<BR>&lt;param-value&gt;WEB-INF/mFirst/struts-config.xml&lt;/param-value&gt;<BR>&lt;/init-param&gt;<BR>&lt;init-param&gt;<BR>&lt;param-name&gt;config/mSecond&lt;/param-name&gt;<BR>&lt;param-value&gt;WEB-INF/mSecond/struts-config.xml&lt;/param-value&gt;<BR>&lt;/init-param&gt;</P>
<P>6 完成这些信息以后，我们要注意一些事情：<BR>struts-config.xml文件中的Controller声明，由于我们将模板的jsp文件隐藏到WEB-INF目录下，而不是在根目录下直接建立模板目录，所以必须设置forwardPattern，详细信息请参考Struts文档。请在每个模块的struts-config.xml文件中添加以下代码，在本例中为：<BR>&lt;controller forwardPattern="/WEB-INF/webpages/$M$P"/&gt;<BR>在每个模块的properties资源文件中可能都有配置Struts默认的出错信息，因为这些模块都是独立的。</P>
<P>7 接下来就是模块的之间的切换问题，因为在现时过程必须需要解决的问题。其实很简单，如果你想使用项目下绝对路径（包含模块目录信息），只需将forward的contextRelative属性值设置为true即可，这样模块之间切换也很容易实现。<BR>&lt;forward contextRelative="true" name="success"<BR>path="/mSecond/second.do" redirect="false"/&gt;</P>
<P>8 接下来就是你的代码啦，可能你要在编码中适当地考虑到项目模块之间的关系。</P>
<P>总结：多模块设计不太难，但是你也的考虑周全点，这样会给你的开发带来方便。在IntelliJ IDEA下，虽然在模块比较多的情况下目录很乱，通过设置excluded，让你的目录更整洁，这样就可以关注你的模块。在有些情况下，取消excluded，这样你有可以把握项目全局。</P></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/fengtaishao/aggbug/10295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fengtaishao/" target="_blank">风太少</a> 2005-08-17 09:03 <a href="http://www.blogjava.net/fengtaishao/archive/2005/08/17/10295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Swing编写反应灵敏的图形用户界面</title><link>http://www.blogjava.net/fengtaishao/archive/2005/03/23/2368.html</link><dc:creator>风太少</dc:creator><author>风太少</author><pubDate>Wed, 23 Mar 2005 06:31:00 GMT</pubDate><guid>http://www.blogjava.net/fengtaishao/archive/2005/03/23/2368.html</guid><wfw:comment>http://www.blogjava.net/fengtaishao/comments/2368.html</wfw:comment><comments>http://www.blogjava.net/fengtaishao/archive/2005/03/23/2368.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fengtaishao/comments/commentRss/2368.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fengtaishao/services/trackbacks/2368.html</trackback:ping><description><![CDATA[<P dir=ltr style="MARGIN-RIGHT: 0px">
<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
<TBODY>
<TR>
<TD>
<P class=title align=center>用Swing编写反应灵敏的图形用户界面</P>
<P align=center>作者：<A href="http://www.blogjava.net/fengtaishao/admin/EditPosts.aspx#author">徐皓</A></P><A name=author></A>
<P><B>作者简介</B></P>
<P class=normal>徐皓，北京航空航天大学计算机系本科生，你可以通过<A href="mailto:ertri@163.com">ertri@163.com</A>与他联系。</P>
<P><B>正文</B></P>
<P class=normal>不灵敏的图形用户界面会降低应用程序的可用性。当以下现象出现的时候，我们通常说这个用户界面反应不灵敏。</P>
<OL>
<LI>不响应事件的现象； 
<LI>没有更新的现象；</LI></OL>
<P class=normal>这些现象在很大程度上与事件的处理方法相关，而在编写Swing应用程序的时候，我们几乎必然要编写方法去响应鼠标点击按钮，键盘回车等事件。在这些方法中我们要编写一些代码，在运行时去触发一些动作。常见动作包括查找，更新数据库等。在这篇文章中通过对一个实例的分析，介绍了一些基本概念，常见的错误以及提出了一个解决方案。</P>
<P><B>event-dispatching thread</B></P>
<P class=normal>我们一定要记住，事件响应方法的代码都是在event-dispatching thread中执行的，除非你启用另一个线程。</P>
<P class=normal>那么，什么是event-dispatching thread呢？在《Java Tutorial》[1]中，作者给出了一条单一线程规则：一旦一个Swing组件被实现（realized），所有的有可能影响或依赖于这个组件的状态的代码都应该在event-dispatching thread中被执行。而实现一个组件有两种方式：</P>
<OL>
<LI>对顶层组件调用show(), pack(), 或者setVisible(true)； 
<LI>将一个组件加到一个已经被实现的容器中。</LI></OL>
<P class=normal>单一线程规则的根源是由于Swing组件库的大部分方法是对多线程不安全的，尽管存在一些例外。这些例外的情况可以在《Java Tutorial》[1]的相关章节找到，这里不再展开。</P>
<P class=normal>为了支持单一线程模型，Swing组件库提供了一个专门来完成这些与Swing组件相关的操作的线程，而这一线程就是event-dispatching thread。我们的事件响应方法通常都是由这一线程调用的，除非你自己编写代码来调用这些事件响应方法。在这里初学者经常犯的一个错误就是在事件响应方法中完成过多的与修改组件没有直接联系的代码。其最有可能的效果就是导致组件反应缓慢。比如以下响应按钮事件的代码：</P><PRE>String str = null;
this.textArea.setText("Please wait...");
try {
    //do something that is really time consuming
    str = "Hello, world!";
    Thread.sleep(1000L);
} catch (InterruptedException e) {
    e.printStackTrace();
}
this.textArea.setText(str);	
</PRE>
<P class=normal>执行之后的效果就是按钮似乎定住了一段时间，直到Done.出现之后才弹起来。原因就是Swing组件的更新和事件的响应都是在event-dispatching thread中完成的，而事件响应的时候，event-dispatching thread被事件响应方法占据，所以组件不会被更新。而直到事件响应方法退出时才有可能去更新Swing组件。</P>
<P class=normal>为了解决这个问题，有人也许会试图通过调用repaint()方法来更新组件：</P><PRE>final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.repaint();
        
try {
    Thread.sleep(1000L);
}catch(InterruptedException e) {
    e.printStackTrace();
}
str[0] = "Done.";

jTextArea1.setText(str[0]);
</PRE>
<P class=normal>但是这一个方法没有起到预期的作用，按钮仍然定住一段时间，在察看了repaint()方法的源代码之后就知道原因了。</P><PRE>PaintEvent e = new PaintEvent(this, PaintEvent.UPDATE,
    new Rectangle(x, y, width, height));
Toolkit.getEventQueue().postEvent(e);		
</PRE>
<P class=normal>repaint()方法实际上是在事件队列里加了一个UPDATE的事件，而没有直接去重画组件，而且这一个事件只能等待当前的事件响应方法结束之后才能被分配。因此只有绕过分配机制直接调用paint方法才能达到目的。</P><PRE>final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.paint(this.getGraphics());
        
try {
    Thread.sleep(1000L);
}catch(InterruptedException e) {
    e.printStackTrace();
}
str[0] = "Done.";

jTextArea1.setText(str[0]);
</PRE>
<P class=normal>这样却是实现了更新，但是还存在着以下的问题。虽然从感觉上，按钮已经弹起来了，但是在Done.出现之前，我们却无法按下这个按钮。可以说按钮还是定住了，只不过定在了弹起的状态。调用重绘方法无法从根本上解决问题，因此我们需要寻求其他的方法。</P>
<P><B>使用多线程</B></P>
<P class=normal>有效的解决方法是使用多线程。首先看一看一个更好的解决方案，这一方案是在参考《Rethinking Swing Threading》[3]的一个程序片段完成的：</P><PRE>final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.repaint();
        
new Thread() {
    public void run() {
        try {
            Thread.sleep(1000L);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
        str[0] = "Done.";
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                jTextArea1.setText(str[0]);
             }
        });
    }
}.start();
</PRE>
<P class=normal>在这个程序中，要花费大量时间的操作被放到另一个线程当中，从而使事件响应方法能快速返回，event-dispatching thread就可以更新UI和响应其它事件了。注意到这个程序使用了invokeLater()方法。invokeLater()方法的作用是让event-dispatching thread去运行制定的代码。当然也可以不使用invokeLater()方法，但是这样就违背了单一线程原则，同时带来了一定程度的相对多线程的不安全性。到现在，解决方案似乎是完美的了，但是我们看一看在原来的程序添加下面的代码，尽管我们通常不这样做。</P><PRE>public void paint(java.awt.Graphics g) {
    super.paint(g);
    g.drawRect(1, 1, 100, 100);
}
</PRE>
<P class=normal>我们会发现以前画的矩形被覆盖了一部分，原因是由于我们没用重画这一个矩形，因此在结尾加上对repaint()方法的调用。</P><PRE>final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.repaint();
        
new Thread() {
    public void run() {
        try {
            Thread.sleep(1000L);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
        str[0] = "Done.";
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                jTextArea1.setText(str[0]);
                repaint();
             }
        });
    }
}.start();
</PRE>
<P class=normal>如果你认为这段代码过于缺乏可读性，通过在《Java Tutorial》[1]里面介绍的SwingWorker来简化编程的方法。可以通过实现一个construct()方法来实现花费大量时间的操作和重写finished()方法来完成组件更新的工作。</P><PRE>this.jTextArea1.setText("Please wait...");
        
final SwingWorker worker = new SwingWorker() {
    public Object construct() {
        try {
            Thread.sleep(1000L);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
        return "Done.";
    }
    public void finished() {
        jTextArea1.setText(getValue().toString());
        repaint();
    }
};
worker.start();
</PRE>
<P class=normal>在《Rethinking Swing Threading》[3]，作者将以上的编程方式称为同步方式。另外作者提出了一个通过消息机制来实现相同功能的更清晰，但是需要编写更多代码的"异步"的方法。</P>
<P><B>结论</B></P>
<P class=normal>总之，我们在编写使用Swing组件的程序是要记住以下几点：</P>
<P class=normal>1、不要过多地占用event-dispatching thread；</P>
<P class=normal>2、与更新组件相关的代码要使用event-dispatching thread去执行；</P>
<P class=normal>3、要更新组件。</P>
<P class=normal>编写反应灵敏的图形用户界面还需要考虑很多问题，以上只是最基本的一部分。欢迎有兴趣的读者来信进行讨论。</P>
<P><B>参考资料</B></P>
<P>[1]Sun Microsystems, The Java Tutorial Third Edition, <A href="http://java.sun.com/">java.sun.com</A></P>
<P>[2]Sun Microsystems, JavaTM 2 SDK, Standard Edition Documentation Version 1.4.2, <A href="http://java.sun.com/">java.sun.com</A></P>
<P>[3]Jonathan Simon, Rethinking Swing Threading, <A href="http://java.net/">java.net</A></P></TD></TR></TBODY></TABLE></P><img src ="http://www.blogjava.net/fengtaishao/aggbug/2368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fengtaishao/" target="_blank">风太少</a> 2005-03-23 14:31 <a href="http://www.blogjava.net/fengtaishao/archive/2005/03/23/2368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>