﻿<?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-雪山飞鹄-随笔分类-struts2</title><link>http://www.blogjava.net/sxyx2008/category/42290.html</link><description>温馨提示：您的每一次转载,体现了我写此文的意义!!!烦请您在转载时注明出处http://www.blogjava.net/sxyx2008/谢谢合作!!!
</description><language>zh-cn</language><lastBuildDate>Tue, 02 Apr 2013 13:26:43 GMT</lastBuildDate><pubDate>Tue, 02 Apr 2013 13:26:43 GMT</pubDate><ttl>60</ttl><item><title>基于maven的多框架和多视图融合技术(Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、DWR)</title><link>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Tue, 25 Sep 2012 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/388490.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/388490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/388490.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">该项目基于maven3.0构建的，项目中融合了Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、Spring JDBC、Spring DWR。页面展现这里使用Struts1、Struts2、SpringMVC（jsp视图、velocity视图、freemarker视图、pdf视图、excel视图、xml视图、json视图等）。是一个综合性行的项目。该项目后期会陆续集成Spring的一些好的框架进来比如说Spring Web Flow、Spring Security 、Jbpm、WebService、Compass、Solr、nutch等。总之是一个综合性的项目。该项目不处理业务，主要是把目前自己工作中用到过的各种框架糅合到一个项目中。纯粹是一个jee框架的糅合，主要是介绍各种技术。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">介绍下目前使用的各个框架的版本信息</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Struts1 1.3.10</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Struts2 2.3.8</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Spring 3.2.0.RELEASE</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Hibernate 4.2.0.Final</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Ibatis 2.3.4.726</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">MyBatis 3.1.1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Spring Data JPA 1.3.0.RELEASE</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">DWR 3.0.M1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">项目中的持久化框架sql语句的跟踪采用了log4jdbc4结合log4j，在控制台可以看到完整的sql语句。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">该项目中使用到的技术均与Spring已集成。除了DWR与Spring集成使用xml文件中配置bean外 其他的bean均使用注解完善。每一个与数据库有关的都有事务处理。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">项目结构图</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><img style="border-bottom: medium none; border-left: medium none; border-top: medium none; border-right: medium none" alt="" src="https://maven-framework-project.googlecode.com/files/project-map.jpg" /><br />
</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="orphans: auto; widows: auto;">项目托管SVN地址：</span><a href="http://maven-framework-project.googlecode.com/svn/trunk/" style="color: #ca0000; text-decoration: none; orphans: auto; widows: auto;">http://maven-framework-project.googlecode.com/svn/trunk/</a>&nbsp;<span style="orphans: auto; widows: auto; color: #ff0000;">(限于大陆google code 不稳定,导致经常无法访问,该地址已不在同步,建议使用github地址)</span><br style="orphans: auto; widows: auto;" />
<span style="orphans: auto; widows: auto;">项目托管GitHub地址：</span><a href="https://github.com/sxyx2008/maven-framework-project/" style="color: #ca0000; text-decoration: none; orphans: auto; widows: auto;">https://github.com/sxyx2008/maven-framework-project/</a><span style="orphans: auto; widows: auto; color: #ff0000;">（推荐使用）</span><br />
</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">最后希望有兴趣的朋友可以加入进来，大家一起完善他。把自己的技术分享出来。如有任何问题可以与我联系</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">联系方式</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">QQ：184675420</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Email：sxyx2008@gmail.com</p><img src ="http://www.blogjava.net/sxyx2008/aggbug/388490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2012-09-25 11:40 <a href="http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用urlrewrite美化struts请求地址</title><link>http://www.blogjava.net/sxyx2008/archive/2011/11/24/364706.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Thu, 24 Nov 2011 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2011/11/24/364706.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/364706.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2011/11/24/364706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/364706.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/364706.html</trackback:ping><description><![CDATA[<div>JAR版本：urlrewrite-3.2.0.jar<br />web.xml配置 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&nbsp;&nbsp;&nbsp; &lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">UrlRewriteFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">confReloadCheckInterval</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">60</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">confPath</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/WEB-INF/urlrewrite.xml</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">UrlRewriteFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">REQUEST</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">FORWARD</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dispatcher</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></div>urlrewrite.xml 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;urlrewrite&nbsp;PUBLIC&nbsp;"-//tuckey.org//DTD&nbsp;UrlRewrite&nbsp;3.2//EN"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://tuckey.org/res/dtds/urlrewrite3.2.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #008000">&lt;!--</span><span style="color: #008000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;file&nbsp;for&nbsp;UrlRewriteFilter<br />&nbsp;&nbsp;&nbsp;&nbsp;http://tuckey.org/urlrewrite/<br /><br /></span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">urlrewrite</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配地址为<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;形如/content/94/list的地址将跳转到<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/IssuedContentAction.do?dispatch=vContentListBySubid&amp;amp;scope=vmcontent&amp;amp;columninfoid=$1<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">rule</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;地址栏显示的地址&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">from</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/content/([0-9]+)/list</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">from</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;真实的请求地址&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">to&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="forward"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/IssuedContentAction.do?dispatch=vContentListBySubid</span><span style="color: #ff0000">&amp;amp;</span><span style="color: #000000">scope=vmcontent</span><span style="color: #ff0000">&amp;amp;</span><span style="color: #000000">columninfoid=$1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">to</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">rule</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;INSTALLATION<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;your&nbsp;web.xml&nbsp;add<img alt="" src="http://www.blogjava.net/Images/dot.gif" /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&lt;/filter-class&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;logLevel&lt;/param-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;WARN&lt;/param-value&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/init-param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-mapping&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter-mapping&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXAMPLES<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Redirect&nbsp;one&nbsp;url<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;from&gt;/some/old/page.html&lt;/from&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;to&nbsp;type="redirect"&gt;/very/new/page.html&lt;/to&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/rule&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Redirect&nbsp;a&nbsp;directory<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;from&gt;/some/olddir/(.*)&lt;/from&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;to&nbsp;type="redirect"&gt;/very/newdir/$1&lt;/to&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/rule&gt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Clean&nbsp;a&nbsp;url<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;from&gt;/products/([0-9]+)&lt;/from&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;to&gt;/products/index.jsp?product_id=$1&lt;/to&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;eg,&nbsp;/products/1234&nbsp;will&nbsp;be&nbsp;passed&nbsp;on&nbsp;to&nbsp;/products/index.jsp?product_id=1234&nbsp;without&nbsp;the&nbsp;user&nbsp;noticing.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Browser&nbsp;detection<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;condition&nbsp;name="user-agent"&gt;Mozilla/[1-4]&lt;/condition&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;from&gt;/some/page.html&lt;/from&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;to&gt;/some/page-for-old-browsers.html&lt;/to&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;eg,&nbsp;will&nbsp;pass&nbsp;the&nbsp;request&nbsp;for&nbsp;/some/page.html&nbsp;on&nbsp;to&nbsp;/some/page-for-old-browsers.html&nbsp;only&nbsp;for&nbsp;older<br />&nbsp;&nbsp;&nbsp;&nbsp;browsers&nbsp;whose&nbsp;user&nbsp;agent&nbsp;srtings&nbsp;match&nbsp;Mozilla/1,&nbsp;Mozilla/2,&nbsp;Mozilla/3&nbsp;or&nbsp;Mozilla/4.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Centralised&nbsp;browser&nbsp;detection<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;condition&nbsp;name="user-agent"&gt;Mozilla/[1-4]&lt;/condition&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set&nbsp;type="request"&nbsp;name="browser"&gt;moz&lt;/set&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/rule&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;eg,&nbsp;all&nbsp;requests&nbsp;will&nbsp;be&nbsp;checked&nbsp;against&nbsp;the&nbsp;condition&nbsp;and&nbsp;if&nbsp;matched<br />&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute("browser",&nbsp;"moz")&nbsp;will&nbsp;be&nbsp;called.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">urlrewrite</span><span style="color: #0000ff">&gt;</span></div>注意：<br />1、多个参数之间的连接符要用&amp;amp;而不是&amp;<br />2、匹配从应用程序的名称开始匹配<br /><br />浏览器中显示的请求地址(请求链接中填写的地址)<br />/content/91/list<br />真正的请求地址<br />/IssuedContentAction.do?dispatch=vContentListBySubid&amp;scope=vmcontent&amp;columninfoid=91<br /><br /><br /></div><img src ="http://www.blogjava.net/sxyx2008/aggbug/364706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2011-11-24 11:48 <a href="http://www.blogjava.net/sxyx2008/archive/2011/11/24/364706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2、Spring、Hibernate、Lucene整合Compass实现搜索</title><link>http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Thu, 26 May 2011 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/351109.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/351109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/351109.html</trackback:ping><description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;花时间尝试着写了个Struts2+Spring+Hibernate+Compass+Lucene整合的例子.代码和jar包较多，有兴趣的朋友可以去<a href="http://sshcompass.googlecode.com/svn/trunk/">http://sshcompass.googlecode.com/svn/trunk/</a>将工程捡下来。希望和大家一起探讨Compass这个框架。<br /></div> <img src ="http://www.blogjava.net/sxyx2008/aggbug/351109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2011-05-26 17:02 <a href="http://www.blogjava.net/sxyx2008/archive/2011/05/26/351109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jquery之ajaxfileupload异步上传插件</title><link>http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Tue, 02 Nov 2010 08:57:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/336826.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/336826.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/336826.html</trackback:ping><description><![CDATA[<p><a title="点我下载工程代码" href="/Files/sxyx2008/ajaxfile.zip">点我下载工程代码</a><br />
由于项目需求，在处理文件上传时需要使用到文件的异步上传。这里使用Jquery Ajax File Uploader这个组件下载地址<a href="http://www.phpletter.com/download_project_version.php?version_id=6"><font color="#000000">：</font>http://www.phpletter.com/download_project_version.php?version_id=6</a><br />
服务器端采用struts2来处理文件上传。<br />
所需环境：<br />
jquery.js<br />
ajaxfileupload.js<br />
struts2所依赖的jar包<br />
及struts2-json-plugin-2.1.8.1.jar<br />
编写文件上传的Action</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.ajaxfile.action;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.File;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileInputStream;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileOutputStream;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts2.ServletActionContext;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.opensymphony.xwork2.ActionSupport;<br />
<br />
@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">serial</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;FileAction&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;ActionSupport&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;File&nbsp;file;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;fileFileName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;fileFileContentType;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">你已成功上传文件</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getMessage()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;message;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setMessage(String&nbsp;message)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;message;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;File&nbsp;getFile()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;file;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setFile(File&nbsp;file)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;file;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getFileFileName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;fileFileName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setFileFileName(String&nbsp;fileFileName)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.fileFileName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fileFileName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getFileFileContentType()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;fileFileContentType;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setFileFileContentType(String&nbsp;fileFileContentType)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.fileFileContentType&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fileFileContentType;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">deprecation</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;execute()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;path&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ServletActionContext.getRequest().getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/upload</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;f&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getFile();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">this</span><span style="color: #000000">.getFileFileName().endsWith(</span><span style="color: #000000">"</span><span style="color: #000000">.exe</span><span style="color: #000000">"</span><span style="color: #000000">)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">对不起,你上传的文件格式不允许!!!</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;ERROR;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;inputStream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(f);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;outputStream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(path&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getFileFileName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;buf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">1024</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;length&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;((length&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;inputStream.read(buf))&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outputStream.write(buf,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inputStream.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outputStream.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">对不起,文件上传失败了!!!!</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;SUCCESS;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
struts.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;struts&nbsp;PUBLIC&nbsp;"-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.1//EN"&nbsp;"http://struts.apache.org/dtds/struts-2.1.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">struts</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">package&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="struts2"</span><span style="color: #ff0000">&nbsp;extends</span><span style="color: #0000ff">="json-default"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">action&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="fileUploadAction"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="com.ajaxfile.action.FileAction"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">result&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="json"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="success"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="contentType"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text/html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">result</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">result&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="json"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="error"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="contentType"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text/html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">result</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">action</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">package</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">struts</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span></div>
注意结合Action观察struts.xml中result的配置。&nbsp;
<p>contentType参数是一定要有的，否则浏览器总是提示将返回的JSON结果另存为文件，不会交给ajaxfileupload处理。这是因为struts2 JSON Plugin默认的contentType为application/json，而ajaxfileupload则要求为text/html。 <br />
文件上传的jsp页面<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="background-color: #ffff00; color: #000000">&lt;%</span><span style="background-color: #f5f5f5; color: #000000">@&nbsp;page&nbsp;language</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">java</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;contentType</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">text/html;&nbsp;charset=UTF-8</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;pageEncoding</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">UTF-8</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #ffff00; color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Type"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="text/html;&nbsp;charset=UTF-8"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Insert&nbsp;title&nbsp;here</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="js/jquery.js"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="js/ajaxfileupload.js"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;ajaxFileUpload()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">#loading</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ajaxStart(</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="background-color: #f5f5f5; color: #0000ff">this</span><span style="background-color: #f5f5f5; color: #000000">).show();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">开始上传文件时显示一个图片</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ajaxComplete(</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="background-color: #f5f5f5; color: #0000ff">this</span><span style="background-color: #f5f5f5; color: #000000">).hide();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">文件上传完成将图片隐藏起来</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajaxFileUpload<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:'fileUploadAction.action',</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">用于文件上传的服务器端请求地址</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secureuri:</span><span style="background-color: #f5f5f5; color: #0000ff">false</span><span style="background-color: #f5f5f5; color: #000000">,</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">一般设置为false</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileElementId:'file',</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">文件上传空间的id属性&nbsp;&nbsp;&lt;input&nbsp;type="file"&nbsp;id="file"&nbsp;name="file"&nbsp;/&gt;</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType:&nbsp;'json',</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">返回值类型&nbsp;一般设置为json</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;(data,&nbsp;status)&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">服务器成功响应处理函数</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(data.message);</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">从服务器返回的json中取出message中的数据,其中message为在struts2中action中定义的成员变量</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">if</span><span style="background-color: #f5f5f5; color: #000000">(</span><span style="background-color: #f5f5f5; color: #0000ff">typeof</span><span style="background-color: #f5f5f5; color: #000000">(data.error)&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">!=</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;'undefined')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">if</span><span style="background-color: #f5f5f5; color: #000000">(data.error&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">!=</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;'')<br />
&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 />
&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;alert(data.error);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="background-color: #f5f5f5; color: #0000ff">else</span><span style="background-color: #f5f5f5; color: #000000"><br />
&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 />
&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;alert(data.message);<br />
&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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error:&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;(data,&nbsp;status,&nbsp;e)</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">服务器响应失败处理函数</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">return</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">false</span><span style="background-color: #f5f5f5; color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">img&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="loading.gif"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="loading"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="display:&nbsp;none;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="上传"</span><span style="color: #ff0000">&nbsp;onclick</span><span style="color: #0000ff">="return&nbsp;ajaxFileUpload();"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<p>&nbsp;注意观察&lt;body&gt;中的代码，并没有form表单。只是在按钮点击的时候触发ajaxFileUpload()方法。需要注意的是js文件引入的先后顺序，ajaxfileupload.js依赖于jquery因此你知道的。<br />
<a title="点我下载工程代码" href="/Files/sxyx2008/ajaxfile.zip">点我下载工程代码</a></p>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/336826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-11-02 16:57 <a href="http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>标签大全</title><link>http://www.blogjava.net/sxyx2008/archive/2010/07/28/327276.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Wed, 28 Jul 2010 00:45:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/07/28/327276.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/327276.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/07/28/327276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/327276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/327276.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web开发这块，视图层各式各样的框架层出不穷，由此引来的标签也层出不穷。时间长了，可能对每个框架中的标签很容易混淆。所以这是件很痛苦的事。曾经在网上寻找关于标签汇总这一方面的网站，始终没有找到。功夫不负有心人，国人做到了这一点，早上奇迹般的发现了这个网站。<a href="http://www.web-tag.net/index.htm">http://www.web-tag.net/index.htm</a>，仔细一看还很全的。正是我所需要的，不敢独享，拿出来跟大家分享下。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;网址：<a href="http://www.web-tag.net/index.htm">http://www.web-tag.net/index.htm</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/tags.jpg" />
<img src ="http://www.blogjava.net/sxyx2008/aggbug/327276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-07-28 08:45 <a href="http://www.blogjava.net/sxyx2008/archive/2010/07/28/327276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2自定义类型转换</title><link>http://www.blogjava.net/sxyx2008/archive/2010/01/12/309151.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Tue, 12 Jan 2010 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/01/12/309151.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/309151.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/01/12/309151.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/309151.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/309151.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原理struts2的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2已经为我们提供了几乎所有的primitive类型以及常用类型(如Date)的类型转换器,我们也可以为我们自定义类添加自定义类型转化器.struts2为我们提供了一个类型转化器的入口: ognl.DefaultTypeConverter,或继承org.apache.struts2.util.StrutsT...&nbsp;&nbsp;<a href='http://www.blogjava.net/sxyx2008/archive/2010/01/12/309151.html'>阅读全文</a><img src ="http://www.blogjava.net/sxyx2008/aggbug/309151.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-01-12 14:37 <a href="http://www.blogjava.net/sxyx2008/archive/2010/01/12/309151.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2验证框架校验</title><link>http://www.blogjava.net/sxyx2008/archive/2009/10/23/299512.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Fri, 23 Oct 2009 09:42:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/10/23/299512.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/299512.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/10/23/299512.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/299512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/299512.html</trackback:ping><description><![CDATA[<p align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 鉴于此文图片丢失,影响阅读质量,特上传此博文word文档,广大网友可<a title="点此下载word文档" href="http://www.blogjava.net/Files/sxyx2008/struts2validation.doc">点此下载word文档</a></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">呵呵，最近一直在看</span><span style="font-size: 9pt">struts2</span><span style="font-family: 宋体; font-size: 9pt">方面的资料。大家都知道</span><span style="font-size: 9pt">web</span><span style="font-family: 宋体; font-size: 9pt">开发过程中，我们经常要处理客户端</span><span style="font-size: 9pt">(</span><span style="font-family: 宋体; font-size: 9pt">用户</span><span style="font-size: 9pt">)</span><span style="font-family: 宋体; font-size: 9pt">提交过来的数据</span><span style="font-size: 9pt">(</span><span style="font-family: 宋体; font-size: 9pt">增加记录</span><span style="font-size: 9pt">)</span><span style="font-family: 宋体; font-size: 9pt">及后台数据库查询出来的数据</span><span style="font-size: 9pt">(</span><span style="font-family: 宋体; font-size: 9pt">修改记录</span><span style="font-size: 9pt">),</span><span style="font-family: 宋体; font-size: 9pt">这里难免会出现一些不符合要求的数据，我们称为&#8220;脏数据&#8221;。这里就借助于</span><span style="font-size: 9pt">struts2</span><span style="font-family: 宋体; font-size: 9pt">提供的验证框架来做数据的验证</span><span style="font-size: 9pt">(</span><span style="font-family: 宋体; font-size: 9pt">其实它依赖的还是</span><span style="font-size: 9pt">webwork)</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">在使用</span><span style="font-size: 9pt">struts2</span><span style="font-family: 宋体; font-size: 9pt">或者说</span><span style="font-size: 9pt">webwork</span><span style="font-family: 宋体; font-size: 9pt">的验证框架时必须遵守以下几点：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">在这里不要管为什么，人家就是这么约定的，我们只要照做就是了。除非你是科研人员，如果仅仅是项目需要，建议大家还是不要在这上面花过多的时间，不值得。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">在对应的</span><span style="color: red; font-size: 9pt">Action</span><span style="font-family: 宋体; color: red; font-size: 9pt">的包下</span><span style="color: red; font-size: 9pt">(</span><span style="font-family: 宋体; color: red; font-size: 9pt">必须跟该</span><span style="color: red; font-size: 9pt">Action</span><span style="font-family: 宋体; color: red; font-size: 9pt">在同一个目录</span><span style="color: red; font-size: 9pt">)</span><span style="font-family: 宋体; font-size: 9pt">创建验证框架规则</span><span style="font-size: 9pt">(.xml</span><span style="font-family: 宋体; font-size: 9pt">文件</span><span style="font-size: 9pt">)</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">该</span><span style="font-size: 9pt">xml</span><span style="font-family: 宋体; font-size: 9pt">文件的命名必须遵守如下规则</span><span style="font-size: 9pt">:</span></p>
<p style="text-indent: -21pt; margin-left: 42pt; tab-stops: list 42.0pt"><span style="color: red; font-size: 9pt">1)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体; color: red; font-size: 9pt">该文件必须跟该对应的</span><span style="color: red; font-size: 9pt">Action</span><span style="font-family: 宋体; color: red; font-size: 9pt">在同一个目录</span></p>
<p style="text-indent: -21pt; margin-left: 42pt; tab-stops: list 42.0pt"><span style="font-size: 9pt">2)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">的名字</span><span style="font-size: 9pt">---</span><span style="font-family: 宋体; font-size: 9pt">对应</span><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">中的方法名</span><span style="font-size: 9pt">(execute</span><span style="font-family: 宋体; font-size: 9pt">方法除外</span><span style="font-size: 9pt">)-validation.xml</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">如：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">如图所示该文件名由三部分组成：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">第一部分：</span><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">的类名</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">第二部分：</span><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">中的方法名</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体; font-size: 9pt">第三部分：</span><span style="font-size: 9pt">validation.xml(</span><span style="font-family: 宋体; font-size: 9pt">固定</span><span style="font-size: 9pt">)</span></p>
<p><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 9pt">这三部分之间用横线连接</span><span style="font-size: 9pt">-</span></p>
<p><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 9pt">验证规则</span><span style="font-size: 9pt">(EmployeeAction-updateEmployee-validation.xml)</span><span style="font-family: 宋体; font-size: 9pt">内容</span></p>
<p><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; font-size: 9pt">因为</span><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">是基于模型驱动的即在</span><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">引用了对象模型，所以在写验证规则的时候字段属性为</span><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">中对象模型名</span><span style="font-size: 9pt">.</span><span style="font-family: 宋体; font-size: 9pt">具体的属性</span><span style="font-size: 9pt">()</span></p>
<p><span style="font-size: 9pt">Action</span><span style="font-family: 宋体; font-size: 9pt">中的引用关系</span></p>
<p><span style="font-size: 9pt">EmployeeAction-updateEmployee-validation.xml</span><span style="font-family: 宋体; font-size: 9pt">中的配置内容</span></p>
<p><span style="font-family: 宋体; font-size: 9pt">详细参看</span><span style="font-size: 9pt">EmployeeAction-updateEmployee-validation.xml</span><span style="font-family: 宋体; font-size: 9pt">中的配置</span></p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="568">
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;?</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">xml </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">version</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"1.0" </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">encoding</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"UTF-8"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">?&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;!</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">DOCTYPE </span><span style="font-family: 'Courier New'; color: navy; font-size: 9pt">validators </span><span style="font-family: 'Courier New'; color: gray; font-size: 9pt">PUBLIC </span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: gray; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: navy; font-size: 9pt">"-//OpenSymphony Group//XWork Validator 1.0.2//EN" </span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: navy; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 9pt">"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">validators</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"employee.empName"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">type</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"requiredstring"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span><span style="font-family: 宋体; color: black; font-size: 9pt">雇员姓名不能为空</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"employee.age"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">type</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"required"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span><span style="font-family: 宋体; color: black; font-size: 9pt">雇员年龄不能为空</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"employee.sex"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">type</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"requiredstring"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span><span style="font-family: 宋体; color: black; font-size: 9pt">雇员性别不能为空</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"employee.context"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">type</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"requiredstring"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span><span style="font-family: 宋体; color: black; font-size: 9pt">雇员备注信息不能为空</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            <p><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">validators</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">name</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"</span><span style="font-family: 宋体; color: #2a00ff; font-size: 9pt">验证字段</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">(Action</span><span style="font-family: 宋体; color: #2a00ff; font-size: 9pt">中对象模型名字</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">.</span><span style="font-family: 宋体; color: #2a00ff; font-size: 9pt">具体的属性</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">)"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator </span><span style="font-family: 'Courier New'; color: #7f007f; font-size: 9pt">type</span><span style="font-family: 'Courier New'; color: black; font-size: 9pt">=</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 9pt">"requiredstring"</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: teal; font-size: 9pt">验证规则</span></p>
<p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span><span style="font-family: 宋体; color: black; font-size: 9pt">验证出错信息</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">message</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field-validator</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 9pt">field</span><span style="font-family: 'Courier New'; color: teal; font-size: 9pt">&gt;</span></p>
<p><span style="font-family: 宋体; font-size: 9pt">最后千万别忘了在</span><span style="font-size: 9pt">struts.xml</span><span style="font-family: 宋体; font-size: 9pt">文件中一定要配置一个结果为</span><span style="font-size: 9pt">input</span><span style="font-family: 宋体; font-size: 9pt">的转向</span></p>
<p><span style="font-family: 宋体; font-size: 9pt">否则验证失败时会出现如下错误</span><span style="font-size: 9pt">:<br />
<br />
<br />
鉴于此文图片丢失,影响阅读质量,特上传此博文word文档,广大网友可<a title="点此下载word文档" href="http://www.blogjava.net/Files/sxyx2008/struts2validation.doc">点此下载word文档</a></span></p>
 <img src ="http://www.blogjava.net/sxyx2008/aggbug/299512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-10-23 17:42 <a href="http://www.blogjava.net/sxyx2008/archive/2009/10/23/299512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2文件上传</title><link>http://www.blogjava.net/sxyx2008/archive/2009/10/22/299285.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Thu, 22 Oct 2009 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/10/22/299285.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/299285.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/10/22/299285.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/299285.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/299285.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; Struts2文件上传大家都知道struts2对文件上传做了很好的封装，使文件上传不再那么恐怖。这里面struts2的文件上传主要依赖的是org.apache.struts2.interceptor.FileUploadInterceptor这个拦截器关于这个拦截器我不想做过多的研究，这里主要讨论的是该拦截器里面定义的几个关于文件上传的重要属性。     ...&nbsp;&nbsp;<a href='http://www.blogjava.net/sxyx2008/archive/2009/10/22/299285.html'>阅读全文</a><img src ="http://www.blogjava.net/sxyx2008/aggbug/299285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-10-22 09:35 <a href="http://www.blogjava.net/sxyx2008/archive/2009/10/22/299285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2文件上传一些小细节</title><link>http://www.blogjava.net/sxyx2008/archive/2009/10/21/299157.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Wed, 21 Oct 2009 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/10/21/299157.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/299157.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/10/21/299157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/299157.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/299157.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; Struts2文件上传一些小细节大家都知道struts2对文件上传做了很好的封装，使文件上传不再那么恐怖。这里面struts2的文件上传主要依赖的是org.apache.struts2.interceptor.FileUploadInterceptor这个拦截器关于这个拦截器我不想做过多的研究，这里主要讨论的是该拦截器里面定义的几个关于文件上传的重要属性。  ...&nbsp;&nbsp;<a href='http://www.blogjava.net/sxyx2008/archive/2009/10/21/299157.html'>阅读全文</a><img src ="http://www.blogjava.net/sxyx2008/aggbug/299157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-10-21 10:33 <a href="http://www.blogjava.net/sxyx2008/archive/2009/10/21/299157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2整合spring Action注意事项</title><link>http://www.blogjava.net/sxyx2008/archive/2009/10/20/299065.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Tue, 20 Oct 2009 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/10/20/299065.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/299065.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/10/20/299065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/299065.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/299065.html</trackback:ping><description><![CDATA[Struts2整合spring时应注意action的单实例问题<br />
