﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-走在空中的人-随笔分类-struts</title><link>http://www.blogjava.net/wx886104/category/34067.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Jul 2010 02:05:13 GMT</lastBuildDate><pubDate>Tue, 27 Jul 2010 02:05:13 GMT</pubDate><ttl>60</ttl><item><title>Struts2校验框架(转)</title><link>http://www.blogjava.net/wx886104/archive/2010/07/27/327189.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 27 Jul 2010 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2010/07/27/327189.html</guid><description><![CDATA[[标题]:[原]Struts2校验框架<br />
[时间]:2009-7-27<br />
[摘要]:校验框架配置、客户端校验<br />
[关键字]:浪曦视频，Struts2应用开发系列，WebWork，Apache，validation<br />
[环境]:struts-2.1.6、JDK6、MyEclipse7、Tomcat6<br />
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys<br />
<br />
[正文]:<br />
&nbsp;&nbsp; &nbsp;Struts校验框架提供了一种不用编写代码，只需修改配置文件即可对输入进行校验的功能。代码方式校验，即重写validate()方法。实际应用中，<strong>validate()与校验框架一般只选其一</strong>。<br />
<br />
1、校验框架配置<br />
&nbsp;&nbsp; &nbsp;在RegisterAction.java相同目录新建校验框架配置文件RegisterAction-validation.xml。RegisterAction-validation.xml的DTD可以复制struts自带的示例struts2-mailreader-2.1.6中的DTD:<br />
<div class="mycode">&lt;!DOCTYPE validators PUBLIC <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"-//OpenSymphony Group//XWork Validator 1.0.2//EN" <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"http://www.opensymphony.com/xwork/<strong>xwork-validator-1.0.2.dtd</strong>"&gt;<br />
</div>
<br />
xwork-validator-1.0.2.dtd:<br />
<div class="mycode">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
<br />
&lt;!--<br />
&nbsp; XWork Validators DTD.<br />
&nbsp; Used the following DOCTYPE.<br />
&nbsp; <br />
&nbsp; &lt;!DOCTYPE validators PUBLIC <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"-//OpenSymphony Group//XWork Validator 1.0.2//EN" <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"&gt;<br />
--&gt;<br />
<br />
<br />
&lt;!ELEMENT validators (field|validator)+&gt;<br />
<br />
&lt;!ELEMENT field (field-validator+)&gt;<br />
&lt;!ATTLIST field<br />
&nbsp;&nbsp; &nbsp;name CDATA #REQUIRED<br />
&gt;<br />
<br />
&lt;!ELEMENT field-validator (param*, message)&gt;<br />
&lt;!ATTLIST field-validator<br />
&nbsp;&nbsp; &nbsp;type CDATA #REQUIRED<br />
&nbsp;&nbsp;&nbsp; short-circuit (true|false) "false"<br />
&gt;<br />
<br />
&lt;!ELEMENT validator (param*, message)&gt;<br />
&lt;!ATTLIST validator<br />
&nbsp;&nbsp; &nbsp;type CDATA #REQUIRED<br />
&nbsp;&nbsp;&nbsp; short-circuit (true|false) "false"<br />
&gt;<br />
<br />
&lt;!ELEMENT param (#PCDATA)&gt;<br />
&lt;!ATTLIST param<br />
&nbsp;&nbsp;&nbsp; name CDATA #REQUIRED<br />
&gt;<br />
<br />
&lt;!ELEMENT message (#PCDATA)&gt;<br />
&lt;!ATTLIST message<br />
&nbsp;&nbsp;&nbsp; key CDATA #IMPLIED<br />
&gt;<br />
</div>
<br />
<br />
RegisterAction-validation.xml:<br />
<div class="mycode">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE validators PUBLIC <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"-//OpenSymphony Group//XWork Validator 1.0.2//EN" <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"&gt;<br />
&nbsp;<br />
&nbsp;&lt;validators&gt;<br />
&nbsp;&lt;!-- &nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;与field等价的validator<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;validator type="requiredstring"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="fieldName"&gt;name&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;name required&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;/validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;validator type="stringlength"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="fieldName"&gt;name&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="minLength"&gt;6&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="maxLength"&gt;10&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;name length range : ${minLength} ~ ${maxLength}&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;/validator&gt;<br />
&nbsp;--&gt;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;field name="name"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;field-validator <strong>type="requiredstring"</strong> &gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;name required&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;field-validator type="stringlength"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="<strong>minLength</strong>"&gt;6&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="maxLength"&gt;10&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;name length range : <strong>${minLength}</strong> ~ ${maxLength}&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;/field&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;field name="age"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;field-validator type="conversion" <strong>short-circuit="true"</strong>&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;the field age conversion error&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;field-validator type="int"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="min"&gt;1&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="max"&gt;150&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;age range: ${min} ~ ${max}&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;/field&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;field name="birthday"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;field-validator <strong>type="required"</strong>&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;birthday required&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;field-validator type="date"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="min"&gt;2009-01-01&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="max"&gt;2009-12-31&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;birthday range: ${min} ~ ${max}&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;/field&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;field name="email"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;field-validator type="email"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;invalid email address&lt;/message&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;/field&gt;<br />
&nbsp;&lt;/validators&gt;<br />
</div>
<br />
说明:<br />
a.校验框架有两种校验方式:field和validator。<br />
field校验:先指定需要校验的属性，再指定校验方式。validator校验:先指定校验方式，再指定需要校验的属性。两种方式是等价的。<br />
<br />
field校验:<br />
&lt;field name="name"&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;field-validator type="requiredstring" &gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;name required&lt;/message&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;field-validator type="stringlength"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="minLength"&gt;6&lt;/param&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;param name="maxLength"&gt;10&lt;/param&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;message&gt;name length range : ${minLength} ~ ${maxLength}&lt;/message&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;/field-validator&gt;<br />
&lt;/field&gt;<br />
<br />
validator校验:<br />
&lt;validator type="requiredstring"&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;param name=<strong>"fieldName"</strong>&gt;name&lt;/param&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;message&gt;name required&lt;/message&gt;<br />
&lt;/validator&gt;<br />
&lt;validator type="stringlength"&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;param name=<strong>"fieldName"</strong>&gt;name&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;param name="trim"&gt;true&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;param name="minLength"&gt;6&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;param name="maxLength"&gt;10&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;message&gt;name length range : ${minLength} ~ ${maxLength}&lt;/message&gt;<br />
&lt;/validator&gt;<br />
<br />
b.&lt;field-validator type="requiredstring" &gt;中的type及其对应的xwork类可以在xwork-2.1.2.jar/com.opensymphony.xwork2.validator.validators/<strong>default.xml</strong>中查找到。<br />
default.xml:<br />
<div class="mycode">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE validators PUBLIC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "-//OpenSymphony Group//XWork Validator Config 1.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd"&gt;<br />
<br />
&lt;!-- START SNIPPET: validators-default --&gt;<br />
&lt;validators&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/&gt;<br />
&lt;/validators&gt;<br />
&lt;!--&nbsp; END SNIPPET: validators-default --&gt;<br />
</div>
<br />
c. 对于校验&lt;field-validator type="requiredstring" &gt;:String用requiredstring，其它类型用required。<br />
d. 验证错误将默认产生FieldError。<br />
e. <strong>short-circuit="true" </strong>: 一个校验失败，是否是继续执行后续校验。<br />
f. 对于相同属性的FieldError，validate()方法中的验证和RegisterAction-validation.xml中的验证都会执行,并且FieldError都会显示。<br />
执行顺序: RegisterAction-validation.xml =&gt; validate()。<br />
<br />
<br />
2、特定于业务逻辑的局部校验:<br />
对于struts.xml中&lt;action&gt;的method="register"指定的业务方法register()，使用校验RegisterAction-register-validation.xml(与RegisterAction.java在同一目录下)。同时，RegisterAction-validation.xml会被执行。执行顺序:&nbsp; RegisterAction-validation.xml =&gt; RegisterAction-register-validation.xml<br />
<br />
3、Struts2客户端校验<br />
&nbsp;&nbsp; &nbsp;设置struts标签&lt;s:form&gt;中validate="true"。这样就会根据RegisterAction-validation.xml生成页面Javascript，在客户端执行校验。<br />
&nbsp;<br />
&nbsp;注意:<br />
&nbsp;a.<span style="color: red">struts标签不能使用simple主题</span>。<br />
&nbsp;b.Struts2客户端校验功能较弱，一般不用。<br />
<br />
4、FieldError和ActionError的实现<br />
a.真正存放field级别错误信息的对象是LinkedHashMap。<br />
b.该LinkedHashMap的key是String类型的，<span style="color: red">value是ArrayList类型</span>，所以同一个key可以对应多个错误消息。<br />
c.对于Action级别的错误信息，实际上是放置在ArrayList中的。<br />
&nbsp;&nbsp; &nbsp;<br />
[参考资料]:<br />
&nbsp;&nbsp;&nbsp; 《浪曦视频之Struts2应用开发系列》<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/327189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2010-07-27 10:01 <a href="http://www.blogjava.net/wx886104/archive/2010/07/27/327189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初用org.apache.commons.beanutils.ConvertUtils </title><link>http://www.blogjava.net/wx886104/archive/2009/03/04/257710.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Wed, 04 Mar 2009 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2009/03/04/257710.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/257710.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2009/03/04/257710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/257710.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/257710.html</trackback:ping><description><![CDATA[<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'><font face='"Times'  New Roman&quot;>ConvertUtils</font>，这个工具类的职能是在字符串和指定类型的实例之间进行转换。
<p>&nbsp;</p>
</font>
<p>&nbsp;</p>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>目前支持的类型有：
<p>&nbsp;</p>
</font>
<p>&nbsp;</p>
<ul type='"disc"'>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.lang.BigDecimal
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.lang.BigInteger
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>boolean and java.lang.Boolean
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>byte and java.lang.Byte
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>char and java.lang.Character
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.lang.Class
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>double and java.lang.Double
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>float and java.lang.Float
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>int and java.lang.Integer
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>long and java.lang.Long
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>short and java.lang.Short
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.lang.String
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.io.File
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.net.URL
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.sql.Date
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.sql.Time
    <p>&nbsp;</p>
    <li class='"MsoNormal"'  0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt&quot;>java.sql.Timestamp
    <p>&nbsp;</p>
    </li>
</ul>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>总体提供两类功能：
<p>&nbsp;</p>
</font>
<p>&nbsp;</p>
<p class='"MsoNormal"'  0cm mso-list: level1 tab-stops: list 0pt 21pt; TEXT-INDENT: -21pt; l1 lfo1; 21.0pt&quot;><font face='"Times'  New Roman&quot;><font size='"3"'>1.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font size='"3"'>将字符串转换为指定类型；
<p>&nbsp;</p>
</font>
<p>&nbsp;</p>
<p class='"MsoNormal"'  0cm mso-list: level1 tab-stops: list 0pt 21pt; TEXT-INDENT: -21pt; l1 lfo1; 21.0pt&quot;><font face='"Times'  New Roman&quot;><font size='"3"'>2.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font size='"3"'>注册、注销和查询类型转换器；</font></p>
<h5 class='"MsoNormal"'  0cm 0pt&quot;>convert(java.lang.Object&nbsp;value)</h5>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>将任意的实例转变为<font face='"Times'  New Roman&quot;>String</font>，用法非常简单。在尝试的过程中，感觉与调用实例上的<font face='"Times'  New Roman&quot;>toString()</font>方法的效果一样，不知道是不是在这个方法内仅仅是调用了传入实例的<font face='"Times'  New Roman&quot;>toString()</font>方法。</font></p>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'><font face='"Times'  New Roman&quot;><em><font size='"3"'><font face='"Times'  New Roman&quot;>ps:</font>需要读源代码才能清楚。</font></em></font></font></p>
<h5 class='"MsoNormal"'  0cm 0pt&quot;>convert(java.lang.String&nbsp;value, java.lang.Class&nbsp;clazz)
<p>&nbsp;</p>
</h5>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>将字符串<font face='"Times'  New Roman&quot;>value</font>转换为<font face='"Times'  New Roman&quot;>clazz</font>的一个实例；如果失败的话，就以<font face='"Times'  New Roman&quot;>String</font>的形式返回<font face='"Times'  New Roman&quot;>value</font>。
<p>&nbsp;</p>
</font>
<p>&nbsp;</p>
<h5 class='"MsoNormal"'  0cm 0pt&quot;>convert(java.lang.String[]&nbsp;values, java.lang.Class&nbsp;clazz)
<p>&nbsp;</p>
</h5>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>这个方法是对前一方法的加强版，将数组中的每个<font face='"Times'  New Roman&quot;>value</font>都进行转换，最后以<font face='"Times'  New Roman&quot;>Object</font>返回。（数组也是<font face='"Times'  New Roman&quot;>Object</font>啊）
<p>&nbsp;</p>
</font>
<p>&nbsp;</p>
<h5 class='"MsoNormal"'  0cm 0pt&quot;><a href='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#deregister()"' href_cetemp='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#deregister()"'>deregister</a>()和<a href='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#deregister()"' href_cetemp='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#deregister()"'>deregister</a>(java.lang.Class&nbsp;clazz)</h5>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>注销转换器，前者将所有的转换器注销掉，后者只注销对应于<font face='"Times'  New Roman&quot;>clazz</font>的转换器。注销在这里不是彻底删除了，而是将转换器变为默认的转换器（<font face='"Times'  New Roman&quot;>apache commons</font>提供的）。</font></p>
<h5 class='"MsoNormal"'  0cm 0pt&quot;><a href='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#lookup(java.lang.Class)"' href_cetemp='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#lookup(java.lang.Class)"'>lookup</a>(java.lang.Class&nbsp;clazz)</h5>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>获取指定类型<font face='"Times'  New Roman&quot;>clazz</font>的转换器.</font></p>
<h5 class='"MsoNormal"'  0cm 0pt&quot;><a href='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#register(org.apache.commons.beanutils.Converter,' href_cetemp='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/ConvertUtils.html#register(org.apache.commons.beanutils.Converter,'  java.lang.Class)&quot;>register</a>(<a href='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/Converter.html"' href_cetemp='http://www.itepub.net/html/kaifajingcui/Java/2006/0514/"file:///F:/software/apache/commons/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/Converter.html"'>Converter</a>&nbsp;converter, java.lang.Class&nbsp;clazz)</h5>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'>为指定类型<font face='"Times'  New Roman&quot;>clazz</font>注册转换器<font face='"Times'  New Roman&quot;>converter</font>。如果<font face='"Times'  New Roman&quot;>clazz</font>已经存在一个对应的转换器，那么<font face='"Times'  New Roman&quot;>converter</font>，将覆盖原来的转换器。也就是说，我们可以为<font face='"Times'  New Roman&quot;>String,Double</font>创建自定义的类型转换器，并在注册后进行使用。</font></p>
<p class='"MsoNormal"'  0cm 0pt&quot;><font size='"3"'><font face='"Times'  New Roman&quot;><em><font size='"3"'><font face='"Times'  New Roman&quot;>ps:apache</font>的类定义明确，描述非常清楚，所以就不贴出例子了。当然这只是到达可以正常使用的阶段，如果要进行改造或者创建自己的<font face='"Times'  New Roman&quot;>ConvertUtils</font>，那可能需要更多的时间，因为还要去参考<font face='"Times'  New Roman&quot;>ConvertUtilsBean</font>，这里就不详述了。<br />
<br />
以下为使用convertUtils的一个DATE类型的例子（该例子来源于尚学堂视屏）<br />
1.定义converter<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.bjsxt.oa.web;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.ParseException;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.SimpleDateFormat;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Date;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.beanutils.Converter;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_219_616_Open_Image" onclick="this.style.display='none'; Codehighlighter1_219_616_Open_Text.style.display='none'; Codehighlighter1_219_616_Closed_Image.style.display='inline'; Codehighlighter1_219_616_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_219_616_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_219_616_Closed_Text.style.display='none'; Codehighlighter1_219_616_Open_Image.style.display='inline'; Codehighlighter1_219_616_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;UtilDateConverter&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Converter&nbsp;</span><span id="Codehighlighter1_219_616_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_219_616_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;SimpleDateFormat&nbsp;format&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_351_613_Open_Image" onclick="this.style.display='none'; Codehighlighter1_351_613_Open_Text.style.display='none'; Codehighlighter1_351_613_Closed_Image.style.display='inline'; Codehighlighter1_351_613_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_351_613_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_351_613_Closed_Text.style.display='none'; Codehighlighter1_351_613_Open_Image.style.display='inline'; Codehighlighter1_351_613_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;convert(Class&nbsp;type,&nbsp;Object&nbsp;value)&nbsp;</span><span id="Codehighlighter1_351_613_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_351_613_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_374_395_Open_Image" onclick="this.style.display='none'; Codehighlighter1_374_395_Open_Text.style.display='none'; Codehighlighter1_374_395_Closed_Image.style.display='inline'; Codehighlighter1_374_395_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_374_395_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_374_395_Closed_Text.style.display='none'; Codehighlighter1_374_395_Open_Image.style.display='inline'; Codehighlighter1_374_395_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_374_395_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_374_395_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;value;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_426_447_Open_Image" onclick="this.style.display='none'; Codehighlighter1_426_447_Open_Text.style.display='none'; Codehighlighter1_426_447_Closed_Image.style.display='inline'; Codehighlighter1_426_447_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_426_447_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_426_447_Closed_Text.style.display='none'; Codehighlighter1_426_447_Open_Image.style.display='inline'; Codehighlighter1_426_447_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(value&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;Date)&nbsp;</span><span id="Codehighlighter1_426_447_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_426_447_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;value;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img id="Codehighlighter1_480_595_Open_Image" onclick="this.style.display='none'; Codehighlighter1_480_595_Open_Text.style.display='none'; Codehighlighter1_480_595_Closed_Image.style.display='inline'; Codehighlighter1_480_595_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_480_595_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_480_595_Closed_Text.style.display='none'; Codehighlighter1_480_595_Open_Image.style.display='inline'; Codehighlighter1_480_595_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(value&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;String)&nbsp;</span><span id="Codehighlighter1_480_595_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_480_595_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_489_534_Open_Image" onclick="this.style.display='none'; Codehighlighter1_489_534_Open_Text.style.display='none'; Codehighlighter1_489_534_Closed_Image.style.display='inline'; Codehighlighter1_489_534_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_489_534_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_489_534_Closed_Text.style.display='none'; Codehighlighter1_489_534_Open_Image.style.display='inline'; Codehighlighter1_489_534_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_489_534_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_489_534_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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;format.parse((String)value);<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img id="Codehighlighter1_561_591_Open_Image" onclick="this.style.display='none'; Codehighlighter1_561_591_Open_Text.style.display='none'; Codehighlighter1_561_591_Closed_Image.style.display='inline'; Codehighlighter1_561_591_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_561_591_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_561_591_Closed_Text.style.display='none'; Codehighlighter1_561_591_Open_Image.style.display='inline'; Codehighlighter1_561_591_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(ParseException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_561_591_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_561_591_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</font></em></font></font>2.使用convertUilts注册converter<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.bjsxt.oa.web;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Date;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServlet;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.beanutils.ConvertUtils;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_243_370_Open_Image" onclick="this.style.display='none'; Codehighlighter1_243_370_Open_Text.style.display='none'; Codehighlighter1_243_370_Closed_Image.style.display='inline'; Codehighlighter1_243_370_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_243_370_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_243_370_Closed_Text.style.display='none'; Codehighlighter1_243_370_Open_Image.style.display='inline'; Codehighlighter1_243_370_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;UtilDateConverterInitServlet&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;HttpServlet&nbsp;</span><span id="Codehighlighter1_243_370_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_243_370_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_301_367_Open_Image" onclick="this.style.display='none'; Codehighlighter1_301_367_Open_Text.style.display='none'; Codehighlighter1_301_367_Closed_Image.style.display='inline'; Codehighlighter1_301_367_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_301_367_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_301_367_Closed_Text.style.display='none'; Codehighlighter1_301_367_Open_Image.style.display='inline'; Codehighlighter1_301_367_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&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;init()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;</span><span id="Codehighlighter1_301_367_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_301_367_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConvertUtils.register(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;UtilDateConverter(),&nbsp;Date.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
3.在web.xml中配置servlet<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">utilDateConverter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.bjsxt.oa.web.UtilDateConverterInitServlet</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">3</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;</span></div>
<img src ="http://www.blogjava.net/wx886104/aggbug/257710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2009-03-04 10:36 <a href="http://www.blogjava.net/wx886104/archive/2009/03/04/257710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>org.apache.commons.beanutils.BeanUtils介绍</title><link>http://www.blogjava.net/wx886104/archive/2009/03/04/257699.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Wed, 04 Mar 2009 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2009/03/04/257699.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/257699.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2009/03/04/257699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/257699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/257699.html</trackback:ping><description><![CDATA[<div class="tit">org.apache.commons.beanutils.BeanUtils</div>
<div class="date">&nbsp;</div>
<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">一、简介：<br />
            <br />
            BeanUtils提供对 Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道，一个JavaBean通常包含了大量的属性，很 多情况下，对JavaBean的处理导致大量get/set代码堆积，增加了代码长度和阅读代码的难度。<br />
            <br />
            二、用法：<br />
            <br />
            BeanUtils是这个包里比较常用的一个工具类，这里只介绍它的copyProperties()方法。该方法定义如下：<br />
            <pre><br />
            public static void copyProperties(java.lang.Object dest,java.lang.Object orig)<br />
            &nbsp;&nbsp;&nbsp; throws java.lang.IllegalAccessException,<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.lang.reflect.InvocationTargetException<br />
            </pre>
            <br />
            <br />
            如 果你有两个具有很多相同属性的JavaBean，一个很常见的情况就是Struts里的PO对象（持久对象）和对应的ActionForm，例如 Teacher和TeacherForm。我们一般会在Action里从ActionForm构造一个PO对象，传统的方式是使用类似下面的语句对属性逐 个赋值：<br />
            <pre><br />
            //得到TeacherForm<br />
            TeacherForm teacherForm=(TeacherForm)form;<br />
            //构造Teacher对象<br />
            Teacher teacher=new Teacher();<br />
            //赋值<br />
            teacher.setName(teacherForm.getName());<br />
            teacher.setAge(teacherForm.getAge());<br />
            teacher.setGender(teacherForm.getGender());<br />
            teacher.setMajor(teacherForm.getMajor());<br />
            teacher.setDepartment(teacherForm.getDepartment());<br />
            <br />
            //持久化Teacher对象到数据库<br />
            HibernateDAO=;<br />
            HibernateDAO.save(teacher);<br />
            <br />
            而使用BeanUtils后，代码就大大改观了，如下所示：<br />
            //得到TeacherForm<br />
            TeacherForm teacherForm=(TeacherForm)form;<br />
            //构造Teacher对象<br />
            Teacher teacher=new Teacher();<br />
            //赋值<br />
            BeanUtils.copyProperties(teacher,teacherForm);<br />
            //持久化Teacher对象到数据库<br />
            HibernateDAO=;<br />
            HibernateDAO.save(teacher);<br />
            </pre>
            <br />
            <br />
            如 果Teacher和TeacherForm间存在名称不相同的属性，则BeanUtils不对这些属性进行处理，需要程序员手动处理。例如 Teacher包含modifyDate（该属性记录最后修改日期，不需要用户在界面中输入）属性而TeacherForm无此属性，那么在上面代码的 copyProperties()后还要加上一句：<br />
            <pre><br />
            teacher.setModifyDate(new Date());<br />
            </pre>
            <br />
            <br />
            怎 么样，很方便吧！除BeanUtils外还有一个名为PropertyUtils的工具类，它也提供copyProperties()方法，作用与 BeanUtils的同名方法十分相似，主要的区别在于后者提供类型转换功能，即发现两个JavaBean的同名属性为不同类型时，在支持的数据类型范围 内进行转换，而前者不支持这个功能，但是速度会更快一些。BeanUtils支持的转换类型如下：<br />
            <pre><br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * java.lang.BigDecimal<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * java.lang.BigInteger<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * boolean and java.lang.Boolean<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * byte and java.lang.Byte<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * char and java.lang.Character<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * java.lang.Class<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * double and java.lang.Double<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * float and java.lang.Float<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * int and java.lang.Integer<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * long and java.lang.Long<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * short and java.lang.Short<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * java.lang.String<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * java.sql.Date<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * java.sql.Time<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * java.sql.Timestamp <br />
            </pre>
            <br />
            <br />
            这里要注意一点，java.util.Date是不被支持的，而它的子类java.sql.Date是被支持的。因此如果对象包含时间类型的属性，且希望被转换的时候，一定要使用java.sql.Date类型。否则在转换时会提示argument mistype异常。<br />
            <br />
            三、优缺点：<br />
            <br />
            Apache Jakarta Commons项目非常有用。我曾在许多不同的项目上或直接或间接地使用各种流行的commons组件。其中的一个强大的组件就是BeanUtils。我 将说明如何使用BeanUtils将local实体bean转换为对应的value 对象：<br />
            <br />
            <pre><br />
            BeanUtils.copyProperties(aValue, aLocal)<br />
            </pre>
            <br />
            <br />
            上 面的代码从aLocal对象复制属性到aValue对象。它相当简单！它不管local（或对应的value）对象有多少个属性，只管进行复制。我们假设 local对象有100个属性。上面的代码使我们可以无需键入至少100行的冗长、容易出错和反复的get和set方法调用。这太棒了！太强大了！太有用 了！<br />
            <br />
            现在，还有一个坏消息：使用BeanUtils的成本惊人地昂贵！我做了一个简单的测试，BeanUtils所花费的时间要超过取数 据、将其复制到对应的 value对象（通过手动调用get和set方法），以及通过串行化将其返回到远程的客户机的时间总和。所以要小心使用这种威力！ <img height="1" src="http://c.services.spaces.live.com/CollectionWebService/c.gif?space=lifejava&amp;page=RSS%3a+org.apache.commons.beanutils.BeanUtils+%e7%ae%80%e4%bb%8b&amp;referrer=" width="1" border="0"  alt="" /><img style="position: absolute" height="0" src="http://c.live.com/c.gif?NC=31263&amp;NA=1149&amp;PI=88469&amp;RF=&amp;DI=3919&amp;PS=85545&amp;TP=lifejava.spaces.live.com&amp;GT1=lifejava%3b2052" width="0"  alt="" /> <br />
            该文章的原文地址为：<a href="http://lifejava.spaces.live.com/Blog/cns%21A666C33543221640%21158.entry" target="_blank">http://lifejava.spaces.live.com/Blog/cns!A666C33543221640!158.entry</a></div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/wx886104/aggbug/257699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2009-03-04 09:53 <a href="http://www.blogjava.net/wx886104/archive/2009/03/04/257699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pager-taglib的安装和使用</title><link>http://www.blogjava.net/wx886104/archive/2008/12/29/248944.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 29 Dec 2008 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/29/248944.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/248944.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/29/248944.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/248944.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/248944.html</trackback:ping><description><![CDATA[1、拷贝pager-taglib.jar包<br />
2、在JSP页面中使用taglib指令引入pager-taglib标签库<br />
3、使用pager-taglib标签库进行分页处理<br />
<br />
pg:pager【这个标签用来设置分页的总体参数】重要参数说明：<br />
&nbsp;&nbsp; &nbsp;url:分页的链接根地址，pager标签会在这个链接的基础上附加分页参数<br />
&nbsp;&nbsp; &nbsp;items:总记录数，pager标签正是根据这个值来计算分页参数的<br />
&nbsp;&nbsp; &nbsp;maxPageItems:每页显示的行数，默认为10<br />
&nbsp;&nbsp; &nbsp;maxIndexPages:在循环输出页码的时候，最大输出多少个页码，默认是10<br />
&nbsp;&nbsp; &nbsp;<br />
pg:first【第一页的标签】重要参数说明：<br />
&nbsp;&nbsp; &nbsp;export变量的意义：<br />
&nbsp;&nbsp; &nbsp;pageUrl - 分页链接URL地址（最重要的export参数）<br />
&nbsp;&nbsp; &nbsp;pageNumber - 页码<br />
&nbsp;&nbsp; &nbsp;firstItem - 首页第一行的索引值<br />
&nbsp;&nbsp; &nbsp;lastItem - 首页最后一行的索引值<br />
&nbsp;&nbsp; &nbsp;<br />
pg:pre【上一页标签】重要参数说明：<br />
&nbsp;&nbsp; &nbsp;export变量的意义：<br />
&nbsp;&nbsp; &nbsp;pageUrl - 分页链接URL地址（最重要的export参数）<br />
&nbsp;&nbsp; &nbsp;pageNumber - 页码<br />
&nbsp;&nbsp; &nbsp;firstItem - 前页第一行的索引值<br />
&nbsp;&nbsp; &nbsp;lastItem - 前页最后一行的索引值<br />
<br />
pg:next【下一页标签】重要参数说明：<br />
&nbsp;&nbsp; &nbsp;export变量的意义：<br />
&nbsp;&nbsp; &nbsp;pageUrl - 分页链接URL地址（最重要的export参数）<br />
&nbsp;&nbsp; &nbsp;pageNumber - 页码<br />
&nbsp;&nbsp; &nbsp;firstItem - 下页第一行的索引值<br />
&nbsp;&nbsp; &nbsp;lastItem - 下页最后一行的索引值<br />
&nbsp;&nbsp; &nbsp;<br />
pg:last重要参数说明：<br />
&nbsp;&nbsp; &nbsp;export变量的意义：<br />
&nbsp;&nbsp; &nbsp;pageUrl - 分页链接URL地址（最重要的export参数）<br />
&nbsp;&nbsp; &nbsp;pageNumber - 页码<br />
&nbsp;&nbsp; &nbsp;firstItem - 尾页第一行的索引值<br />
&nbsp;&nbsp; &nbsp;lastItem - 尾页最后一行的索引值<br />
&nbsp;&nbsp; &nbsp;<br />
pg:pages【这个标签用来循环输出页码信息】重要参数说明：<br />
&nbsp;&nbsp; &nbsp;export变量的意义：<br />
&nbsp;&nbsp; &nbsp;pageUrl - 分页链接URL地址（最重要的export参数）<br />
&nbsp;&nbsp; &nbsp;pageNumber - 页码<br />
&nbsp;&nbsp; &nbsp;firstItem - pageNumber这个页码指定的那一页的第一行的索引值<br />
&nbsp;&nbsp; &nbsp;lastItem - pageNumber这个页码指定的那一页的最后一行的索引值<br />
<br />
<br />
pager-taglib-2.0下载<br />
<a href="/Files/wx886104/pager-taglib-2.0.rar">http://www.blogjava.net/Files/wx886104/pager-taglib-2.0.rar</a><br />
<img src ="http://www.blogjava.net/wx886104/aggbug/248944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-29 16:45 <a href="http://www.blogjava.net/wx886104/archive/2008/12/29/248944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts--struts国际化</title><link>http://www.blogjava.net/wx886104/archive/2008/12/15/246347.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 15 Dec 2008 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/15/246347.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/246347.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/15/246347.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/246347.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/246347.html</trackback:ping><description><![CDATA[<p>1、struts国际化的配置<br />
&nbsp;* 在struts-config.xml文件中加入：&lt;message-resources parameter="MessageResources" /&gt;<br />
&nbsp;<br />
2、提供不同版本的国际化资源文件，中文需要采用native2ascii转换成unicode</p>
<p>3、在jsp中采用&lt;bean:message&gt;标签来读取国际化消息文本</p>
<p>4、了解利用struts默认将locale放到session中的特性，完成采用编程的方式切换语言设置<br />
&nbsp;* 参见：ChangeLanguageAction.java<br />
&nbsp;<br />
5、消息文本的国际化处理，共有三个步骤：<br />
&nbsp;* 创建国际化消息<br />
&nbsp;* 传递国际化消息<br />
&nbsp;* 显示国际化消息<br />
&nbsp;<br />
如何创建国际化消息？<br />
&nbsp;理解ActionMessage和ActionMessages两个对象的区别<br />
&nbsp;<br />
如何传递国际化消息？<br />
&nbsp;* 调用saveMessage()传递普通消息，调用saveErrors传递错误消息<br />
&nbsp;<br />
如何显示国际化消息？<br />
&nbsp;通过&lt;html:messages&gt;标签显示消息（可以显示普通消息和错误消息）<br />
&nbsp;通过&lt;html:errors&gt;显示消息（只能显示错误消息）&nbsp;<br />
<br />
当将国际化资源文件放入到一个包时，在struts-config.xml文件中加入：&lt;message-resources parameter="包名.MessageResources" /&gt;<br />
<br />
ChangeLanguageAction.java<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Locale;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletRequest;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletResponse;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.Globals;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.action.Action;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.action.ActionForm;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.action.ActionForward;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.struts.action.ActionMapping;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img id="Codehighlighter1_382_956_Open_Image" onclick="this.style.display='none'; Codehighlighter1_382_956_Open_Text.style.display='none'; Codehighlighter1_382_956_Closed_Image.style.display='inline'; Codehighlighter1_382_956_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_382_956_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_382_956_Closed_Text.style.display='none'; Codehighlighter1_382_956_Open_Image.style.display='inline'; Codehighlighter1_382_956_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ChangeLanguageAction&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Action&nbsp;</span><span id="Codehighlighter1_382_956_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_382_956_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_547_953_Open_Image" onclick="this.style.display='none'; Codehighlighter1_547_953_Open_Text.style.display='none'; Codehighlighter1_547_953_Closed_Image.style.display='inline'; Codehighlighter1_547_953_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_547_953_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_547_953_Closed_Text.style.display='none'; Codehighlighter1_547_953_Open_Image.style.display='inline'; Codehighlighter1_547_953_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;</span><span id="Codehighlighter1_547_953_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_547_953_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;lang&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getParameter(</span><span style="color: #000000">"</span><span style="color: #000000">lang</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Locale&nbsp;currentLocale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Locale.getDefault();&nbsp;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_670_717_Open_Image" onclick="this.style.display='none'; Codehighlighter1_670_717_Open_Text.style.display='none'; Codehighlighter1_670_717_Closed_Image.style.display='inline'; Codehighlighter1_670_717_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_670_717_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_670_717_Closed_Text.style.display='none'; Codehighlighter1_670_717_Open_Image.style.display='inline'; Codehighlighter1_670_717_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">"</span><span style="color: #000000">zh</span><span style="color: #000000">"</span><span style="color: #000000">.equals(lang))&nbsp;</span><span id="Codehighlighter1_670_717_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_670_717_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentLocale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Locale(</span><span style="color: #000000">"</span><span style="color: #000000">zh</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">CN</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img id="Codehighlighter1_745_792_Open_Image" onclick="this.style.display='none'; Codehighlighter1_745_792_Open_Text.style.display='none'; Codehighlighter1_745_792_Closed_Image.style.display='inline'; Codehighlighter1_745_792_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_745_792_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_745_792_Closed_Text.style.display='none'; Codehighlighter1_745_792_Open_Image.style.display='inline'; Codehighlighter1_745_792_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">en</span><span style="color: #000000">"</span><span style="color: #000000">.equals(lang))&nbsp;</span><span id="Codehighlighter1_745_792_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_745_792_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentLocale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Locale(</span><span style="color: #000000">"</span><span style="color: #000000">en</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">US</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">request.getSession().setAttribute(Globals.LOCALE_KEY,&nbsp;currentLocale);</span><span style="color: #008000"><br />
</span><span style="color: #008080">27</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.setLocale(request,&nbsp;currentLocale);<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mapping.findForward(</span><span style="color: #000000">"</span><span style="color: #000000">index</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<p><br />
<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/wx886104/aggbug/246347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-15 10:46 <a href="http://www.blogjava.net/wx886104/archive/2008/12/15/246347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts中使用Cookie控制登录的流程</title><link>http://www.blogjava.net/wx886104/archive/2008/12/12/245875.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Fri, 12 Dec 2008 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/12/245875.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/245875.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/12/245875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/245875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/245875.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt">读取 Cookie 集合，遍历集合找到所需的 Cookie ，如果找到保存进 Session ，否则跳转到登录页面； </p>
<p style="margin: 0cm 0cm 0pt"><strong>所需资源： </strong></p>
<p style="margin: 0cm 0cm 0pt">ReadCookieAction.java- 读取 Cookie 集合，如果找到对应 Cookie ，写入 Session ； </p>
<p style="margin: 0cm 0cm 0pt">Login.jsp- 登录用页面； </p>
<p style="margin: 0cm 0cm 0pt">LoginSubmit.java- 记录登录信息，并写入 Session ； </p>
<p style="margin: 0cm 0cm 0pt">LoginOk.jsp- 读取 Session ，并显示。 </p>
<p style="margin: 0cm 0cm 0pt"><strong>读 Cookie </strong><strong>的方法 </strong>： </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">Cookie[] cookies = request.getCookies();</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><strong><span style="font-size: 10pt; color: #7f0055">if</span> </strong><span style="font-size: 10pt; color: black">(cookies != </span><strong><span style="font-size: 10pt; color: #7f0055">null</span> </strong><span style="font-size: 10pt; color: black">) {</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 10pt; color: #7f0055">for</span> </strong><span style="font-size: 10pt; color: black">(</span> <strong><span style="font-size: 10pt; color: #7f0055">int</span> </strong><span style="font-size: 10pt; color: black">i=0; i&lt;cookies.</span> <span style="font-size: 10pt; color: #0000c0">length</span> <span style="font-size: 10pt; color: black">; i++) {</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cookie cookie = cookies[i];</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 10pt; color: #7f0055">if</span> </strong><span style="font-size: 10pt; color: black">(cookie.getName().equals(</span> <span style="font-size: 10pt; color: #2a00ff">"userInfo"</span> <span style="font-size: 10pt; color: black">)) {</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String value = cookie.getValue();</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[] info = value.split(</span> <span style="font-size: 10pt; color: #2a00ff">"_"</span> <span style="font-size: 10pt; color: black">);</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserForm userForm = </span><strong><span style="font-size: 10pt; color: #7f0055">new</span> </strong><span style="font-size: 10pt; color: black">UserForm();</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userForm.setUserName(info[0]);</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userForm.setUserPassword(info[1]);</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.getSession().setAttribute(</span> <span style="font-size: 10pt; color: #2a00ff">"userForm"</span> <span style="font-size: 10pt; color: black">, userForm);</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="font-size: 10pt; color: #7f0055">return</span> </strong><span style="font-size: 10pt; color: black">mapping.findForward(</span> <span style="font-size: 10pt; color: #2a00ff">"ok"</span> <span style="font-size: 10pt; color: black">);</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;}</span> </font></p>
<p style="margin: 0cm 0cm 0pt"><font color="#ffff99"><span style="font-size: 10pt; color: black">}</span> </font></p>
<p style="margin: 0cm 0cm 0pt"><strong>写 Cookie </strong><strong>的方法： </strong></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">Cookie c = </span><strong><span style="font-size: 10pt; color: #7f0055">new</span> </strong><span style="font-size: 10pt; color: black">Cookie(</span> <span style="font-size: 10pt; color: #2a00ff">"userInfo"</span> <span style="font-size: 10pt; color: black">,userForm.getUserName()+</span> <span style="font-size: 10pt; color: #2a00ff">"_"</span> <span style="font-size: 10pt; color: black">+userForm.getUserPassword());</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">c.setComment(</span> <span style="font-size: 10pt; color: #2a00ff">"A test cookie"</span> <span style="font-size: 10pt; color: black">);</span> </font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font color="#ffff99"><span style="font-size: 10pt; color: black">c.setMaxAge(120);</span> </font></p>
<p style="margin: 0cm 0cm 0pt"><font color="#ffff99"><span style="font-size: 10pt; color: black">response.addCookie(c);</span> </font></p>
<img src ="http://www.blogjava.net/wx886104/aggbug/245875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-12 10:57 <a href="http://www.blogjava.net/wx886104/archive/2008/12/12/245875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts--关于ACTION的映射路径心得</title><link>http://www.blogjava.net/wx886104/archive/2008/12/11/245641.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Thu, 11 Dec 2008 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/11/245641.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/245641.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/11/245641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/245641.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/245641.html</trackback:ping><description><![CDATA[在采用struts框架项目中，我们通常将模块分类，放在模块的文件夹中。这样在页面中访问时需加上文件目录名路径方可。但是我们可以通过在struts-config中配置Action时加上一个虚拟的目录名，使虚拟的目录名和模块的文件目录名同名，通过访问Action时就可自动进入该目录下，这样访问时就不需再文件目录路径了。<br />
例：一个文件管理系统中有用户管理模块，将其放入指定的模块文件夹下，如图：<br />
<img height="73" alt="" src="http://www.blogjava.net/images/blogjava_net/wx886104/1.jpg" width="175" border="0" /><br />
在struts-config.xml文件中配置Action的path，如图：<br />
<img height="135" alt="" src="http://www.blogjava.net/images/blogjava_net/wx886104/2.jpg" width="652" border="0" /><br />
在页面访问时，设置连接如：&lt;a href="user/list.do" title="请点击访问用户管理系统"&gt;用户管理系统&lt;/a&gt;<br />
当点击后，在地址栏中显示的地址如图：<br />
<img height="42" alt="" src="http://www.blogjava.net/images/blogjava_net/wx886104/3.jpg" width="424" border="0" /><br />
这样就进入user目录下。再在访问改目录下的文件时，就不需加什么目录名了。<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/245641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-11 11:09 <a href="http://www.blogjava.net/wx886104/archive/2008/12/11/245641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转载)struts上传下载</title><link>http://www.blogjava.net/wx886104/archive/2008/09/25/231112.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Thu, 25 Sep 2008 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/09/25/231112.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/231112.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/09/25/231112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/231112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/231112.html</trackback:ping><description><![CDATA[<p><span style="color: #ff0000">最近要做上传下载，所以又把它翻出了，熟悉了一把，做了一下字节转换的调整及上传类型的限制，当然还有上传路径的限制。不过一直在考虑的问题是怎样找到减少服务器压力的具体方法，本列子贴出来是希望能给某些新手一些帮助，同时也希望各路大侠批评指点小弟的许多不足。</span></p>
<p>&nbsp;</p>
<p><span style="color: #ff0000">首先建立一个FileAction</span></p>
<p>package com.action;<br />
import org.apache.struts.action.*;<br />
import javax.servlet.http.*;<br />
import com.actionForm.FileActionForm;<br />
import org.apache.struts.actions.DispatchAction;<br />
import java.util.Date;<br />
import java.text.*;<br />
import org.apache.struts.upload.FormFile;<br />
import java.io.*;<br />
import java.net.URLEncoder;<br />
import com.dao.*;</p>
<p>public class FileAction extends DispatchAction {</p>
<p>&nbsp;&nbsp;&nbsp; private JDBConnection connection =new <span style="background-color: #ffffff">JDBConnection</span>();<br />
<span style="background-color: #ff6600"><span style="color: #ff0000; background-color: #ffffff">//以下方法实现文件的上传</span><br />
</span>&nbsp;&nbsp;&nbsp; public ActionForward upLoadFile(ActionMapping mapping, ActionForm form,<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest request,<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response) throws<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exception {<br />
&nbsp;&nbsp;&nbsp; &nbsp;ActionForward forward=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date date = new Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileActionForm fileActionForm = (FileActionForm) form;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">//FormFile用于指定存取文件的类型<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FormFile file = fileActionForm.getFile(); <span style="color: #ff0000">//获取当前的文件</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">// 获得系统的绝对路径</span>&nbsp; String dir = servlet.getServletContext().getRealPath("/image");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">//我上传的文件没有放在服务器上。而是存在D:D:\\loadfile\\temp\\</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dir="D:\\loadfile\\temp\\";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;<br />
&nbsp;&nbsp;String type = file.getFileName();<br />
&nbsp;&nbsp;while(i!=-1){<br />
&nbsp;<span style="color: #ff0000">&nbsp;&nbsp;//找到上传文件的类型的位置，这个地方的是'.'</span><br />
&nbsp;&nbsp;&nbsp;i = type.indexOf(".");<br />
&nbsp;&nbsp;/*&nbsp;System.out.println(i);*/<br />
<span style="color: #ff0000">&nbsp;&nbsp;&nbsp;/*截取上传文件的后缀名,此时得到了文件的类型*/</span><br />
&nbsp;&nbsp;&nbsp;type = type.substring(i+1);<br />
&nbsp;&nbsp;}<br />
&nbsp;<span style="color: #ff0000">&nbsp;// 限制上传类型为jpg,txt,rar;</span><br />
&nbsp;&nbsp;if (!type.equals("jpg") &amp;&amp; !type.equals("txt")&amp;&amp; !type.equals("bmp"))<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<span style="color: #ff0000">{//当上传的类型不为上述类型时，跳转到错误页面。</span><br />
&nbsp;&nbsp;&nbsp; forward=mapping.findForward("error");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;{&nbsp;&nbsp;<br />
<span style="color: #ff0000">//&nbsp;&nbsp;&nbsp; 将上传时间加入文件名（这个地方的是毫秒数）&nbsp;&nbsp;&nbsp;<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp; String times = String.valueOf(date.getTime());<br />
&nbsp;<span style="color: #ff0000">&nbsp;&nbsp; //组合成 time.type</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp; fname = times + "." + type;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">//InInputStream是用以从特定的资源读取字节的方法。<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStream streamIn = file.getInputStream();&nbsp;&nbsp;&nbsp;<span style="color: #ff0000"> //创建读取用户上传文件的对象<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">//得到是字节数，即byte,我们可以直接用file.getFileSize(),也可以在创建读取对象时用streamIn.available();<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // int ok=streamIn.available();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int ok=file.getFileSize();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strFee = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000">&nbsp; //这个地方是处理上传的为M单位计算时，下一个是以kb,在下一个是byte;<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ok&gt;=1024*1024)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;float ok1=(((float)ok)/1024f/1024f);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DecimalFormat myformat1 = new DecimalFormat("0.00");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strFee = myformat1.format(ok1)+"M";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(strFee+"M");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(ok&gt;1024 &amp;&amp; ok&lt;=1024*1024)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double&nbsp; ok2=((double)ok)/1024;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DecimalFormat myformat2=new DecimalFormat("0.00");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strFee = myformat2.format(ok2)+"kb";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(strFee+"kb");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(ok&lt;1024)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;System.out.println("aaaaaaaaa");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strFee=String.valueOf(ok)+"byte";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(strFee);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println( streamIn.available()+"文件大小byte");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000">&nbsp;&nbsp;&nbsp; //这个是io包下的上传文件类<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File uploadFile = new File(dir);&nbsp;&nbsp; //指定上传文件的位置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!uploadFile.exists() || uploadFile == null) {&nbsp; //判断指定路径dir是否存在，不存在则创建路径<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uploadFile.mkdirs();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000">&nbsp;&nbsp;&nbsp; //上传的路径+文件名<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path = uploadFile.getPath() + "\\" + fname;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">//OutputStream用于向某个目标写入字节的抽象类，这个地方写入目标是path，通过输出流FileOutputStream去写<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStream streamOut = new FileOutputStream(path);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int bytesRead = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] buffer = new byte[8192];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000"> //将数据读入byte数组的一部分，其中读入字节数的最大值是8192，读入的字节将存储到，buffer[0]到buffer[0+8190-1]的部分中<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //streamIn.read方法返回的是实际读取字节数目.如果读到末尾则返回-1.如果bytesRead返回为0则表示没有读取任何字节。<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">&nbsp;//写入buffer数组的一部分，从buf[0]开始写入并写入bytesRead个字节，这个write方法将发生阻塞直至字节写入完成。<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; streamOut.write(buffer, 0, bytesRead);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">//&nbsp; 关闭输出输入流,销毁File流。<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; streamOut.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; streamIn.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file.destroy();&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000"><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String paths=path;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(paths);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">String fileName = Chinese.toChinese(fileActionForm.getFileName()); //获取文件的名称</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //String fileSize = String.valueOf(file.getFileSize());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fileDate = DateFormat.getDateInstance().format(date);<br />
<span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String sql = "insert into tb_file values('" + fileName + "','" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strFee + "','" + fileDate + "','" + paths + "')";</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection.executeUpdate(sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection.closeConnection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forward=mapping.findForward("upLoadFileResult");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return forward;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; //实现文件的下载<br />
&nbsp;&nbsp;&nbsp; public ActionForward downFile(ActionMapping mapping, ActionForm form,<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest request,<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response) throws<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exception {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path = request.getParameter("path");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(path+"111");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedInputStream bis = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedOutputStream bos = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStream fos = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStream fis = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;<span style="color: #ff0000">&nbsp;&nbsp; //如果是从服务器上取就用这个获得系统的绝对路径方法。&nbsp; String filepath = servlet.getServletContext().getRealPath("/" + path);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp; filepath=path;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("文件路径"+filepath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File uploadFile = new File(filepath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fis = new FileInputStream(uploadFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bis = new BufferedInputStream(fis);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos = response.getOutputStream();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bos = new BufferedOutputStream(fos);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000">&nbsp;&nbsp;&nbsp; //这个就就是弹出下载对话框的关键代码</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Content-disposition",<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; "attachment;filename=" +<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; URLEncoder.encode(path, "utf-8"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int bytesRead = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000"> //这个地方的同上传的一样。我就不多说了，都是用输入流进行先读，然后用输出流去写，唯一不同的是我用的是缓冲输入输出流<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] buffer = new byte[8192];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bos.write(buffer, 0, bytesRead);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bos.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fis.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bis.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bos.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p><span style="color: #ff0000">FileActionForm</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>package com.actionForm;</p>
<p>import org.apache.struts.action.*;<br />
import org.apache.struts.upload.*;</p>
<p>public class FileActionForm extends ActionForm {<br />
&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">private String fileName;//上传文件的名称<br />
&nbsp;&nbsp;&nbsp; private String fileSize;//上传文件的大小<br />
&nbsp;&nbsp;&nbsp; private String filePath;//上传文件到服务器的路径<br />
&nbsp;&nbsp;&nbsp; private String fileDate;//上传文件的日期<br />
&nbsp;&nbsp;&nbsp; private FormFile file;//上传文件</span></p>
<p>&nbsp;&nbsp;&nbsp; public String getFileName() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fileName;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public FormFile getFile() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return file;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getFileSize() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fileSize;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getFilePath() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return filePath;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getFileDate() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fileDate;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setFileName(String fileName) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.fileName = fileName;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setFile(FormFile file) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.file = file;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setFileSize(String fileSize) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.fileSize = fileSize;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setFilePath(String filePath) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.filePath = filePath;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setFileDate(String fileDate) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.fileDate = fileDate;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p><span style="color: #ff0000">index.jsp&nbsp; 此位置的form是javabeen的对象，这个javabeen中存取的图片的相关信息</span></p>
<p>&lt;table width="264" height="81" border="0" align="center" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="115"&nbsp; rowspan="4" align="center"&gt;&lt;img src="&lt;%=<span style="color: #ff0000">form</span>.getFilePath()%&gt;" width="100" height="100"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="133" align="center"&gt;图片名称：&lt;%=<span style="color: #ff0000">form</span>.getFileName()%&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr align="center"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;图片大小：&lt;%=<span style="color: #ff0000">form</span>.getFileSize()%&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr align="center"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;上传日期:&lt;%=<span style="color: #ff0000">form</span>.getFileDate()%&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align="center"&gt;&lt;a href="<span style="color: #ff0000">fileAction.do</span>?method=<span style="color: #ff0000">downFile</span>&amp;<span style="color: #ff0000">path</span>=&lt;%=<span style="color: #ff0000">form</span>.getFilePath()%&gt;" &gt;&lt;img src="priture/bottond.jpg"&gt;&lt;/a&gt;</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;</p>
<p>&lt;html:form action="<span style="color: #ff0000">fileAction.do?method=upLoadFile</span>" <span style="color: #ff0000">enctype="multipart/form-data"</span> onsubmit="return Mycheck()"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table height="52" border="0" align="center" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr align="center"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="60" height="26"&gt;图片名称:&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="160"&gt; <span style="color: #ff0000">&lt;html:text property="fileName"/&gt;</span> &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="60"&gt;图片路径:&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="198"&gt;<span style="color: #ff0000"> &lt;html:file property="file"/&gt;</span> &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr align="right"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="26" colspan="4"&gt; <span style="color: #ff0000">&lt;html:submit&gt;上传&lt;/html:submit&gt;</span> &lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp;&lt;/html:form&gt;</p>
<p><span style="color: #ff0000">struts-config.xml</span>&nbsp;&nbsp; </p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "<a href="http://struts.apache.org/dtds/struts-config_1_2.dtd">http://struts.apache.org/dtds/struts-config_1_2.dtd</a>"&gt;</p>
<p>&lt;struts-config&gt;<br />
&nbsp; &lt;form-beans&gt;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">&lt;form-bean name="fileActionForm" type="com.actionForm.FileActionForm" /&gt;<br />
</span>&nbsp; &lt;/form-beans&gt;<br />
&nbsp; &lt;action-mappings&gt;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #ff0000">&lt;action name="fileActionForm" parameter="method" path="/fileAction" scope="request" type="com.action.FileAction" validate="true"&gt;<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000">&nbsp;&nbsp;&nbsp; &lt;forward name="upLoadFileResult" path="/result.jsp"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;forward name="error" path="/fail.jsp"&gt;&lt;/forward&gt;<br />
</span>&nbsp;&nbsp;&nbsp; &lt;/action&gt;<br />
&nbsp; &lt;/action-mappings&gt;<br />
&nbsp; &lt;message-resources parameter="ApplicationResources" /&gt;<br />
&lt;/struts-config&gt;<br />
<br />
<br />
<br />
转自javaEye http://www.javaeye.com/topic/219585</p>
<img src ="http://www.blogjava.net/wx886104/aggbug/231112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-09-25 15:12 <a href="http://www.blogjava.net/wx886104/archive/2008/09/25/231112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j.properties文件模板</title><link>http://www.blogjava.net/wx886104/archive/2008/09/16/229118.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 16 Sep 2008 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/09/16/229118.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/229118.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/09/16/229118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/229118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/229118.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">##Log4J的配置之简单使它遍及于越来越多的应用中了<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />##此文件（log4j.properties）内容来自网络，非本文作者liigo原创。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.rootLogger&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DEBUG,&nbsp;CONSOLE,A1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.addivity.org.apache&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;应用于控制台&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.CONSOLE&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.ConsoleAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.Threshold&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DEBUG&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.CONSOLE.Target&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;System.out&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.CONSOLE.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.CONSOLE.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[framework]&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">-%-</span><span style="color: #000000">&nbsp;4r&nbsp;[&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t]&nbsp;&nbsp;</span><span style="color: #000000">%-</span><span style="color: #000000">&nbsp;5p&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;<br />
<img id="Codehighlighter1_613_618_Open_Image" onclick="this.style.display='none'; Codehighlighter1_613_618_Open_Text.style.display='none'; Codehighlighter1_613_618_Closed_Image.style.display='inline'; Codehighlighter1_613_618_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_613_618_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_613_618_Closed_Text.style.display='none'; Codehighlighter1_613_618_Open_Image.style.display='inline'; Codehighlighter1_613_618_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />#log4j.appender.CONSOLE.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[start]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span id="Codehighlighter1_613_618_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_613_618_Open_Text"><span style="color: #000000">{DATE}</span></span><span style="color: #000000">&nbsp;[DATE]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;p[PRIORITY]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x[NDC]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t[THREAD]&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c[CATEGORY]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m[MESSAGE]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#应用于文件<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.FILE&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.FileAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.FILE.File&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;file.log&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.FILE.Append&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.FILE.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.FILE.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[framework]&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">-%-</span><span style="color: #000000">&nbsp;4r&nbsp;[&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t]&nbsp;&nbsp;</span><span style="color: #000000">%-</span><span style="color: #000000">&nbsp;5p&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;Use&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;&nbsp;layout&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;&nbsp;LogFactor&nbsp;&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;&nbsp;analysis&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;应用于文件回滚&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.RollingFileAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE.Threshold&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ERROR&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE.File&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rolling.log&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE.Append&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE.MaxFileSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;10KB&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE.MaxBackupIndex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.ROLLING_FILE.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[framework]&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">-%-</span><span style="color: #000000">&nbsp;4r&nbsp;[&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t]&nbsp;&nbsp;</span><span style="color: #000000">%-</span><span style="color: #000000">&nbsp;5p&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#应用于socket&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.SOCKET&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.RollingFileAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.SOCKET.RemoteHost&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;localhost&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.SOCKET.Port&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5001</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.SOCKET.LocationInfo&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;Set&nbsp;up&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;&nbsp;Log&nbsp;Facter&nbsp;&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.SOCKET.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout&nbsp;<br />
<img id="Codehighlighter1_1949_1954_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1949_1954_Open_Text.style.display='none'; Codehighlighter1_1949_1954_Closed_Image.style.display='inline'; Codehighlighter1_1949_1954_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1949_1954_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1949_1954_Closed_Text.style.display='none'; Codehighlighter1_1949_1954_Open_Image.style.display='inline'; Codehighlighter1_1949_1954_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />log4j.appender.SOCET.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[start]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span id="Codehighlighter1_1949_1954_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1949_1954_Open_Text"><span style="color: #000000">{DATE}</span></span><span style="color: #000000">&nbsp;[DATE]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;p[PRIORITY]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x[NDC]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t[THREAD]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c[CATEGORY]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m[MESSAGE]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;Log&nbsp;Factor&nbsp;&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;&nbsp;Appender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.LF5_APPENDER&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.lf5.LF5Appender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.LF5_APPENDER.MaxNumberOfRecords&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2000</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;发送日志给邮件&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.net.SMTPAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.Threshold&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FATA<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.BufferSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.From&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;web@www.wuset.com<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.SMTPHost&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;www.wusetu.com&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.Subject&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Log4J&nbsp;Message&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.To&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;web@www.wusetu.com<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.MAIL.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[framework]&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">-%-</span><span style="color: #000000">&nbsp;4r&nbsp;[&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t]&nbsp;&nbsp;</span><span style="color: #000000">%-</span><span style="color: #000000">&nbsp;5p&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;用于数据库&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.DATABASE&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.jdbc.JDBCAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.DATABASE.URL&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;jdbc:mysql:&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;localhost:3306/test&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;log4j.appender.DATABASE.driver&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;com.mysql.jdbc.Driver&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.DATABASE.user&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;root&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.DATABASE.password&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.DATABASE.sql&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;INSERT&nbsp;INTO&nbsp;LOG4J&nbsp;(Message)&nbsp;VALUES&nbsp;(&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;[framework]&nbsp;%d&nbsp;-&nbsp;%c&nbsp;-%-4r&nbsp;[%t]&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.DATABASE.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.DATABASE.layout.ConversionPattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[framework]&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">-%-</span><span style="color: #000000">&nbsp;4r&nbsp;[&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t]&nbsp;&nbsp;</span><span style="color: #000000">%-</span><span style="color: #000000">&nbsp;5p&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.A1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.DailyRollingFileAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.A1.File&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SampleMessages.log4j&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.A1.DatePattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;yyyyMMdd&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;HH&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;.log4j&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.A1.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.xml.XMLLayout&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#自定义Appender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.im&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;net.cybercorlin.util.logger.appender.IMAppender&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.im.host&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;mail.cybercorlin.net&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.im.username&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;username&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.im.password&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;password&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.im.recipient&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;corlin@cybercorlin.net<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.im.layout&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.apache.log4j.PatternLayout&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.im.layout.ConversionPattern&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[framework]&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;d&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">-%-</span><span style="color: #000000">&nbsp;4r&nbsp;[&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;t]&nbsp;&nbsp;</span><span style="color: #000000">%-</span><span style="color: #000000">&nbsp;5p&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;c&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;x&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;n<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;结束&nbsp;</span></div>
<img src ="http://www.blogjava.net/wx886104/aggbug/229118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-09-16 12:01 <a href="http://www.blogjava.net/wx886104/archive/2008/09/16/229118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts的验证框架中的arg参数</title><link>http://www.blogjava.net/wx886104/archive/2008/09/05/227263.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Fri, 05 Sep 2008 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/09/05/227263.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/227263.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/09/05/227263.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/227263.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/227263.html</trackback:ping><description><![CDATA[在是用struts的validate框架中当使用validator-rule.xml时，当在同时验证了如maxlength和minlength的是后在复合消息的参数中都有{1}这样时。可以使用两个&lt;arg1&gt;来是复合参数显示正确的消息。<br />
例如：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">field&nbsp;</span><span style="color: #ff0000;">property</span><span style="color: #0000ff;">="phone"</span><span style="color: #ff0000;">&nbsp;depends</span><span style="color: #0000ff;">="required,mask,minlength,maxlength"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&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;">arg0&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="phne"</span><span style="color: #ff0000;">&nbsp;resource</span><span style="color: #0000ff;">="false"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&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;">arg1&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="minlength"</span><span style="color: #ff0000;">&nbsp;key</span><span style="color: #0000ff;">="${minlength}"</span><span style="color: #ff0000;">&nbsp;resource</span><span style="color: #0000ff;">="fasle"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&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;">arg1&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="maxlength"</span><span style="color: #ff0000;">&nbsp;key</span><span style="color: #0000ff;">="${maxlength}"</span><span style="color: #ff0000;">&nbsp;resource</span><span style="color: #0000ff;">="fasle"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&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;">var</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">var-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">mask</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">var-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">var-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">${phone}</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">var-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&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;">var</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&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;">var</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">var-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">minlength</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">var-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">var-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">8</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">var-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&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;">var</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&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;">var</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">var-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">maxlength</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">var-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">var-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">8</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">var-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&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;">var</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">field</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/227263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-09-05 16:45 <a href="http://www.blogjava.net/wx886104/archive/2008/09/05/227263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用struts的.DispatchAction的一点细节</title><link>http://www.blogjava.net/wx886104/archive/2008/09/05/227156.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Fri, 05 Sep 2008 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/09/05/227156.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/227156.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/09/05/227156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/227156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/227156.html</trackback:ping><description><![CDATA[今天在学习使用org.apache.struts.actions.DispatchAction<br />
发现应为使用myeclipse(me)来建立，因为me会默认的建立execute方法，必须将execute删去，否则自定的方法不会被调用。<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/227156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-09-05 11:00 <a href="http://www.blogjava.net/wx886104/archive/2008/09/05/227156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;logic:iterate&gt;用法详解  &lt;转&gt;</title><link>http://www.blogjava.net/wx886104/archive/2008/09/02/226428.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 02 Sep 2008 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/09/02/226428.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/226428.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/09/02/226428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/226428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/226428.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Iterate主要用来处理在页面上输出集合类，集合一般来说是下列之一：<br />
1、&nbsp;java对象的数组<br />
<br />
2、&nbsp;ArrayList、Vector、HashMap等<br />
<br />
具体用法请参考struts文档，这里不作详细介绍<br />
<br />
现在定义一个class，User.java&nbsp;把它编译成User.class<br />
<br />
package&nbsp;example;<br />
<br />
import&nbsp;java.io.Serializable;<br />
public&nbsp;final&nbsp;class&nbsp;User&nbsp;implements&nbsp;Serializable&nbsp;{<br />
private&nbsp;String&nbsp;name&nbsp;=&nbsp;null;<br />
private&nbsp;String&nbsp;password&nbsp;=&nbsp;null;<br />
<br />
public&nbsp;String&nbsp;getName&nbsp;()&nbsp;{<br />
return&nbsp;(this.name);<br />
}<br />
<br />
public&nbsp;void&nbsp;setName(String&nbsp;name)&nbsp;{<br />
this.name&nbsp;=&nbsp;name;<br />
}<br />
<br />
public&nbsp;String&nbsp;getPassword&nbsp;()&nbsp;{<br />
return&nbsp;(this.&nbsp;password);<br />
}<br />
<br />
public&nbsp;void&nbsp;setPassword&nbsp;(String&nbsp;password)&nbsp;{<br />
this.&nbsp;password&nbsp;=&nbsp;password;<br />
}<br />
<br />
}<br />
<br />
然后在一个struts&nbsp;webapplication中创建一个jsp，例如iterate.jsp<br />
<br />
</span><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;">&#8221;java&#8221;&nbsp;</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;">@&nbsp;page&nbsp;import</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&#8221;example.</span><span style="background-color: #f5f5f5; color: #000000;">*</span><span style="background-color: #f5f5f5; color: #000000;">&#8221;</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;">@&nbsp;taglib&nbsp;uri</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&#8221;</span><span style="background-color: #f5f5f5; color: #000000;">/</span><span style="background-color: #f5f5f5; color: #000000;">WEB</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">INF</span><span style="background-color: #f5f5f5; color: #000000;">/</span><span style="background-color: #f5f5f5; color: #000000;">struts</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">bean.tld&#8221;&nbsp;prefix</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&#8221;bean&#8221;&nbsp;</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;">@&nbsp;taglib&nbsp;uri</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&#8221;</span><span style="background-color: #f5f5f5; color: #000000;">/</span><span style="background-color: #f5f5f5; color: #000000;">WEB</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">INF</span><span style="background-color: #f5f5f5; color: #000000;">/</span><span style="background-color: #f5f5f5; color: #000000;">struts</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">logic.tld&#8221;&nbsp;prefix</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&#8221;logic&#8221;&nbsp;</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;"><br />
java.util.ArrayList&nbsp;list&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;java.util.ArrayList();<br />
User&nbsp;usera</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;User();<br />
usera.setName(&#8221;white&#8221;);<br />
usera.setPassword(&#8221;abcd&#8221;);<br />
list.add(usera);<br />
User&nbsp;userb</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;User();<br />
userb.setName(&#8221;mary&#8221;);<br />
userb.setPassword(&#8221;hijk&#8221;);<br />
list.add(userb);<br />
session.setAttribute(&#8221;list&#8221;,&nbsp;list);<br />
<br />
</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">table&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">=&#8221;100%&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">logic:iterate&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;a&#8221;&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;list&#8221;&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">=&#8221;&nbsp;</span><span style="color: #ff0000;">example.User&nbsp;&#8220;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">=&#8221;50%&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
name:&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;a&#8221;&nbsp;</span><span style="color: #ff0000;">property</span><span style="color: #0000ff;">=&#8221;name&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">td&nbsp;</span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">=&#8221;50%&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
password:&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;a&#8221;&nbsp;</span><span style="color: #ff0000;">property</span><span style="color: #0000ff;">=&#8221;password&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
将User.class,&nbsp;iterate.jsp放到相应的目录，运行iterate.jsp你就可以看到iterate的效果了<br />
<br />
iterate标记<br />
id&nbsp;脚本变量的名称，它保存着集合中当前元素的句柄。<br />
name&nbsp;代表了你需要叠代的集合，来自session或者request的属性。<br />
type&nbsp;是其中的集合类元素的类型<br />
<br />
bean的write标记是用来将属性输出的，name用来匹配iterate的id，property用来匹配相应类的属性<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">用法详解2<br />
<br />
2007-04-04&nbsp;20:34<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">login:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">标记用于在页面中创建一个循环,以此来遍历如数组、Collection、Map这样的对象。该标记的功能强大，在Struts应用的页面中经常使用到。<br />
1、对数组进行循环遍历<br />
使用</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">标记可以用于遍历数组，以下是一段示例代码：<br />
<br />
&nbsp;<br />
<br />
程序代码&nbsp;程序代码<br />
<br />
</span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;"><br />
</span><span style="background-color: #f5f5f5; color: #0000ff;">String</span><span style="background-color: #f5f5f5; color: #000000;">[]&nbsp;testArray</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">{&#8221;str1&#8243;,&#8221;str2&#8243;,&#8221;str3&#8243;};<br />
pageContext.setAttribute(&#8221;test&#8221;,testArray);<br />
</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: #800000;">logic:iterate&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;show&#8221;&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;test&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;show&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
在上面的代码中，首先定义了一个字符串数组，并为其初始化。接着，将该数组存入pageContext对象中，命名为test1。然后使用</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">标记的name属性指定了该数组，并使用id来引用它，同时使用</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">标记来将其显示出来。其结果为：<br />
str1<br />
str2<br />
str3<br />
<br />
另外，还可以通过length属性来指定输出元素的个数。如下面的代码：<br />
<br />
&nbsp;<br />
<br />
程序代码&nbsp;程序代码<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">logic:iterate&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;show&#8221;&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;test&#8221;&nbsp;</span><span style="color: #ff0000;">length</span><span style="color: #0000ff;">=&#8221;2&#8243;&nbsp;</span><span style="color: #ff0000;">offset</span><span style="color: #0000ff;">=&#8221;1&#8243;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;show&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
其中length属性指定了输出元素的个数，offset属性指定了从第几个元素开始输出，如此处为1，则表示从第二个元素开始输出。所以该代码的运行结果应当输出：<br />
str2<br />
str3<br />
<br />
另外，该标记还有一个indexId属性，它指定一个变量存放当前集合中正被访问的元素的序号，如：<br />
<br />
&nbsp;<br />
<br />
程序代码&nbsp;程序代码<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">logic:iterate&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;show&#8221;&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;test&#8221;&nbsp;</span><span style="color: #ff0000;">length</span><span style="color: #0000ff;">=&#8221;2&#8243;&nbsp;</span><span style="color: #ff0000;">offset</span><span style="color: #0000ff;">=&#8221;1&#8243;&nbsp;</span><span style="color: #ff0000;">indexId</span><span style="color: #0000ff;">=&#8221;number&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;number&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;">:</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;show&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
其显示结果为：<br />
1:str2<br />
2:str3<br />
<br />
2、对HashMap进行循环遍历<br />
<br />
&nbsp;<br />
<br />
程序代码&nbsp;程序代码<br />
<br />
</span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;"><br />
HashMap&nbsp;countries</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;HashMap();<br />
countries.put(&#8221;country1&#8243;,&#8221;中国&#8221;);<br />
countries.put(&#8221;country2&#8243;,&#8221;美国&#8221;);<br />
countries.put(&#8221;country3&#8243;,&#8221;英国&#8221;);<br />
countries.put(&#8221;country4&#8243;,&#8221;法国&#8221;);<br />
countries.put(&#8221;country5&#8243;,&#8221;德国&#8221;);<br />
pageContext.setAttribute(&#8221;countries&#8221;,countries);<br />
</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: #800000;">logic:iterate&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;country&#8221;&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;countries&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;country&#8221;&nbsp;</span><span style="color: #ff0000;">property</span><span style="color: #0000ff;">=&#8221;key&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;">:<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;country&#8221;&nbsp;</span><span style="color: #ff0000;">property</span><span style="color: #0000ff;">=&#8221;value&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
在bean:write中通过property的key和value分别获得HaspMap对象的键和值。其显示结果为：<br />
country5:德国<br />
country3:英国<br />
country2:美国<br />
country4:法国<br />
country1:中国<br />
由结果可看出，它并未按添加的顺序将其显示出来。这是因为HaspMap是无序存放的。<br />
<br />
3、嵌套遍历<br />
<br />
&nbsp;<br />
<br />
程序代码&nbsp;程序代码<br />
<br />
</span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;"><br />
</span><span style="background-color: #f5f5f5; color: #0000ff;">String</span><span style="background-color: #f5f5f5; color: #000000;">[]&nbsp;colors</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">{&#8221;red&#8221;,&#8221;green&#8221;,&#8221;blue&#8221;};<br />
</span><span style="background-color: #f5f5f5; color: #0000ff;">String</span><span style="background-color: #f5f5f5; color: #000000;">[]&nbsp;countries1</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">{&#8221;中国&#8221;,&#8221;美国&#8221;,&#8221;法国&#8221;};<br />
</span><span style="background-color: #f5f5f5; color: #0000ff;">String</span><span style="background-color: #f5f5f5; color: #000000;">[]&nbsp;persons</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">{&#8221;乔丹&#8221;,&#8221;布什&#8221;,&#8221;克林顿&#8221;};<br />
ArrayList&nbsp;list2</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;ArrayList();<br />
list2.add(colors);<br />
list2.add(countries1);<br />
list2.add(persons);<br />
pageContext.setAttribute(&#8221;list2&#8243;,list2);<br />
</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: #800000;">logic:iterate&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;first&#8221;&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;list2&#8243;&nbsp;</span><span style="color: #ff0000;">indexId</span><span style="color: #0000ff;">=&#8221;numberfirst&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;numberfirst&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">logic:iterate&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;second&#8221;&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;first&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">=&#8221;second&#8221;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">br</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">logic:iterate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
运行效果：<br />
0&nbsp;red&nbsp;green&nbsp;blue<br />
1&nbsp;中国&nbsp;美国&nbsp;法国<br />
2&nbsp;乔丹&nbsp;布什&nbsp;克林顿<br />
<br />
<br />
</span>&lt;logic:iterate id="myBean" indexId="ind" name="循环JavaBean的对象名称"&gt;<br />
<br />
&lt;bean:write name="myBean" property="Bean的属性"&gt;<br />
<br />
&nbsp;&nbsp;&lt;!--循环Map--&gt;<br />
&nbsp;&nbsp; &lt;logic:iterate id="myHashMap" indexId="mapInd" name="myBean" property="hashMap名称"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--输出hashMap的键,不需要可以不用这行--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean:write name="myHashMap" property="key"&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--输出hashMap的值,如果值是个数组或者又一个MAP你可以再对他循环--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean:write name="myHashMap" property="value"&gt;<br />
&nbsp;&nbsp; &lt;/logic:iterate&gt;<br />
<br />
&lt;logic:iterate&gt;
<br />
<br />
<br />
<br />
转自 听雪楼 http://www.tingxuelou.com/index.php/archives/517<br />
<span style="color: #000000;"><br />
</span></div>
<img src ="http://www.blogjava.net/wx886104/aggbug/226428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-09-02 16:44 <a href="http://www.blogjava.net/wx886104/archive/2008/09/02/226428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts秘籍之第2段：第3.10式:过滤文本输入（转）</title><link>http://www.blogjava.net/wx886104/archive/2008/08/26/224457.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 26 Aug 2008 05:03:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/08/26/224457.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/224457.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/08/26/224457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/224457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/224457.html</trackback:ping><description><![CDATA[转自 http://www.blogjava.net/SteelHand/archive/2005/07/01/6974.html<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">第3.10式.&nbsp;过滤文本输入<br />
问题<br />
<br />
你想要渲染包含HTML标记的数据，并且希望该数据被浏览器当作HTML标记解释和处理。<br />
动作要<br />
<br />
很简单，可以使用：<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean:write&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="myForm"</span><span style="color: #ff0000;">&nbsp;property</span><span style="color: #0000ff;">="freeText"</span><span style="color: #ff0000;">&nbsp;filtered</span><span style="color: #0000ff;">="false"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;<br />
<br />
在使用JSTL时，你也可以使用未过滤的值：<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">c:out&nbsp;</span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">="${myForm.freeText}"</span><span style="color: #ff0000;">&nbsp;escapeXml</span><span style="color: #0000ff;">="false"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;<br />
动作变化<br />
<br />
在你使用Struts&nbsp;bean:write&nbsp;标签来产生文本时，默认情况下任何对HTML处理敏感的字符都要被它们的对等实体代替。例如，大于号字符(&gt;)&nbsp;将被替代为</span><span style="color: #ff0000;">&amp;gt;</span><span style="color: #000000;">字符实体。这种特征称为是响应过滤（&nbsp;response&nbsp;filtering），默认情况下是激活的。在大多数情况下，过滤正是希望的行为，因为未经过滤的文本可能被浏览器误解释。Table&nbsp;3-4&nbsp;列出了被bean:write标签过滤的字符和它们的对应实体。<br />
Table&nbsp;3-4.&nbsp;被过滤的字符<br />
<br />
字符名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
字符值<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
替代实体<br />
<br />
大于<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&amp;lt</span><span style="color: #ff0000;">;<br />
<br />
小于<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #ff0000;">&amp;gt;</span><span style="color: #000000;"><br />
<br />
&amp;符号<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&amp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #ff0000;">&amp;amp;</span><span style="color: #000000;"><br />
<br />
双引号<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
"<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #ff0000;">&amp;quot;</span><span style="color: #000000;"><br />
<br />
反斜杠<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
\<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&#39;<br />
<br />
&nbsp;<br />
<br />
但是有时候，你希望被渲染的文本中包括HTML&nbsp;标签。假设你有一个在线日志应用，允许用户输入将要显示在一个页面中的文本。允许使用HTML&nbsp;标签将使得用户可以那些可以格式化文本的标记。文本中可能包含超链接，不同的字体，以及图像等等。在其他情形下，你的应用可能可能还会从其他来源，比如另一个URL，一个XML文件，一个Web&nbsp;Service或者数据库中，获得HTML模板文本。<br />
<br />
通过将bean:write标签的filtered属性设置为false，你就可以告诉Struts标签不要使用相应的实体替换&nbsp;tag&nbsp;not&nbsp;to&nbsp;特殊字符。首先，我们来看一下过滤是如何工作的。假设一个用户在表单中输入了下面的文本：<br />
Apache&nbsp;Struts&nbsp;Web&nbsp;Framework&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">b</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">rocks</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">b</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">!<br />
<br />
&nbsp;<br />
<br />
现在这个文本将被bean:write标签来渲染显示。当filtered&nbsp;属性设施为true时，特殊字符将被其对等物替换，这样文本看起来就会是：<br />
Apache&nbsp;Struts&nbsp;Web&nbsp;Framework&nbsp;</span><span style="color: #ff0000;">&amp;lt;</span><span style="color: #000000;">b</span><span style="color: #ff0000;">&amp;gt;</span><span style="color: #000000;">rocks</span><span style="color: #ff0000;">&amp;lt;</span><span style="color: #000000;">/b</span><span style="color: #ff0000;">&amp;gt;</span><span style="color: #000000;">!<br />
<br />
这很有可能不是用户所想要的。他想要的是"Apache&nbsp;Struts&nbsp;Web&nbsp;Framework&nbsp;rocks!"。但是，因为意图是想要允许用户输入装饰文本的HTML标签，那么将filtered属性设置为false&nbsp;就会得到正确的渲染：<br />
Apache&nbsp;Struts&nbsp;Web&nbsp;Framework&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">b</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">rocks</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">b</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">!<br />
<br />
&nbsp;<br />
<br />
浏览器将认识这个标签，并且按其所愿正确的应用HTML&nbsp;标记。<br />
<br />
这在渲染一个Web页面时式一个有用的机制。但是，在使用这个方法时必须足够小心。如果数据是没有过滤的，那么就可能会危及渲染后的&nbsp;HTML页面的布局，整个页面可能会看起来遭到破坏。例如，假定下面的文本被输入：<br />
Apache&nbsp;Struts&nbsp;Web&nbsp;Framework&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">b</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">rocks</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">b</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">!<br />
<br />
&nbsp;<br />
<br />
咋看起来，这没什么问题。但是，注意到b元素的后面一个关闭标签的斜杠缺失了。这个错误很容易发生，而且这可能会使得页面中后面的所有文本都是粗体。<br />
<br />
不幸的是，要避免这类错误是很困难的。最好还是试图确保输入的数据都是正确有效的HTML。还有个选择就是通过XML&nbsp;解析器来处理输出。它会检测诸如标记不匹配之类的问题。你还可以通过一些能够试图纠正问题的解析器来完成，比如Jtidy。最后，如果数据是来自于非受控的来源，你可以选择完全不允许HTML。如果你还想使用一些文本装饰功能的话，还可以考虑使用WikiText&nbsp;或者UBB&nbsp;Code之类的格式表示来替代。<br />
相关动作<br />
<br />
JTidy&nbsp;提供了一个命令行接口和Java&nbsp;API&nbsp;来解析和整理HTML。关于JTidy&nbsp;的细节请访问http://jtidy.sourceforge.net。<br />
<br />
UBBCode&nbsp;是PHP本身支持的一种标记格式。也可以在Java中处理UBBCode。一个解析UBBCode&nbsp;的PHP函数，有人在Java中重写了，地址可见：http://www.firegemsoftware.com/other/tutorials/ubb.php.</span></div>
<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/224457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-08-26 13:03 <a href="http://www.blogjava.net/wx886104/archive/2008/08/26/224457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>