﻿<?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-Vincent Thinking-随笔分类-JAVA</title><link>http://www.blogjava.net/znjqolf/category/5181.html</link><description>All about Vincent's work and life</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:57:50 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:57:50 GMT</pubDate><ttl>60</ttl><item><title>对ActionMapperFactory的一点疑惑</title><link>http://www.blogjava.net/znjqolf/archive/2006/05/31/49353.html</link><dc:creator>Vincent Thinking</dc:creator><author>Vincent Thinking</author><pubDate>Wed, 31 May 2006 14:55:00 GMT</pubDate><guid>http://www.blogjava.net/znjqolf/archive/2006/05/31/49353.html</guid><wfw:comment>http://www.blogjava.net/znjqolf/comments/49353.html</wfw:comment><comments>http://www.blogjava.net/znjqolf/archive/2006/05/31/49353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/znjqolf/comments/commentRss/49353.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/znjqolf/services/trackbacks/49353.html</trackback:ping><description><![CDATA[
		<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">
				<img id="Codehighlighter1_33_925_Open_Image" onclick="this.style.display='none'; Codehighlighter1_33_925_Open_Text.style.display='none'; Codehighlighter1_33_925_Closed_Image.style.display='inline'; Codehighlighter1_33_925_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_33_925_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_33_925_Closed_Text.style.display='none'; Codehighlighter1_33_925_Open_Image.style.display='inline'; Codehighlighter1_33_925_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> ActionMapperFactory </span>
				<span id="Codehighlighter1_33_925_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_33_925_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">protected</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">final</span>
						<span style="COLOR: #000000"> Log LOG </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> LogFactory.getLog(ActionMapperFactory.</span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">final</span>
						<span style="COLOR: #000000"> HashMap classMap </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> HashMap();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_224_923_Open_Image" onclick="this.style.display='none'; Codehighlighter1_224_923_Open_Text.style.display='none'; Codehighlighter1_224_923_Closed_Image.style.display='inline'; Codehighlighter1_224_923_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_224_923_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_224_923_Closed_Text.style.display='none'; Codehighlighter1_224_923_Open_Image.style.display='inline'; Codehighlighter1_224_923_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> ActionMapper getMapper() </span>
						<span id="Codehighlighter1_224_923_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_224_923_Open_Text">
								<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_258_917_Open_Image" onclick="this.style.display='none'; Codehighlighter1_258_917_Open_Text.style.display='none'; Codehighlighter1_258_917_Closed_Image.style.display='inline'; Codehighlighter1_258_917_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_258_917_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_258_917_Closed_Text.style.display='none'; Codehighlighter1_258_917_Open_Image.style.display='inline'; Codehighlighter1_258_917_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">synchronized</span>
								<span style="COLOR: #000000"> (classMap) </span>
								<span id="Codehighlighter1_258_917_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_258_917_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            String clazz </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> (String) Configuration.get(WebWorkConstants.WEBWORK_MAPPER_CLASS);<br /><img id="Codehighlighter1_370_696_Open_Image" onclick="this.style.display='none'; Codehighlighter1_370_696_Open_Text.style.display='none'; Codehighlighter1_370_696_Closed_Image.style.display='inline'; Codehighlighter1_370_696_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_370_696_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_370_696_Closed_Text.style.display='none'; Codehighlighter1_370_696_Open_Image.style.display='inline'; Codehighlighter1_370_696_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">try</span>
										<span style="COLOR: #000000"> </span>
										<span id="Codehighlighter1_370_696_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_370_696_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                ActionMapper mapper </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> (ActionMapper) classMap.get(clazz);<br /><img id="Codehighlighter1_482_650_Open_Image" onclick="this.style.display='none'; Codehighlighter1_482_650_Open_Text.style.display='none'; Codehighlighter1_482_650_Closed_Image.style.display='inline'; Codehighlighter1_482_650_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_482_650_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_482_650_Closed_Text.style.display='none'; Codehighlighter1_482_650_Open_Image.style.display='inline'; Codehighlighter1_482_650_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"> (mapper </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_482_650_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_482_650_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    mapper </span>
														<span style="COLOR: #000000">=</span>
														<span style="COLOR: #000000"> (ActionMapper) ObjectFactory.getObjectFactory().buildBean(clazz, </span>
														<span style="COLOR: #0000ff">null</span>
														<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    classMap.put(clazz, mapper);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span>
												</span>
												<span style="COLOR: #000000">
														<br />
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
														<br />
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #0000ff">return</span>
												<span style="COLOR: #000000"> mapper;<br /><img id="Codehighlighter1_718_907_Open_Image" onclick="this.style.display='none'; Codehighlighter1_718_907_Open_Text.style.display='none'; Codehighlighter1_718_907_Closed_Image.style.display='inline'; Codehighlighter1_718_907_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_718_907_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_718_907_Closed_Text.style.display='none'; Codehighlighter1_718_907_Open_Image.style.display='inline'; Codehighlighter1_718_907_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span>
										</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">catch</span>
										<span style="COLOR: #000000"> (Exception e) </span>
										<span id="Codehighlighter1_718_907_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_718_907_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                String msg </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">Could not create ActionMapper: WebWork will *not* work!</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                LOG.fatal(msg, e);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #0000ff">throw</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> RuntimeException(msg, e);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<br />
		<br />明白的告诉我一下,谢谢. 觉的有点问题...<img src ="http://www.blogjava.net/znjqolf/aggbug/49353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/znjqolf/" target="_blank">Vincent Thinking</a> 2006-05-31 22:55 <a href="http://www.blogjava.net/znjqolf/archive/2006/05/31/49353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork 附件上传中得一些问题</title><link>http://www.blogjava.net/znjqolf/archive/2006/04/25/43096.html</link><dc:creator>Vincent Thinking</dc:creator><author>Vincent Thinking</author><pubDate>Tue, 25 Apr 2006 10:24:00 GMT</pubDate><guid>http://www.blogjava.net/znjqolf/archive/2006/04/25/43096.html</guid><wfw:comment>http://www.blogjava.net/znjqolf/comments/43096.html</wfw:comment><comments>http://www.blogjava.net/znjqolf/archive/2006/04/25/43096.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/znjqolf/comments/commentRss/43096.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/znjqolf/services/trackbacks/43096.html</trackback:ping><description><![CDATA[
		<p>为了通用,从头到尾都是utf-8. <br /><br />而webwork中JakartaMultiPartRequest对于多编码的处理并不如意.<br /><br />apache的fileupload对于上传文件名为中文的需要首先指定HeaderEncoding的编码.<br />而webwork对于MultiPartRequest的request并没有设置encoding编码<br />详见DispatcherUtils.java中 387行<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">
				<img id="Codehighlighter1_72_306_Open_Image" onclick="this.style.display='none'; Codehighlighter1_72_306_Open_Text.style.display='none'; Codehighlighter1_72_306_Closed_Image.style.display='inline'; Codehighlighter1_72_306_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_72_306_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_72_306_Closed_Text.style.display='none'; Codehighlighter1_72_306_Open_Image.style.display='inline'; Codehighlighter1_72_306_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> (encoding </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">&amp;&amp;</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">MultiPartRequest.isMultiPart(request)) </span>
				<span id="Codehighlighter1_72_306_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_72_306_Open_Text">
						<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_90_160_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_160_Open_Text.style.display='none'; Codehighlighter1_90_160_Closed_Image.style.display='inline'; Codehighlighter1_90_160_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_90_160_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_90_160_Closed_Text.style.display='none'; Codehighlighter1_90_160_Open_Image.style.display='inline'; Codehighlighter1_90_160_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
						<span style="COLOR: #0000ff">try</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_90_160_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_90_160_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                request.setCharacterEncoding(encoding);<br /><img id="Codehighlighter1_182_296_Open_Image" onclick="this.style.display='none'; Codehighlighter1_182_296_Open_Text.style.display='none'; Codehighlighter1_182_296_Closed_Image.style.display='inline'; Codehighlighter1_182_296_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_182_296_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_182_296_Closed_Text.style.display='none'; Codehighlighter1_182_296_Open_Image.style.display='inline'; Codehighlighter1_182_296_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">catch</span>
						<span style="COLOR: #000000"> (Exception e) </span>
						<span id="Codehighlighter1_182_296_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_182_296_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                LOG.error(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">Error setting character encoding to '</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </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">"</span>
								<span style="COLOR: #000000">' - ignoring.</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">, e);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span>
				</span>
		</div>
		<br />如果没有指定HeaderEncoding, 那么默认采用request的encoding,如果request也没有指定则采用系统的编码.<br />这里并没有指定request的encoding,往往导致上传文件的名字乱码.<br /><br />自定义一个MultiPartRequest,设定一下就ok了<br /><br /><br />对于同时提交的表单域(form)参数,由于在form中指定的enctype的关系,并不能直接用request.getParameter()才取, 只能通过FileItem.getString()的方式.这里也是上面的问题, 取的CharacterEncoding是request中的,由于webwork的原因不一致.同样需要指定一下.<br /><br />这样form和上传同时提交,参数,附件名都正常了 :)<img src ="http://www.blogjava.net/znjqolf/aggbug/43096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/znjqolf/" target="_blank">Vincent Thinking</a> 2006-04-25 18:24 <a href="http://www.blogjava.net/znjqolf/archive/2006/04/25/43096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZK  Ajax but no JavaScript</title><link>http://www.blogjava.net/znjqolf/archive/2006/03/14/35305.html</link><dc:creator>Vincent Thinking</dc:creator><author>Vincent Thinking</author><pubDate>Tue, 14 Mar 2006 13:40:00 GMT</pubDate><guid>http://www.blogjava.net/znjqolf/archive/2006/03/14/35305.html</guid><wfw:comment>http://www.blogjava.net/znjqolf/comments/35305.html</wfw:comment><comments>http://www.blogjava.net/znjqolf/archive/2006/03/14/35305.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/znjqolf/comments/commentRss/35305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/znjqolf/services/trackbacks/35305.html</trackback:ping><description><![CDATA[ZK 一个开源的ajax web框架，基于事件驱动的组件，通过标记语言来设计组件来简化开发人员的工作。显著的一个特点是使用类似XUL的标记语言来定义组件。 <BR><BR>其实我对这种类似桌面的开发方式来开发web程序一点都不感冒，因为封装的东西太多，势必影响扩展性。而且对应的社区也很少，很多因素影响。 <BR><BR>一个企业应用对于框架，技术并不是最重要的，需求和人员的素质等等因素也是很制约的。 很多开源的东西，在我看来只是 “看起来很美！” 回过来说zk，能以这种方式来开发也许能给我们很多启发。<BR>&nbsp;<BR>有兴趣的可以去看看：<BR>zk <A href="http://zk1.sourceforge.net/">http://zk1.sourceforge.net/</A><img src ="http://www.blogjava.net/znjqolf/aggbug/35305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/znjqolf/" target="_blank">Vincent Thinking</a> 2006-03-14 21:40 <a href="http://www.blogjava.net/znjqolf/archive/2006/03/14/35305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HSQLDB(一)</title><link>http://www.blogjava.net/znjqolf/archive/2006/02/24/32335.html</link><dc:creator>Vincent Thinking</dc:creator><author>Vincent Thinking</author><pubDate>Fri, 24 Feb 2006 11:55:00 GMT</pubDate><guid>http://www.blogjava.net/znjqolf/archive/2006/02/24/32335.html</guid><wfw:comment>http://www.blogjava.net/znjqolf/comments/32335.html</wfw:comment><comments>http://www.blogjava.net/znjqolf/archive/2006/02/24/32335.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/znjqolf/comments/commentRss/32335.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/znjqolf/services/trackbacks/32335.html</trackback:ping><description><![CDATA[<P align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG><FONT size=5>HSQLDB简介&nbsp;<BR></FONT></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR>Vincent 2006年2月24日<BR>&nbsp;<BR><STRONG><FONT size=4>一 什么是HSQLDB?</FONT></STRONG>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HSQLDB是一个用java编写的关系型数据库，它支持ANSI-92 SQL (BNF tree format) plus SQL 99 and 2003 enhancements. 它提供了一个非常小而快速的数据库引擎,同时提供了相关的JDBC驱动和一些实用的工具。<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最新的HSQLDB版本为<STRONG>1.8.0</STRONG> ，经过了1年的开发，和1.7.2相比，1.8.0的功能更加强大, 对数据库的容量支持达到了8GB，性能也更加出色。和当年相比，HSQLDB已经不仅仅很多人眼里的玩具，完全可以胜任商业的需求。(<STRONG><EM>OpenOffice.org 2.0</EM></STRONG>的数据库引擎为HSQLDB1.8.0)<BR>&nbsp;<BR>这里有一张数据库的performance test对比图(HSQLDB的性能远远超过其他的数据库)<BR>&nbsp;<IMG alt="" hspace=0 src="http://hsqldb.org/images/imola_retrieve.jpg" align=baseline border=0><BR><BR><BR><STRONG><FONT size=4>二 HSQLDB介绍<BR></FONT><BR>&nbsp;1.1 简介</STRONG> <BR><BR>hsqldb.jar 包含所有的组件(数据库引擎，jdbc驱动, 数据工具), 不同的命令用来执行不同的组件。<BR>hsqldb.jar主要包含了一下组件:&nbsp;<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">HSQLDB&nbsp;RDBMS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据库引擎<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>HSQLDB&nbsp;JDBC&nbsp;Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JDBC驱动<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>Database&nbsp;Manager&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;管理工具<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>Query&nbsp;Tool&nbsp;(AWT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查询工具<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>Sql&nbsp;Tool&nbsp;(command&nbsp;line)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQL工具</SPAN></DIV>
<P align=left><BR><STRONG>1.2 运行工具(Running Tools)</STRONG>&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所有的工具都以jar的方式来运行，下面的例子讲运行AWT方式的DataBase Manager,我们假设hsqldb.jar位于../lib目录中<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;java&nbsp;-cp&nbsp;../lib/hsqldb.jar&nbsp;org.hsqldb.util.DatabaseManager&nbsp;</SPAN></DIV>
<P align=left>Hsqldb工具的主类: <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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">org.hsqldb.util.DatabaseManager&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>org.hsqldb.util.DatabaseManagerSwing<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>org.hsqldb.util.Transfer<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>org.hsqldb.util.QueryTool&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>org.hsqldb.util.SqlTool&nbsp;</SPAN></DIV>
<P align=left>其中，DatabaseManager和SqlTool都可以有命令行参数，你可以用-?来察看它们有什么参数。DatabaseManager和Transfer都有图形界面可以更好地交互。<BR>&nbsp;<BR><STRONG>1.3 运行HSQLDB</STRONG><BR>&nbsp;<BR>HSQLDB可以通过多种不同的方式来运行，通常把它分为Server模式和In-Process模式(也叫做Standalone模式)，对于每种模式，Jar中都有相应的子程序来运行HSQLDB。<BR>&nbsp;<BR>每个HSQLDB数据库包含2到5个命名相同但扩展名不同的文件组成，他们位于同一个目录下。例如，名为“test”的数据库包含了以下几个文件：&nbsp;<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">test.properties<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>test.script<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>test.log&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>test.dat&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>test.backup</SPAN></DIV>
<P align=left>properties文件包含了数据库的基本配置，script文件包含了Table的定义和其他相关的数据对象,以及non-cached表的数据。log文件记录了数据库最近所做的更新。dat文件包含了cached表的数据，backup文件是上一次数据库持久化后的压缩备份文件，所有的这些文件都是最基本的，绝对不能删除。如果你的数据库没有缓冲表(cached table),test.data和test.backup文件是不会存在。此外，HSQLDB数据库可以链接到磁盘上任何地方任何格式的文本文件，比如CSV 列表。<BR>&nbsp;<BR>当"test"数据库正在运行时,test.log文件用来记录所有的操作记录，"test.log"文件将在数据库正常关闭(ShutDown)情况下自动删除。否则（在非正常退出的时候），它将用来在下次启动HSQLDB时恢复"test.log"中记录的更新操作。"test.lck"文件也可以用来记录数据库是否被打开，它在HSQLDB正常退出的时候会被移除。有些情况下，HSQLDB会生成"test.data.old "文件，但随后会被删除掉。<BR><BR><STRONG>注意:</STRONG> 当HSQLDB引擎关闭数据库的时候，它会产生扩展名为.new的临时文件，然后会把这些文件重命名为上面所列出的文件的名称。<BR></P><img src ="http://www.blogjava.net/znjqolf/aggbug/32335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/znjqolf/" target="_blank">Vincent Thinking</a> 2006-02-24 19:55 <a href="http://www.blogjava.net/znjqolf/archive/2006/02/24/32335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebWork2.2 Released!</title><link>http://www.blogjava.net/znjqolf/archive/2006/01/12/27689.html</link><dc:creator>Vincent Thinking</dc:creator><author>Vincent Thinking</author><pubDate>Thu, 12 Jan 2006 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/znjqolf/archive/2006/01/12/27689.html</guid><wfw:comment>http://www.blogjava.net/znjqolf/comments/27689.html</wfw:comment><comments>http://www.blogjava.net/znjqolf/archive/2006/01/12/27689.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/znjqolf/comments/commentRss/27689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/znjqolf/services/trackbacks/27689.html</trackback:ping><description><![CDATA[WebWork 2.2 Released at January 11, 2006 <BR><BR>新版本是非常值得期待的. <BR><BR>
<LI>Full support for Java 5 Annotations and Generics 
<LI>Rich <SPAN class=caps>AJAX </SPAN>support using <A href="http://getahead.ltd.uk/dwr"><SPAN class=caps>DWR</SPAN></A> and <A href="http://dojotoolkit.org/">Dojo</A> 
<LI>New QuickStart tool makes development easier than ever 
<LI>Tons more documentation with over 900 <SPAN class=caps>PDF </SPAN>pages! 
<LI>Client side validation using <SPAN class=caps>AJAX </SPAN>or plain JavaScript 
<LI>Built in support for Continuations 
<LI><SPAN class=caps>JSR168</SPAN>/Portlet support for several popular Portlet servers, including Pluto 
<LI>Rich UI template framework with native support for <SPAN class=caps>JSP,</SPAN> FreeMarker, and Velocity 
<LI>Native support for Spring and Pico <SPAN class=caps>IOC </SPAN>containers 
<LI>More intelligent error reporting 
<LI>Developer Mode makes building webapps even easier with improved error reporting 
<LI>Simplified tag syntax 
<LI>Advanced data binding framework that works with any object, including domain objects </LI>
<P>2.2版本是WebWork的一个新的里程碑, 接下来的主要精力将会投入到<A href="http://struts.apache.org/struts-action/index.html">Struts Action Framework</A>&nbsp;Version2.0</P><img src ="http://www.blogjava.net/znjqolf/aggbug/27689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/znjqolf/" target="_blank">Vincent Thinking</a> 2006-01-12 11:09 <a href="http://www.blogjava.net/znjqolf/archive/2006/01/12/27689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>