注意要设置，action bean 的 scope 的值。因为spring的bean默认为单实例singleton，故一定要设scope的值但不能为singleton。建议设置为prototype或request
 <img src ="http://www.blogjava.net/sxyx2008/aggbug/299065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-10-20 16:54 <a href="http://www.blogjava.net/sxyx2008/archive/2009/10/20/299065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2取值</title><link>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298842.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 19 Oct 2009 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298842.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/298842.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/298842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/298842.html</trackback:ping><description><![CDATA[取值要通过&lt;s:property value="" /&gt;或在任意的&lt;s:/&gt;标签内使用%{}； <br />
<br />
当Action的valueStack中有该属性的值时，只需直接使用该属性的名字即可； <br />
<br />
当Action的valueStack中没有该属性的值时，比如在session,application范围中的属性值时，需要加#或者#attr.； <br />
<br />
例子： <br />
假设某Action中有person成员变量，在application中存在company属性 <br />
那么我们可以通过以下方法取值： <br />
&lt;s:property value="person.name" /&gt; <br />
&lt;s:property value="#person.name" /&gt; <br />
&lt;s:property value="company.name" /&gt; //无法取到，因为company不在action的valueStack中 <br />
&lt;s:property value="#company.name" /&gt; <br />
<br />
<span class="hilite1">&lt;s:textfield</span> name="person.name" value="person.name" /&gt; //错误，value会直接显示person.name字样 <br />
<span class="hilite1">&lt;s:textfield</span> name="person.name" value="%{person.name}" /&gt; <br />
<span class="hilite1">&lt;s:textfield</span> name="person.company.name" value="%{#company.name}" /&gt; <br />
<span class="hilite1">&lt;s:textfield</span> name="person.company.name" value="%{#attr.company.name}" /&gt; 
 <img src ="http://www.blogjava.net/sxyx2008/aggbug/298842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-10-19 14:16 <a href="http://www.blogjava.net/sxyx2008/archive/2009/10/19/298842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2乱码</title><link>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298841.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 19 Oct 2009 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298841.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/298841.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2009/10/19/298841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/298841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/298841.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">最近学习</span>struts2<span style="font-family: 宋体">是一个问题接着一个问题的遇到</span></p>
<p style="text-align: left" align="left"><span style="font-family: 宋体">刚解决了</span><u><span style="color: navy; font-family: 'Courier New'">java.lang.IllegalArgumentException</span></u><span style="color: black; font-family: 'Courier New'">: attempt to create saveOrUpdate event with null entity</span></p>
<p><span style="font-family: 宋体">接着就来最讨厌的乱码问题，我数据库用的</span>mysql<span style="font-family: 宋体">，大家都知道</span>mysql<span style="font-family: 宋体">本省就有可能出现乱码，加之现在跟</span>struts2<span style="font-family: 宋体">混合在一起，指不定会出现什么乱七八糟的编码，这谁也说不清楚</span></p>
<p><span style="color: red; font-family: 宋体">整体思路那就是统一编码</span><span style="color: red">(</span><span style="color: red; font-family: 宋体">所有的内容都采用同一个编码</span><span style="color: red">)</span></p>
<p><span style="font-family: 宋体">大概从这几个方面来排查</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">首先确认</span>mysql<span style="font-family: 宋体">的字符编码，他默认为拉丁文</span>,<span style="font-family: 宋体">这里我修改为</span>gbk</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">在</span>jsp<span style="font-family: 宋体">页面中明确指明编码类型</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: #bf5f3f; font-family: 'Courier New'">&lt;%@ </span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">page </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">language</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"java" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">contentType</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"text/html; charset=gbk"</span></p>
            <p style="text-indent: 21pt"><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">pageEncoding</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"gbk"</span><span style="font-size: 9pt; color: #bf5f3f; font-family: 'Courier New'">%&gt;</span></p>
            <p style="text-indent: 21pt"><span style="font-size: 9pt; font-family: 宋体">上面的意思是指定</span><span style="font-size: 9pt">tomcat</span><span style="font-size: 9pt; font-family: 宋体">的编码为</span><span style="font-size: 9pt">gbk</span></p>
            <p><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">meta </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">http-equiv</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"Content-Type" </span><span style="font-size: 9pt; color: #7f007f; font-family: 'Courier New'">content</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 9pt; color: #2a00ff; font-family: 'Courier New'">"text/html; charset=gbk"</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; font-family: 宋体">下面的意思是指定</span><span style="font-size: 9pt">web</span><span style="font-size: 9pt; font-family: 宋体">浏览器的编码为</span><span style="font-size: 9pt">gbk</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">c)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">习惯性的加上</span>spring<span style="font-family: 宋体">的字符过滤器</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p><span style="font-family: 宋体">在</span>web.xml<span style="font-family: 宋体">中添加过滤器</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">CharacterEncodingFilter</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-class</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">org.springframework.web.filter.CharacterEncodingFilter</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-class</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">init-param</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">encoding</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">gbk</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">init-param</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">init-param</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">forceEncoding</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">true</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">init-param</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-mapping</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">CharacterEncodingFilter</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-name</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New'">/*</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            <p><span style="font-size: 9pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 9pt; color: #3f7f7f; font-family: 'Courier New'">filter-mapping</span><span style="font-size: 9pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">d)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">最后别忘了在</span>struts.xml<span style="font-family: 宋体">或</span>struts.properties<span style="font-family: 宋体">中覆盖</span>struts2<span style="font-family: 宋体">默认国际化的编码格式</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">constant </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">name</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"struts.i18n.encoding" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">value</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"gbk"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">constant</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">到此编码应该已经统一为</span>gbk<span style="font-family: 宋体">了，看看结果吧</span></p>
<p><span style="font-family: 宋体">其实最简单的放法就是把数据库和</span>jsp<span style="font-family: 宋体">中的编码统一设置为</span>utf-8<span style="font-family: 宋体">即可</span></p>
 <img src ="http://www.blogjava.net/sxyx2008/aggbug/298841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2009-10-19 14:08 <a href="http://www.blogjava.net/sxyx2008/archive/2009/10/19/298841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>