﻿<?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-StevenBot-Saltsam-文章分类-遇到的一些问题</title><link>http://www.blogjava.net/Steven-bot/category/49756.html</link><description>眼睛能装下世界，为何却装不下眼泪? 一只风筝一辈子只为一根线冒险。 
那不是一场游戏，为何总有一根线牵着心怀，隐隐作疼？
那不是一段邂逅，为何飘在桥上的影子，总缠进梦乡？
那不是一个梦境，为何你的温柔私语，总是不经意的响起？</description><language>zh-cn</language><lastBuildDate>Thu, 17 Nov 2011 06:07:48 GMT</lastBuildDate><pubDate>Thu, 17 Nov 2011 06:07:48 GMT</pubDate><ttl>60</ttl><item><title>html select radio -- jquery</title><link>http://www.blogjava.net/Steven-bot/articles/363841.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Tue, 15 Nov 2011 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/363841.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/363841.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/363841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/363841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/363841.html</trackback:ping><description><![CDATA[<div><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #eeeeee; ">$.fn.selectReadOnly=function(){</span><br style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; " /><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tem=$(this).children('option').index($("option:selected"));</span><br style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; " /><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).change(function(){</span><br style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; " /><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).children('option').eq(tem).attr("selected",true);</span><br style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; " /><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</span><br style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; " /><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; ">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; " /><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #eeeeee; ">&nbsp;&nbsp;&nbsp;&nbsp;$("select:[readonly='readonly']").selectReadOnly();<br /><br />//</span><span style="background-color: #f5f5f5; color: #0000ff; ">var</span><span style="background-color: #f5f5f5; ">&nbsp;val</span><span style="background-color: #f5f5f5; ">=</span><span style="background-color: #f5f5f5; ">$('input:radio[name</span><span style="background-color: #f5f5f5; ">=</span><span style="background-color: #f5f5f5; ">"</span><span style="background-color: #f5f5f5; ">sex</span><span style="background-color: #f5f5f5; ">"</span><span style="background-color: #f5f5f5; ">]:checked').val();</span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/363841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-11-15 14:43 <a href="http://www.blogjava.net/Steven-bot/articles/363841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>归纳一些网上取JAVA路径的方法</title><link>http://www.blogjava.net/Steven-bot/articles/363839.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Tue, 15 Nov 2011 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/363839.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/363839.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/363839.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/363839.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/363839.html</trackback:ping><description><![CDATA[<div><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; color: red; ">归纳一些网上取JAVA路径的方法：&nbsp;</span><br style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; " /><span style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">注明：如果从ANT启动程序，this.getClass().getResource("")取出来的比较怪，直接用JAVA命令行调试就可成功。</span><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">得到classpath和当前类的绝对路径的一些方法</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">获得CLASSPATH之外路径的方法：</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; "><span style="color: #008000; ">URL base = this.getClass().getResource("");</span>&nbsp;<br />//先获得本类的所在位置，如/home/popeye/testjava/build/classes/net/&nbsp;<br /><span style="color: #008000; ">String path = new File(base.getFile()， "&#8230;&#8230;/&#8230;&#8230;/&#8230;&#8230;/"+name).getCanonicalPath();</span>&nbsp;<br />//就可以得到/home/popeye/testjava/name</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; "><span style="color: #ff6600; ">1.FileTest.class.getResource("")</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">得到的是当前类FileTest.class文件的URI目录。不包括自己！</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">如：<span style="color: #008000; ">file：/D：/java/eclipse32/workspace/jbpmtest3/bin/com/test/</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; "><span style="color: #ff6600; ">2.FileTest.class.getResource("/")</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">得到的是当前的classpath的绝对URI路径。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">如：<span style="color: #008000; ">file：/D：/java/eclipse32/workspace/jbpmtest3/bin/</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; "><span style="color: #ff6600; ">3.Thread.currentThread().getContextClassLoader().getResource("")</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">得到的也是当前ClassPath的绝对URI路径。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">如：<span style="color: #008000; ">file：/D：/java/eclipse32/workspace/jbpmtest3/bin/</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; "><span style="color: #ff6600; ">4.FileTest.class.getClassLoader().getResource("")</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">得到的也是当前ClassPath的绝对URI路径。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">如：<span style="color: #008000; ">file：/D：/java/eclipse32/workspace/jbpmtest3/bin/</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; "><span style="color: #ff6600; ">5.ClassLoader.getSystemResource("")</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">得到的也是当前ClassPath的绝对URI路径。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">如：<span style="color: #008000; ">file：/D：/java/eclipse32/workspace/jbpmtest3/bin/</span></p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">在Web应用程序中，我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。这样，我们只需要提供相对于Web应用程序根目录的路径，就可以构建出定位资源的绝对路径。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">注意点：</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">1.尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径。这是一颗<span style="color: #008000; ">定时炸弹</span>，随时可能要你的命。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">2.尽量使用URI形式的绝对路径资源。它可以很容易的转变为URI，URL，File对象。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">3.尽量使用相对classpath的相对路径。不要使用绝对路径。使用上面ClassLoaderUtil类的public static URL getExtendResource(String relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">4.绝对不要使用硬编码的绝对路径。因为，我们完全可以使用ClassLoader类的getResource("")方法得到当前classpath的绝对路径。</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">使用硬编码的绝对路径是完全没有必要的！它一定会让你死的很难看！程序将无法移植！</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">如果你一定要指定一个绝对路径，那么使用配置文件，也比硬编码要好得多！</p><p style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; text-align: left; background-color: #ffffff; ">当然，我还是推荐你使用程序得到classpath的绝对路径来拼资源的绝对路径.</p></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/363839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-11-15 14:35 <a href="http://www.blogjava.net/Steven-bot/articles/363839.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态SQL语句--mybatis</title><link>http://www.blogjava.net/Steven-bot/articles/363460.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Thu, 10 Nov 2011 12:34:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/363460.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/363460.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/363460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/363460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/363460.html</trackback:ping><description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 动态SQL语句<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   有些时候，sql语句where条件中，需要一些安全判断，例如按性别检索，如果传入的参数是空的，此时查询出的结果很可能是空的，也许我们需要参数为空 时，是查出全部的信息。这是我们可以使用动态sql，增加一个判断，当参数不符合要求的时候，我们可以不去判断此查询条件。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下文均采用mysql语法和函数（例如字符串链接函数CONCAT）。  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 源代码<a rel="nofollow" href="http://limingnihao.javaeye.com/admin/blogs/782190">http://limingnihao.javaeye.com/admin/blogs/782190</a></p>  <p>3.1 if标签<br />&nbsp;一个很普通的查询：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 查询学生list，like姓名 --&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListLikeName" parameterType="StudentEntity" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * from STUDENT_TBL ST&nbsp;&nbsp;&nbsp;&nbsp; <br />WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')&nbsp;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;!-- 查询学生list，like姓名 --&gt;<br />&lt;select id="getStudentListLikeName" parameterType="StudentEntity" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * from STUDENT_TBL ST <br />WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')<br />&lt;/select&gt;</p>  <p>但是此时如果studentName是null或空字符串，此语句很可能报错或查询结果为空。此时我们使用if动态sql语句先进行判断，如果值为null或等于空字符串，我们就不进行此条件的判断。</p>  <p>修改为：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 查询学生list，like姓名 --&gt;&nbsp;&nbsp; <br />&lt;select id=" getStudentListLikeName " parameterType="StudentEntity" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * from STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;if test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;!-- 查询学生list，like姓名 --&gt;<br />&lt;select id=" getStudentListLikeName " parameterType="StudentEntity" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * from STUDENT_TBL ST<br />&nbsp;&lt;if test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')<br />&nbsp;&lt;/if&gt;<br />&lt;/select&gt;<br />&nbsp;此时，当studentName的值为null或&#8217;&#8217;的时候，我们并不进行where条件的判断，所以当studentName值为null或&#8217;&#8217;值，不附带这个条件，所以查询结果是全部。</p>  <p>&nbsp;由于参数是Java的实体类，所以我们可以把所有条件都附加上，使用时比较灵活， new一个这样的实体类，我们需要限制那个条件，只需要附上相应的值就会where这个条件，相反不去赋值就可以不在where中判断。</p>  <p><br />&nbsp;&nbsp; 代码中的where标签，请参考3.2.1.</p>  <p>Xml代码&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别、=生日、=班级，使用where,参数entity类型 --&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListWhereEntity" parameterType="StudentEntity" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * from STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;where&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentSex!= null and studentSex!= '' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.STUDENT_SEX = #{studentSex}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentBirthday!=null"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.STUDENT_BIRTHDAY = #{studentBirthday}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="classEntity!=null and classEntity.classID !=null and classEntity.classID!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.CLASS_ID = #{classEntity.classID}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/where&gt;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别、=生日、=班级，使用where,参数entity类型 --&gt;<br />&lt;select id="getStudentListWhereEntity" parameterType="StudentEntity" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * from STUDENT_TBL ST<br />&nbsp;&lt;where&gt;<br />&nbsp;&nbsp;&lt;if test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;&nbsp;ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentSex!= null and studentSex!= '' "&gt;<br />&nbsp;&nbsp;&nbsp;AND ST.STUDENT_SEX = #{studentSex}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentBirthday!=null"&gt;<br />&nbsp;&nbsp; &nbsp;AND ST.STUDENT_BIRTHDAY = #{studentBirthday}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="classEntity!=null and classEntity.classID !=null and classEntity.classID!='' "&gt;<br />&nbsp;&nbsp;&nbsp;AND ST.CLASS_ID = #{classEntity.classID}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&lt;/where&gt;<br />&lt;/select&gt;<br />查询，姓名中有&#8216;李&#8217;，男，生日在&#8216;1985-05-28&#8217;，班级在&#8216;20000002&#8217;的学生。 </p>  <p>Java代码&nbsp; <br />StudentEntity entity = new StudentEntity();&nbsp;&nbsp;&nbsp; <br />entity.setStudentName("李");&nbsp;&nbsp;&nbsp; <br />entity.setStudentSex("男");&nbsp;&nbsp;&nbsp; <br />entity.setStudentBirthday(StringUtil.parse("1985-05-28"));&nbsp;&nbsp;&nbsp; <br />entity.setClassEntity(classMapper.getClassByID("20000002"));&nbsp;&nbsp;&nbsp; <br />List&lt;StudentEntity&gt; studentList = studentMapper.getStudentListWhereEntity(entity);&nbsp;&nbsp;&nbsp; <br />for( StudentEntity entityTemp : studentList){&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; System.out.println(entityTemp.toString());&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />StudentEntity entity = new StudentEntity();<br />entity.setStudentName("李");<br />entity.setStudentSex("男");<br />entity.setStudentBirthday(StringUtil.parse("1985-05-28"));<br />entity.setClassEntity(classMapper.getClassByID("20000002"));<br />List&lt;StudentEntity&gt; studentList = studentMapper.getStudentListWhereEntity(entity);<br />for( StudentEntity entityTemp : studentList){<br />&nbsp;System.out.println(entityTemp.toString());<br />}</p>  <p>3.2 where、set、trim标签</p>  <p>3.2.1 where<br />当if标签较多时，这样的组合可能会导致错误。例如，like姓名，等于指定性别等：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别 --&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * from STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentSex!= null and studentSex!= '' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.STUDENT_SEX = #{studentSex}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别 --&gt;<br />&lt;select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * from STUDENT_TBL ST<br />&nbsp;&nbsp;WHERE<br />&nbsp;&nbsp;&lt;if test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;&nbsp;ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentSex!= null and studentSex!= '' "&gt;<br />&nbsp;&nbsp;&nbsp;AND ST.STUDENT_SEX = #{studentSex}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&lt;/select&gt;<br />&nbsp;如果上面例子，参数studentName为null或&#8217;&#8217;，则或导致此sql组合成&#8220;WHERE AND&#8221;之类的关键字多余的错误SQL。<br />&nbsp;这时我们可以使用where动态语句来解决。这个&#8220;where&#8221;标签会知道如果它包含的标签中有返回值的话，它就插入一个&#8216;where&#8217;。此外，如果标签返回的内容是以AND 或OR 开头的，则它会剔除掉。<br />&nbsp;上面例子修改为：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别 --&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * from STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;where&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentSex!= null and studentSex!= '' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.STUDENT_SEX = #{studentSex}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/where&gt;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别 --&gt;<br />&lt;select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * from STUDENT_TBL ST<br />&nbsp;&lt;where&gt;<br />&nbsp;&nbsp;&lt;if test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;&nbsp;ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentSex!= null and studentSex!= '' "&gt;<br />&nbsp;&nbsp;&nbsp;AND ST.STUDENT_SEX = #{studentSex}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&lt;/where&gt;<br />&lt;/select&gt;</p>  <p>3.2.2 set<br />当在update语句中使用if标签时，如果前面的if没有执行，则或导致逗号多余错误。使用set标签可以将动态的配置SET 关键字，和剔除追加到条件末尾的任何不相关的逗号。<br />没有使用if标签时，如果有一个参数为null，都会导致错误，如下示例：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 更新学生信息 --&gt;&nbsp;&nbsp; <br />&lt;update id="updateStudent" parameterType="StudentEntity"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; UPDATE STUDENT_TBL&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET STUDENT_TBL.STUDENT_NAME = #{studentName},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_SEX = #{studentSex},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.CLASS_ID = #{classEntity.classID}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; WHERE STUDENT_TBL.STUDENT_ID = #{studentID};&nbsp;&nbsp;&nbsp; <br />&lt;/update&gt;&nbsp;&nbsp; <br />&lt;!-- 更新学生信息 --&gt;<br />&lt;update id="updateStudent" parameterType="StudentEntity"&gt;<br />&nbsp;UPDATE STUDENT_TBL<br />&nbsp;&nbsp;&nbsp; SET STUDENT_TBL.STUDENT_NAME = #{studentName},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_SEX = #{studentSex},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.CLASS_ID = #{classEntity.classID}<br />&nbsp; WHERE STUDENT_TBL.STUDENT_ID = #{studentID};<br />&lt;/update&gt;</p>  <p>&nbsp;使用set+if标签修改后，如果某项为null则不进行更新，而是保持数据库原值。如下示例：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 更新学生信息 --&gt;&nbsp;&nbsp; <br />&lt;update id="updateStudent" parameterType="StudentEntity"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; UPDATE STUDENT_TBL&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;set&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_NAME = #{studentName},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentSex!=null and studentSex!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_SEX = #{studentSex},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentBirthday!=null "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="classEntity!=null and classEntity.classID!=null and classEntity.classID!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.CLASS_ID = #{classEntity.classID}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/set&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; WHERE STUDENT_TBL.STUDENT_ID = #{studentID};&nbsp;&nbsp;&nbsp; <br />&lt;/update&gt;&nbsp;&nbsp; <br />&lt;!-- 更新学生信息 --&gt;<br />&lt;update id="updateStudent" parameterType="StudentEntity"&gt;<br />&nbsp;UPDATE STUDENT_TBL<br />&nbsp;&lt;set&gt;<br />&nbsp;&nbsp;&lt;if test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.STUDENT_NAME = #{studentName},<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentSex!=null and studentSex!='' "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.STUDENT_SEX = #{studentSex},<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentBirthday!=null "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="classEntity!=null and classEntity.classID!=null and classEntity.classID!='' "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.CLASS_ID = #{classEntity.classID}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&lt;/set&gt;<br />&nbsp;WHERE STUDENT_TBL.STUDENT_ID = #{studentID};<br />&lt;/update&gt;<br />3.2.3 trim<br />&nbsp;trim是更灵活的去处多余关键字的标签，他可以实践where和set的效果。</p>  <p><br />&nbsp;where例子的等效trim语句：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别 --&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * from STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;trim prefix="WHERE" prefixOverrides="AND|OR"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentSex!= null and studentSex!= '' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.STUDENT_SEX = #{studentSex}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/trim&gt;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;!-- 查询学生list，like姓名，=性别 --&gt;<br />&lt;select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * from STUDENT_TBL ST<br />&nbsp;&lt;trim prefix="WHERE" prefixOverrides="AND|OR"&gt;<br />&nbsp;&nbsp;&lt;if test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;&nbsp;ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentSex!= null and studentSex!= '' "&gt;<br />&nbsp;&nbsp;&nbsp;AND ST.STUDENT_SEX = #{studentSex}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&lt;/trim&gt;<br />&lt;/select&gt;<br />set例子的等效trim语句：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 更新学生信息 --&gt;&nbsp;&nbsp; <br />&lt;update id="updateStudent" parameterType="StudentEntity"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; UPDATE STUDENT_TBL&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;trim prefix="SET" suffixOverrides=","&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_NAME = #{studentName},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentSex!=null and studentSex!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_SEX = #{studentSex},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="studentBirthday!=null "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;if test="classEntity!=null and classEntity.classID!=null and classEntity.classID!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STUDENT_TBL.CLASS_ID = #{classEntity.classID}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/if&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/trim&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; WHERE STUDENT_TBL.STUDENT_ID = #{studentID};&nbsp;&nbsp;&nbsp; <br />&lt;/update&gt;&nbsp;&nbsp; <br />&lt;!-- 更新学生信息 --&gt;<br />&lt;update id="updateStudent" parameterType="StudentEntity"&gt;<br />&nbsp;UPDATE STUDENT_TBL<br />&nbsp;&lt;trim prefix="SET" suffixOverrides=","&gt;<br />&nbsp;&nbsp;&lt;if test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.STUDENT_NAME = #{studentName},<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentSex!=null and studentSex!='' "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.STUDENT_SEX = #{studentSex},<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="studentBirthday!=null "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&nbsp;&lt;if test="classEntity!=null and classEntity.classID!=null and classEntity.classID!='' "&gt;<br />&nbsp;&nbsp;&nbsp;STUDENT_TBL.CLASS_ID = #{classEntity.classID}<br />&nbsp;&nbsp;&lt;/if&gt;<br />&nbsp;&lt;/trim&gt;<br />&nbsp;WHERE STUDENT_TBL.STUDENT_ID = #{studentID};<br />&lt;/update&gt;</p>  <p>3.3 choose (when, otherwise)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  有时候我们并不想应用所有的条件，而只是想从多个选项中选择一个。MyBatis提供了choose  元素，按顺序判断when中的条件出否成立，如果有一个成立，则choose结束。当choose中所有when的条件都不满则时，则执行 otherwise中的sql。类似于Java 的switch  语句，choose为switch，when为case，otherwise则为default。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if是与(and)的关系，而choose是或（or）的关系。</p>  <p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如下面例子，同样把所有可以限制的条件都写上，方面使用。选择条件顺序，when标签的从上到下的书写顺序：</p>  <p>Xml代码&nbsp; <br />&lt;!-- 查询学生list，like姓名、或=性别、或=生日、或=班级，使用choose --&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListChooseEntity" parameterType="StudentEntity" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * from STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;where&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;choose&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;when test="studentName!=null and studentName!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/when&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;when test="studentSex!= null and studentSex!= '' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.STUDENT_SEX = #{studentSex}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/when&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;when test="studentBirthday!=null"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.STUDENT_BIRTHDAY = #{studentBirthday}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/when&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;when test="classEntity!=null and classEntity.classID !=null and classEntity.classID!='' "&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ST.CLASS_ID = #{classEntity.classID}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/when&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;otherwise&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/otherwise&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/choose&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/where&gt;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;!-- 查询学生list，like姓名、或=性别、或=生日、或=班级，使用choose --&gt;<br />&lt;select id="getStudentListChooseEntity" parameterType="StudentEntity" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * from STUDENT_TBL ST<br />&nbsp;&lt;where&gt;<br />&nbsp;&nbsp;&lt;choose&gt;<br />&nbsp;&nbsp;&nbsp;&lt;when test="studentName!=null and studentName!='' "&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')<br />&nbsp;&nbsp;&nbsp;&lt;/when&gt;<br />&nbsp;&nbsp;&nbsp;&lt;when test="studentSex!= null and studentSex!= '' "&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND ST.STUDENT_SEX = #{studentSex}<br />&nbsp;&nbsp;&nbsp;&lt;/when&gt;<br />&nbsp;&nbsp;&nbsp;&lt;when test="studentBirthday!=null"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;AND ST.STUDENT_BIRTHDAY = #{studentBirthday}<br />&nbsp;&nbsp;&nbsp;&lt;/when&gt;<br />&nbsp;&nbsp;&nbsp;&lt;when test="classEntity!=null and classEntity.classID !=null and classEntity.classID!='' "&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;AND ST.CLASS_ID = #{classEntity.classID}<br />&nbsp;&nbsp;&nbsp;&lt;/when&gt;<br />&nbsp;&nbsp;&nbsp;&lt;otherwise&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&lt;/otherwise&gt;<br />&nbsp;&nbsp;&lt;/choose&gt;<br />&nbsp;&lt;/where&gt;<br />&lt;/select&gt;<br />3.4 foreach<br />对于动态SQL 非常必须的，主是要迭代一个集合，通常是用于IN 条件。<br />List 实例将使用&#8220;list&#8221;做为键，数组实例以&#8220;array&#8221; 做为键。</p>  <p>&nbsp;</p>  <p>&nbsp;3.4.1参数为list实例的写法：<br />SQL写法：</p>  <p>Xml代码&nbsp; <br />&lt;select id="getStudentListByClassIDs" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * FROM STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; WHERE ST.CLASS_ID IN&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;foreach collection="list" item="classList"&nbsp; open="(" separator="," close=")"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #{classList}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/foreach&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListByClassIDs" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * FROM STUDENT_TBL ST<br />&nbsp; WHERE ST.CLASS_ID IN <br />&nbsp; &lt;foreach collection="list" item="classList"&nbsp; open="(" separator="," close=")"&gt;<br />&nbsp; &nbsp;#{classList}<br />&nbsp; &lt;/foreach&gt;&nbsp;<br />&lt;/select&gt;<br />接口的方法声明：</p>  <p>Java代码&nbsp; <br />public List&lt;StudentEntity&gt; getStudentListByClassIDs(List&lt;String&gt; classList);&nbsp;&nbsp; <br />public List&lt;StudentEntity&gt; getStudentListByClassIDs(List&lt;String&gt; classList); 测试代码，查询学生中，在20000002、20000003这两个班级的学生：</p>  <p>Java代码&nbsp; <br />List&lt;String&gt; classList = new ArrayList&lt;String&gt;();&nbsp;&nbsp;&nbsp; <br />classList.add("20000002");&nbsp;&nbsp;&nbsp; <br />classList.add("20000003");&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />List&lt;StudentEntity&gt; studentList = studentMapper.getStudentListByClassIDs(classList);&nbsp;&nbsp;&nbsp; <br />for( StudentEntity entityTemp : studentList){&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; System.out.println(entityTemp.toString());&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />List&lt;String&gt; classList = new ArrayList&lt;String&gt;();<br />classList.add("20000002");<br />classList.add("20000003");</p>  <p>List&lt;StudentEntity&gt; studentList = studentMapper.getStudentListByClassIDs(classList);<br />for( StudentEntity entityTemp : studentList){<br />&nbsp;System.out.println(entityTemp.toString());<br />}</p>  <p>&nbsp;3.4.2参数为Array实例的写法：<br />SQL语句：</p>  <p>Xml代码&nbsp; <br />&lt;select id="getStudentListByClassIDs" resultMap="studentResultMap"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; SELECT * FROM STUDENT_TBL ST&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; WHERE ST.CLASS_ID IN&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;foreach collection="array" item="ids"&nbsp; open="(" separator="," close=")"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #{ids}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/foreach&gt;&nbsp;&nbsp; <br />&lt;/select&gt;&nbsp;&nbsp; <br />&lt;select id="getStudentListByClassIDs" resultMap="studentResultMap"&gt;<br />&nbsp;SELECT * FROM STUDENT_TBL ST<br />&nbsp; WHERE ST.CLASS_ID IN <br />&nbsp; &lt;foreach collection="array" item="ids"&nbsp; open="(" separator="," close=")"&gt;<br />&nbsp; &nbsp;#{ids}<br />&nbsp; &lt;/foreach&gt;<br />&lt;/select&gt;</p>  <p>&nbsp;接口的方法声明：</p>  <p>Java代码&nbsp; <br />public List&lt;StudentEntity&gt; getStudentListByClassIDs(String[] ids);&nbsp;&nbsp; <br />public List&lt;StudentEntity&gt; getStudentListByClassIDs(String[] ids);测试代码，查询学生中，在20000002、20000003这两个班级的学生：</p>  <p>Java代码&nbsp; <br />String[] ids = new String[2];&nbsp;&nbsp;&nbsp; <br />ids[0] = "20000002";&nbsp;&nbsp;&nbsp; <br />ids[1] = "20000003";&nbsp;&nbsp;&nbsp; <br />List&lt;StudentEntity&gt; studentList = studentMapper.getStudentListByClassIDs(ids);&nbsp;&nbsp;&nbsp; <br />for( StudentEntity entityTemp : studentList){&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; System.out.println(entityTemp.toString());&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp; </p></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/363460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-11-10 20:34 <a href="http://www.blogjava.net/Steven-bot/articles/363460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse最佳设置</title><link>http://www.blogjava.net/Steven-bot/articles/363264.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Wed, 09 Nov 2011 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/363264.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/363264.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/363264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/363264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/363264.html</trackback:ping><description><![CDATA[<div><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; background-color: #ffffff; ">设置工作空间的项目编码, 防止出现乱码&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Window - Preferences - General - Workspace&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 将"Text file encoding"选为"Other" - "UTF-8"&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 改变现有项目的编码的步骤: 右击项目属性, 选择"Text file encoding"的编码&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">设置其它文件的编码&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Window -&gt; Preferences -&gt; General -&gt; Content Types&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 将需要设置的文件设置编码, 最好统一设为UTF-8&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 设置后, 如Javascript文件可正常显示中文&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">设置创建JSP页面时,将JSP的默认编码设为UTF-8&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Window -&gt; Preferences -&gt; MyEclipse -&gt; Files and Editors -&gt; JSP&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 将"Encoding"选为"ISO10646/Unicode(UTF-8)&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">去掉格式化JSP时页面中的空行&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Window -&gt; Preferences -&gt; MyEclipse -&gt; HTML -&gt; HTML Source&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 勾选"Clear all blank lines"&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">增强Eclipse的自动代码提示功能&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 默认下, 只有按"."或"Alt + /"才出现代码提示功能, 不够强大, 作小小设置, 可将代码提示功能像VS的一样方便&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 1. Window -&gt; Preferences -&gt; Java -&gt; Editor -&gt; Content Assist&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 2. 将"Auto Activation triggers for java"设置为".abc"(默认是"."), 点"Apply"应用&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 3. 导出目前的Eclipse配置文件: File -&gt; Export -&gt; General -&gt; Perferences, 选择保存路径, 保存得到*.epf文件&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 4. 用文本编辑器打开刚才保存的*.epf文件, 搜索".abc", 将".abc"部分改为&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ(," (以上为自动提示的触发字符,&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据个人习惯设置), 保存此配置文件(个人觉得不太好用，容易出错)&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 5. 导入此配置文件: File -&gt; import -&gt; General -&gt; Perferences, 导入修改后的配置文件.&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 第一个选项为反应时间,可设为100左右(默认200)&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">高亮类中同一引用的使用位置&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Window -&gt; Perferences -&gt; General - &gt; Editors -&gt; TextEditors -&gt; Annotations&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 选择"Occurrences",勾引"Text as" -&gt; "Highlighted"(块高亮)或"Squiggles"(虚线)&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">Link with Editor&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 打开类后, 自动在包管理器这里显示类的位置&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">取消Myeclipse的自动文件验证(卡傻的原因)&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Windows &#8211;&gt; Perferences &#8211;&gt;Myeclipse &#8211;&gt; Validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 保留manual(手动)部分，build下只留"classpath dependency Validator"&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 手动验证: 右键文件 -&gt; Myeclipse -&gt; Run Validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">取消拼写错误检查&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 我爱故意写错单词, 不需要系统帮我检查&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Windows &#8211;&gt; perferences &#8211;&gt; General &#8211;&gt; Editors-&gt; Text Editors -&gt; Spelling&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 去掉"Enable spell checking"勾选&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">关闭不需要的启动项&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; MyEclipse:&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; Windows &#8211;&gt; Perferences&#8211;&gt; General&#8211;&gt; Startup and Shutdown&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 我只保留了&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 顺序下来:&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 1, Tomcat6: 必备的...&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 2, 内存监视器: 可以查看Myeclipse的使用内存, 我喜欢这工具(在菜单Myeclipse - Utilities - Show Heap Status打开)&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 3, JSP Debug工具, 其实我也没用过, 怕有一天用到...&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 4, 文件创建向导(个人经常用到)&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 5, 向后兼容的意思吧, 怕有一天会用到, 但其实很少用, 可去掉&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 6, 透视图, 应该可以去掉吧...&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 其实就只用选择Tomcat6&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">关闭自动更新&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 1, Eclipse:&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows &#8211;&gt; Perferences&#8211;&gt; Install/Update -&gt; Automatic Updates&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不勾选"Automatically find new updates and notify me"&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; 2, Myeclipse:&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)Windows &#8211;&gt; Perferences&#8211;&gt; MyEclipse... -&gt; Community Essentials&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp; &amp;nb sp;&nbsp; 不勾选"Search for new features at startup"&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)Windows &#8211;&gt; Perferences&#8211;&gt; MyEclipse... -&gt; Maven4MyEclipse&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不勾选"Download repository index updates on startup"&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">第一：给MyEclipse 8.x Stable (8.0 GA) 添加启动画面&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">在myeclipse.ini配置文件追加上一行代码:&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">-&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">Dosgi.splashLocation=../Common/plugins/com.genuitec.myeclipse.product8_8.0.0.me200911192201/sp</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">lash.bmp&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">第二：让Eclipse拖着myeclipse狂飚&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">技巧一：取消自动validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">validation有一堆，什么xml、jsp、jsf、js等等，我们没有必要全部都去自动校验一下，只是需要的时候&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">才会手工校验一下，速度立马提升好几个档次！&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">取消方法：&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">windows--&gt;perferences--&gt;myeclipse--&gt;validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">除开Manual下面的复选框全部选中之外，其他全部不选&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">手工验证方法：&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">在要验证的文件上，单击鼠标右键--&gt;myeclipse--&gt;run validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">第三：MyEclipse耗内存的决绝办法&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">1 老是弹出Quick update error&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">这个问题的解决办法是关闭自动更新&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">Windows &gt; Preferences &gt; MyEclipse Enterprise Workbench &gt; Community Essentials,&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">把选项 "Search for new features on startup"的前勾去掉即可.&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">2 关闭updating indexes&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">Window &gt; Preferences &gt; Myeclipse Enterprise Workbench &gt; Maven4Myeclipse &gt; Maven&gt;禁用Download&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">repository index updates on startup&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">3 关闭MyEclipse的自动validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">windows--&gt;perferences--&gt;myeclipse--&gt;validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">将Build下全部勾取消&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">如果你需要验证某个文件的时候，我们可以单独去验证它。方法是，在需要验证的文件上( 右键 -&gt;&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">MyEclipse -&gt; Run Validation&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">4 启动优化，关闭不需要使用的模块&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">Window &gt; Preferences &gt; General &gt; Startup andy Shutdown 在这里列出的是MyEclipse启动时加载的模块&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">我这里只让它加载tomcat5 勾选 MyEclipse EASIE Tomcat 5&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">5. 在myeclipse 7.0版本以上时,&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">window-preferences-MyEclipse Enterprise Work-Maven4MyEclipse-Maven, 取消选中Download&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">repository index updates on startup！&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">6. 关闭更新调度：window --&gt; preferences --&gt; General --&gt; Startup and Shutdown --&gt; Automatic&nbsp;&nbsp;</span><br style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #4d4d4d; font-family: Tahoma, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #ffffff; ">Updates Scheduler（去掉前面的勾）</span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/363264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-11-09 10:16 <a href="http://www.blogjava.net/Steven-bot/articles/363264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>局部刷新</title><link>http://www.blogjava.net/Steven-bot/articles/362687.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Fri, 04 Nov 2011 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/362687.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/362687.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/362687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/362687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/362687.html</trackback:ping><description><![CDATA[<div><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; "></p><div><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">局部刷新：</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">这个方法就多了去了，常见的有以下几种；</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.get方法，$.post方法，$.getJson方法,$.ajax方法如下</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">前两种使用方法基本上一样</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.get(&#8221;Default.php&#8221;, {id:&#8221;1&#8243;, page: &#8220;2&#8243; },<br />function(da<wbr>ta){<br />//这里是回调方法。返回da<wbr>ta数据。这里想怎么处理就怎么处理了。<br />});</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.getScript方法：</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.getScript(&#8221;http://jqueryajax.com/jquery.js&#8221;,<br />function(){<br />$(&#8221;#go&#8221;).click(function(){//回调方法<br />$(&#8221;.block&#8221;).animate( { backgroundColor: &#8216;pink&#8217; }, 1000)<br />.animate( { backgroundColor: &#8216;blue&#8217; }, 1000);<br />});<br />});</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.getJson只是返回的数据类型不一样</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.getJson(&#8221;Default.php&#8221;, {id:&#8221;1&#8243;, page: &#8220;2&#8243; },<br />function(da<wbr>ta){<br />//注意，这里返回的JSON数据引用方法为&#8221;da<wbr>ta.info&#8221;,不明白的可以查一下json方面的教程。这里就不解释太多了<br />});</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.ajax 这个方法估计用的人很多吧。不过我不太喜欢用这个。个人觉得前面两个更方便</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">$.ajax({<br />type: &#8220;POST&#8221;, //提交的类型<br />url: &#8220;some.php&#8221;,//提交地址<br />da<wbr>ta: &#8220;name=John&amp;location=Boston&#8221;,//参数<br />success: function(msg){ //回调方法<br />alert( &#8220;Da<wbr>ta Saved: &#8221; + msg );//这里是方法内容，和上面的get方法一样<br />}<br />});</p><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; ">下面介绍全页面刷新方法：有时候可能会用到<br />window.location.reload()刷新当前页面.<br />parent.location.reload()刷新父亲对象（用于框架）<br />opener.location.reload()刷新父窗口对象（用于单开窗口）<br />top.location.reload()刷新最顶端对象（用于多开窗口）</p></div><p style="line-height: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, simsun, u5b8bu4f53; text-align: left; background-color: #ffffff; "><br /></p></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/362687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-11-04 15:07 <a href="http://www.blogjava.net/Steven-bot/articles/362687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jquery validate 验证器  </title><link>http://www.blogjava.net/Steven-bot/articles/362685.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Fri, 04 Nov 2011 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/362685.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/362685.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/362685.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/362685.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/362685.html</trackback:ping><description><![CDATA[<div><div style="font-family: Arial, Helvetica, simsun, u5b8bu4f53; font-size: 12px; line-height: normal; text-align: left; background-color: #ffffff; "><div><div><h3><span style="font-size: 20px; font-family: 微软雅黑, 黑体, Arial, Helvetica, sans-serif; ">jquery validate 验证器</span>&nbsp;&nbsp;</h3><p clearfix="" nbw-act=""  fc06"="" style="zoom: 1; margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #777777; line-height: 20px; "><span class="Apple-style-span" style="color: #000000; font-size: 14px; line-height: 25px; ">默认校验规则</span></p></div></div></div><div fc05="" fc11="" nbw-blog="" ztag=""  js-fs2"="" style="line-height: 25px; text-align: left; word-wrap: break-word; margin-top: 15px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; padding-top: 5px; padding-bottom: 5px; overflow-x: hidden; overflow-y: hidden; font-family: Arial, Helvetica, simsun, u5b8bu4f53; background-color: #ffffff; ">(1)required:true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; 必输字段<br />(2)remote:"check.php"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用ajax方法调用check.php验证输入值<br />(3)email:true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须输入正确格式的电子邮件<br />(4)url:true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须输入正确格式的网址<br />(5)date:true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须输入正确格式的日期<br />(6)dateISO:true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须输入正确格式的日期(ISO)，例如：2009-06-23，1998/01/22 只验证格式，不验证有效性<br />(7)number:true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须输入合法的数字(负数，小数)<br />(8)digits:true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须输入整数<br />(9)creditcard:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须输入合法的信用卡号<br />(10)equalTo:"#field"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入值必须和#field相同<br />(11)accept:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入拥有合法后缀名的字符串（上传文件的后缀）<br />(12)maxlength:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入长度最多是5的字符串(汉字算一个字符)<br />(13)minlength:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入长度最小是10的字符串(汉字算一个字符)<br />(14)rangelength:[5,10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)<br />(15)range:[5,10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入值必须介于 5 和 10 之间<br />(16)max:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入值不能大于5<br />(17)min:10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入值不能小于10<br /><br />默认的提示<br />messages: {<br />&nbsp;&nbsp;&nbsp; required: "This field is required.",<br />&nbsp;&nbsp;&nbsp; remote: "Please fix this field.",<br />&nbsp;&nbsp;&nbsp; email: "Please enter a valid email address.",<br />&nbsp;&nbsp;&nbsp; url: "Please enter a valid URL.",<br />&nbsp;&nbsp;&nbsp; date: "Please enter a valid date.",<br />&nbsp;&nbsp;&nbsp; dateISO: "Please enter a valid date (ISO).",<br />&nbsp;&nbsp;&nbsp; dateDE: "Bitte geben Sie ein g眉ltiges Datum ein.",<br />&nbsp;&nbsp;&nbsp; number: "Please enter a valid number.",<br />&nbsp;&nbsp;&nbsp; numberDE: "Bitte geben Sie eine Nummer ein.",<br />&nbsp;&nbsp;&nbsp; digits: "Please enter on<wbr>ly digits",<br />&nbsp;&nbsp;&nbsp; creditcard: "Please enter a valid credit card number.",<br />&nbsp;&nbsp;&nbsp; equalTo: "Please enter the same value again.",<br />&nbsp;&nbsp;&nbsp; accept: "Please enter a value with a valid extension.",<br />&nbsp;&nbsp;&nbsp; maxlength: $.validator.format("Please enter no more than {0} characters."),<br />&nbsp;&nbsp;&nbsp; minlength: $.validator.format("Please enter at least {0} characters."),<br />&nbsp;&nbsp;&nbsp; rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),<br />&nbsp;&nbsp;&nbsp; range: $.validator.format("Please enter a value between {0} and {1}."),<br />&nbsp;&nbsp;&nbsp; max: $.validator.format("Please enter a value less than or equal to {0}."),<br />&nbsp;&nbsp;&nbsp; min: $.validator.format("Please enter a value greater than or equal to {0}.")<br />}<br /><br /><br />如需要修改，可在js代码中加入：<br />jQuery.extend(jQuery.validator.messages, {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; required: "必选字段",<br />remote: "请修正该字段",<br />email: "请输入正确格式的电子邮件",<br />url: "请输入合法的网址",<br />date: "请输入合法的日期",<br />dateISO: "请输入合法的日期 (ISO).",<br />number: "请输入合法的数字",<br />digits: "只能输入整数",<br />creditcard: "请输入合法的信用卡号",<br />equalTo: "请再次输入相同的值",<br />accept: "请输入拥有合法后缀名的字符串",<br />maxlength: jQuery.validator.format("请输入一个长度最多是 {0} 的字符串"),<br />minlength: jQuery.validator.format("请输入一个长度最少是 {0} 的字符串"),<br />rangelength: jQuery.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),<br />range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),<br />max: jQuery.validator.format("请输入一个最大为 {0} 的值"),<br />min: jQuery.validator.format("请输入一个最小为 {0} 的值")<br />});<br />推荐做法，将此文件放入messages_cn.js中，在页面中引入<br />&lt;script src="../js/messages_cn.js" type="text/javas<wbr>cript"&gt;&lt;/script&gt;<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">四、使用方式<br />1.将校验规则写到控件中<br />&lt;script src="../js/jquery.js" type="text/javas<wbr>cript"&gt;&lt;/script&gt;<br />&lt;script src="../js/jquery.validate.js" type="text/javas<wbr>cript"&gt;&lt;/script&gt;<br />&lt;script src="./js/jquery.metadata.js" type="text/javas<wbr>cript"&gt;&lt;/script&gt;<br />$().ready(function() {<br />$("#signupForm").validate();<br />});</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&lt;form id="signupForm" method="get" act<wbr>ion=""&gt;<br />&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label for="firstname"&gt;Firstname&lt;/label&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="firstname" name="firstname" class="required" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />&lt;p&gt;<br />&lt;label for="email"&gt;E-Mail&lt;/label&gt;<br />&lt;input id="email" name="email" class="required email" /&gt;<br />&lt;/p&gt;<br />&lt;p&gt;<br />&lt;label for="password"&gt;Password&lt;/label&gt;<br />&lt;input id="password" name="password" type="password" class="{required:true,minlength:5}" /&gt;<br />&lt;/p&gt;<br />&lt;p&gt;<br />&lt;label for="confirm_password"&gt;确认密码&lt;/label&gt;<br />&lt;input id="confirm_password" name="confirm_password" type="password" class="{required:true,minlength:5,equalTo:'#password'}" /&gt;<br />&lt;/p&gt;<br />&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input class="submit" type="submit" value="Submit"/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />&lt;/form&gt;<br />使用class="{}"的方式，必须引入包：jquery.metadata.js<br />可以使用如下的方法，修改提示内容：<br />class="{required:true,minlength:5,messages:{required:'请输入内容'}}"<br />在使用equalTo关键字时，后面的内容必须加上引号，如下代码：<br />class="{required:true,minlength:5,equalTo:'#password'}"<br />另外一个方式，使用关键字：meta（为了元数据使用其他插件你要包装 你的验证规则 在他们自己的项目中可以用这个特殊的选项）<br />Tell the validation plugin to look inside a validate-property in metadata for validation rules.<br />例如：<br />meta: "validate"<br />&lt;input id="password" name="password" type="password" class="{validate:{required:true,minlength:5}}" /&gt;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">再有一种方式：<br />$.metadata.setType("attr", "validate");<br />这样可以使用validate="{required:true}"的方式，或者class="required"，但class="{required:true,minlength:5}"将不起作用<br /><br />2.将校验规则写到代码中</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">$().ready(function() {<br />$("#signupForm").validate({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rules: {<br />&nbsp;&nbsp; firstname: "required",<br />&nbsp;&nbsp; email: {<br />&nbsp;&nbsp;&nbsp; required: true,<br />&nbsp;&nbsp;&nbsp; email: true<br />&nbsp;&nbsp; },<br />&nbsp;&nbsp; password: {<br />&nbsp;&nbsp;&nbsp; required: true,<br />&nbsp;&nbsp;&nbsp; minlength: 5<br />&nbsp;&nbsp; },<br />&nbsp;&nbsp; confirm_password: {<br />&nbsp;&nbsp;&nbsp; required: true,<br />&nbsp;&nbsp;&nbsp; minlength: 5,<br />&nbsp;&nbsp;&nbsp; equalTo: "#password"<br />&nbsp;&nbsp; }<br />},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; messages: {<br />&nbsp;&nbsp; firstname: "请输入姓名",<br />&nbsp;&nbsp; email: {<br />&nbsp;&nbsp;&nbsp; required: "请输入Email地址",<br />&nbsp;&nbsp;&nbsp; email: "请输入正确的email地址"<br />&nbsp;&nbsp; },<br />&nbsp;&nbsp; password: {<br />&nbsp;&nbsp;&nbsp; required: "请输入密码",<br />&nbsp;&nbsp;&nbsp; minlength: jQuery.format("密码不能小于{0}个字符")<br />&nbsp;&nbsp; },<br />&nbsp;&nbsp; confirm_password: {<br />&nbsp;&nbsp;&nbsp; required: "请输入确认密码",<br />&nbsp;&nbsp;&nbsp; minlength: "确认密码不能小于5个字符",<br />&nbsp;&nbsp;&nbsp; equalTo: "两次输入密码不一致不一致"<br />&nbsp;&nbsp; }<br />}<br />&nbsp;&nbsp;&nbsp; });<br />});<br />//messages处，如果某个控件没有message，将调用默认的信息</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&lt;form id="signupForm" method="get" act<wbr>ion=""&gt;<br />&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label for="firstname"&gt;Firstname&lt;/label&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="firstname" name="firstname" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />&lt;p&gt;<br />&lt;label for="email"&gt;E-Mail&lt;/label&gt;<br />&lt;input id="email" name="email" /&gt;<br />&lt;/p&gt;<br />&lt;p&gt;<br />&lt;label for="password"&gt;Password&lt;/label&gt;<br />&lt;input id="password" name="password" type="password" /&gt;<br />&lt;/p&gt;<br />&lt;p&gt;<br />&lt;label for="confirm_password"&gt;确认密码&lt;/label&gt;<br />&lt;input id="confirm_password" name="confirm_password" type="password" /&gt;<br />&lt;/p&gt;<br />&nbsp;&nbsp;&nbsp; &lt;p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input class="submit" type="submit" value="Submit"/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/p&gt;<br />&lt;/form&gt;<br />required:true 必须有值<br />required:"#aa:checked"表达式的值为真，则需要验证<br />required:function(){}返回为真，表时需要验证<br />后边两种常用于，表单中需要同时填或不填的元素<br /><br />五、常用方法及注意问题<br />1.用其他方式替代默认的SUBMIT<br />$().ready(function() {<br />$("#signupForm").validate({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; submitHandler:function(form){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("submitted");&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.submit();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; });<br />});<br />可以设置validate的默认值，写法如下：<br />$.validator.setDefaults({<br />submitHandler: function(form) { alert("submitted!");form.submit(); }<br />});<br />如果想提交表单, 需要使用form.submit()而不要使用$(form).submit()</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">2.debug，如果这个参数为true，那么表单不会提交，只进行检查，调试时十分方便<br />$().ready(function() {<br />$("#signupForm").validate({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug:true<br />&nbsp;&nbsp;&nbsp; });<br />});<br />如果一个页面中有多个表单，用<br />$.validator.setDefaults({<br />&nbsp;&nbsp; debug: true<br />})</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">3.ignore：忽略某些元素不验证<br />ignore: ".ignore"</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">4.errorPlacement：Callback Default: 把错误信息放在验证的元素后面&nbsp;<br />指明错误放置的位置，默认情况是：error.appendTo(element.parent());即把错误信息放在验证的元素后面&nbsp;<br />errorPlacement: function(error, element) {&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; error.appendTo(element.parent());&nbsp;&nbsp;&nbsp;<br />}<br />//示例：<br />&lt;tr&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td class="label"&gt;&lt;label id="lfirstname" for="firstname"&gt;First Name&lt;/label&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td class="field"&gt;&lt;input id="firstname" name="firstname" type="text" value="" maxlength="100" /&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td class="status"&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td style="padding-right: 5px;"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="dateformat_eu" name="dateformat" type="radio" value="0" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label id="ldateformat_eu" for="dateformat_eu"&gt;14/02/07&lt;/label&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td style="padding-left: 5px;"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="dateformat_am" name="dateformat" type="radio" value="1" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label id="ldateformat_am" for="dateformat_am"&gt;02/14/07&lt;/label&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td class="label"&gt;&amp;nbsp;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td class="field" colspan="2"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="termswrap"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="terms" type="checkbox" name="terms" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;label id="lterms" for="terms"&gt;I have read and accept the Terms of Use.&lt;/label&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&lt;/tr&gt;<br />errorPlacement: function(error, element) {<br />&nbsp;&nbsp;&nbsp; if ( element.is(":radio") )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error.appendTo( element.parent().next().next() );<br />&nbsp;&nbsp;&nbsp; else if ( element.is(":checkbox") )<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error.appendTo ( element.next() );<br />&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error.appendTo( element.parent().next() );<br />}<br />代码的作用是：一般情况下把错误信息显示在&lt;td class="status"&gt;&lt;/td&gt;中，如果是radio显示在&lt;td&gt;&lt;/td&gt;中，如果是checkbox显示在内容的后面<br />errorClass：String Default: "error"&nbsp;<br />指定错误提示的css类名，可以自定义错误提示的样式<br />errorElement：String Default: "label"&nbsp;<br />用什么标签标记错误，默认的是label你可以改成em<br />errorContainer：Selector&nbsp;<br />显示或者隐藏验证信息，可以自动实现有错误信息出现时把容器属性变为显示，无错误时隐藏，用处不大<br />errorContainer: "#messageBox1, #messageBox2"<br />errorLabelContainer：Selector&nbsp;<br />把错误信息统一放在一个容器里面。<br />wrapper：String<br />用什么标签再把上边的errorELement包起来<br />一般这三个属性同时使用，实现在一个容器内显示所有错误提示的功能，并且没有信息时自动隐藏<br />errorContainer: "div.error",<br />errorLabelContainer: $("#signupForm div.error"),<br />wrapper: "li"<br /><br />设置错误提示的样式，可以增加图标显示<br />input.error { border: 1px solid red; }<br />label.error {<br />background:url("./demo/images/unchecked.gif") no-repeat 0px 0px;<br />padding-left: 16px;<br />padding-bottom: 2px;<br />font-weight: bold;<br />color: #EA5200;<br />}<br />label.checked {<br />background:url("./demo/images/checked.gif") no-repeat 0px 0px;<br />}<br />success：String,Callback&nbsp;<br />要验证的元素通过验证后的动作，如果跟一个字符串，会当做一个css类，也可跟一个函数<br />success: function(label) {<br />&nbsp;&nbsp;&nbsp; // set &amp;nbsp; as text for IE<br />&nbsp;&nbsp;&nbsp; label.html("&amp;nbsp;").addClass("checked");<br />&nbsp;&nbsp;&nbsp; //label.addClass("valid").text("Ok!")<br />}<br />添加"valid" 到验证元素, 在CSS中定义的样式&lt;style&gt;label.valid {}&lt;/style&gt;<br />success: "valid"<br /><br /><br />nsubmit： Boolean Default: true&nbsp;<br />提交时验证. 设置唯false就用其他方法去验证<br />on<wbr>focusout：Boolean Default: true&nbsp;<br />失去焦点是验证(不包括checkboxes/radio buttons)&nbsp;<br />on<wbr>keyup：Boolean Default: true&nbsp;<br />在keyup时验证.<br />on<wbr>click：Boolean Default: true&nbsp;<br />在checkboxes 和 radio 点击时验证<br />focusInvalid：Boolean Default: true&nbsp;<br />提交表单后，未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点<br />focusCleanup：Boolean Default: false&nbsp;<br />如果是true那么当未通过验证的元素获得焦点时，移除错误提示。避免和 focusInvalid 一起用<br /><br />// 重置表单<br />$().ready(function() {<br />var validator = $("#signupForm").validate({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; submitHandler:function(form){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("submitted");&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.submit();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; $("#reset").click(function() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; validator.resetForm();<br />&nbsp;&nbsp;&nbsp; });<br />});<br /><br />remote：URL<br />使用ajax方式进行验证，默认会提交当前验证的值到远程地址，如果需要提交其他的值，可以使用da<wbr>ta选项<br />remote: "check-email.php"<br />remote: {<br />&nbsp;&nbsp;&nbsp; url: "check-email.php",&nbsp;&nbsp;&nbsp;&nbsp; //后台处理程序<br />&nbsp;&nbsp;&nbsp; type: "post",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //数据发送方式<br />&nbsp;&nbsp;&nbsp; dataType: "json",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //接受数据格式&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; da<wbr>ta: {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //要传递的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username: function() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $("#username").val();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">远程地址只能输出 "true" 或 "false"，不能有其它输出<br /><br /><br />addMethod：name, method, message<br />自定义验证方法</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">// 中文字两个字节<br />jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {<br />&nbsp;&nbsp;&nbsp; var length = value.length;<br />&nbsp;&nbsp;&nbsp; for(var i = 0; i &lt; value.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(value.charCodeAt(i) &gt; 127){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />return this.optional(element) || ( length &gt;= param[0] &amp;&amp; length &lt;= param[1] );&nbsp;&nbsp;&nbsp;&nbsp;<br />}, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">// 邮政编码验证&nbsp;&nbsp;&nbsp;&nbsp;<br />jQuery.validator.addMethod("isZipCode", function(value, element) {&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; var tel = /^[0-9]{6}$/;<br />&nbsp;&nbsp;&nbsp; return this.optional(element) || (tel.test(value));<br />}, "请正确填写您的邮政编码");</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">radio和checkbox、select的验证<br />radio的required表示必须选中一个<br />&lt;input type="radio" id="gender_male" value="m" name="gender" class="{required:true}" /&gt;<br />&lt;input type="radio" id="gender_female" value="f" name="gender"/&gt;<br />checkbox的required表示必须选中<br />&lt;input type="checkbox" class="checkbox" id="agree" name="agree" class="{required:true}" /&gt;<br />checkbox的minlength表示必须选中的最小个数,maxlength表示最大的选中个数,rangelength:[2,3]表示选中个数区间<br />&lt;input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" class="{required:true, minlength:2}" /&gt;<br />&lt;input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]" /&gt;<br />&lt;input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]" /&gt;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">select的required表示选中的value不能为空<br />&lt;select id="jungle" name="jungle" title="Please select something!" class="{required:true}"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value=""&gt;&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value="1"&gt;Buga&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value="2"&gt;Baga&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value="3"&gt;Oi&lt;/option&gt;<br />&lt;/select&gt;<br />select的minlength表示选中的最小个数（可多选的select）,maxlength表示最大的选中个数,rangelength:[2,3]表示选中个数区间<br />&lt;select id="fruit" name="fruit" title="Please select at least two fruits" class="{required:true, minlength:2}" multiple="multiple"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value="b"&gt;Banana&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value="a"&gt;Apple&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value="p"&gt;Peach&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp; &lt;option value="t"&gt;Turtle&lt;/option&gt;<br />&lt;/select&gt;<br /><br /><br /><br /><br /></p></div></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/362685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-11-04 15:01 <a href="http://www.blogjava.net/Steven-bot/articles/362685.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获得当前路径, get java current directory</title><link>http://www.blogjava.net/Steven-bot/articles/361974.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Tue, 25 Oct 2011 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/361974.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/361974.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/361974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/361974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/361974.html</trackback:ping><description><![CDATA[<div><span style="color: #888888; font-family: Arial; font-size: 12px; line-height: 18px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><pre style="line-height: normal; "><p style="line-height: normal; "><strong style="line-height: normal; ">获得当前路径, get java current directory</strong>&nbsp;&nbsp;&nbsp;</p>String curDir = System.getProperty("user.dir");<br style="line-height: normal; " />手册上写的getProperty可以使用的一些键值 <table style="table-layout: auto; line-height: normal; "><tbody style="line-height: normal; "><tr style="line-height: normal; "></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.version</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 运行时环境版本</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vendor</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 运行时环境供应商</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vendor.url</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 供应商的 URL</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.home</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 安装目录</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vm.specification.version</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 虚拟机规范版本</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vm.specification.vendor</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 虚拟机规范供应商</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vm.specification.name</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 虚拟机规范名称</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vm.version</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 虚拟机实现版本</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vm.vendor</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 虚拟机实现供应商</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.vm.name</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 虚拟机实现名称</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.specification.version</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 运行时环境规范版本</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.specification.vendor</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 运行时环境规范供应商</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.specification.name</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 运行时环境规范名称</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.class.version</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 类格式版本号</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.class.path</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">Java 类路径</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.library.path</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">加载库时搜索的路径列表</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.io.tmpdir</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">默认的临时文件路径</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.compiler</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">要使用的 JIT 编译器的名称</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">java.ext.dirs</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">一个或多个扩展目录的路径</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">os.name</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">操作系统的名称</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">os.arch</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">操作系统的架构</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">os.version</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">操作系统的版本</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">file.separator</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">文件分隔符（在 UNIX 系统中是&#8220;/&#8221;）</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">path.separator</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">路径分隔符（在 UNIX 系统中是&#8220;:&#8221;）</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">line.separator</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">行分隔符（在 UNIX 系统中是&#8220;/n&#8221;）</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">user.name</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">用户的账户名称</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">user.home</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">用户的主目录</td></tr><tr style="line-height: normal; "><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; "><span style="line-height: normal; ">user.dir</span></td><td style="font-family: Arial; word-wrap: break-word; word-break: break-all; visibility: visible !important; zoom: 1 !important; filter: none; font-size: 12px; line-height: normal; ">用户的当前工作目录</td></tr></tbody></table><br /><br /><div><span style="font-family: tahoma, arial, 宋体, sans-serif; color: #000000; white-space: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "><div style="font-size: 14px; font-weight: bold; ">java获取当前路径</div><div style="border-top-width: 1px; border-top-style: solid; border-top-color: #bddaf2; margin-bottom: 5px; "></div><div id="blog_text" style="color: #333333; font-size: 14px; line-height: 1.5; ">1、利用System.getProperty()函数获取当前路径：<br />System.out.println(<strong>System.getProperty("user.dir")</strong>);//user.dir指定了当前的路径<br /><br />2、使用File提供的函数获取当前路径：<br /><strong>File directory = new File("");</strong>//设定为当前文件夹<br />try{<br />&nbsp;&nbsp;&nbsp; System.out.println(<strong>directory.getCanonicalPath()</strong>);//获取标准的路径<br />&nbsp;&nbsp;&nbsp; System.out.println(<strong>directory.getAbsolutePath()</strong>);//获取绝对路径<br />}catch(Exceptin e){}<br /><br />File.getCanonicalPath()和File.getAbsolutePath()大约只是对于<strong>new File(".")</strong>和<strong>new File("..")</strong>两种路径有所区别。<br /><br /># 对于getCanonicalPath()函数，&#8220;<strong>.</strong>"就表示当前的文件夹，而&#8221;<strong>..</strong>&#8220;则表示当前文件夹的上一级文件夹<br /># 对于getAbsolutePath()函数，则不管&#8221;<strong>.</strong>&#8221;、&#8220;<strong>..</strong>&#8221;，返回当前的路径加上你在new File()时设定的路径<br /># 至于getPath()函数，得到的只是你在new File()时设定的路径<br /><br />比如当前的路径为 C:\test ：<br /><strong>File directory = new File("abc");</strong><br /><strong>directory.getCanonicalPath();</strong>&nbsp;//得到的是<strong>C:\test\abc</strong><br /><strong>directory.getAbsolutePath();</strong>&nbsp;&nbsp;&nbsp; //得到的是<strong>C:\test\abc<br />direcotry.getPath();&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; //得到的是abc<br /></strong><br /><strong>File directory = new File(".");</strong><br /><strong>directory.getCanonicalPath();</strong>&nbsp;//得到的是<strong>C:\test</strong><br /><strong>directory.getAbsolutePath();</strong>&nbsp;&nbsp;&nbsp; //得到的是<strong>C:\test\.<br /></strong><strong>direcotry.getPath();&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; //得到的是.</strong><br /><strong><br /></strong><strong>File directory = new File("..");</strong><br /><strong>directory.getCanonicalPath();</strong>&nbsp;//得到的是<strong>C:\</strong><br /><strong>directory.getAbsolutePath();</strong>&nbsp;&nbsp;&nbsp; //得到的是<strong>C:\test\..<br /></strong><strong>direcotry.getPath();&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; //得到的是..</strong><br /><br /><br /><br /><br />另外：System.getProperty()中的字符串参数如下：<br /><br /><strong>System.getProperty()参数大全</strong><br /># java.version&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Java Runtime Environment version&nbsp;<br /># java.vendor&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Java Runtime Environment vendor&nbsp;<br /># java.vendor.url&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Java vendor URL&nbsp;<br /># java.home&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; Java installation directory&nbsp;<br /># java.vm.specification.version&nbsp;&nbsp; Java Virtual Machine specification version&nbsp;<br /># java.vm.specification.vendor&nbsp;&nbsp;&nbsp; Java Virtual Machine specification vendor&nbsp;<br /># java.vm.specification.name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java Virtual Machine specification name&nbsp;<br /># java.vm.version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Java Virtual Machine implementation version&nbsp;<br /># java.vm.vendor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Java Virtual Machine implementation vendor&nbsp;<br /># java.vm.name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Java Virtual Machine implementation name&nbsp;<br /># java.specification.version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java Runtime Environment specification version&nbsp;<br /># java.specification.vendor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java Runtime Environment specification vendor&nbsp;<br /># java.specification.name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Java Runtime Environment specification name&nbsp;<br /># java.class.version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java class format version number&nbsp;<br /># java.class.path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java class path&nbsp;<br /># java.library.path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; List of paths to search when loading libraries&nbsp;<br /># java.io.tmpdir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Default temp file path&nbsp;<br /># java.compiler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Name of JIT compiler to use&nbsp;<br /># java.ext.dirs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Path of extension directory or directories&nbsp;<br /># os.name&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; Operating system name&nbsp;<br /># os.arch&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; Operating system architecture&nbsp;<br /># os.version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Operating system version&nbsp;<br /># file.separator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; File separator ("/" on UNIX)&nbsp;<br /># path.separator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; Path separator (":" on UNIX)&nbsp;<br /># line.separator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Line separator ("\n" on UNIX)&nbsp;<br /># user.name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; User's account name&nbsp;<br /># user.home&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; User's home directory&nbsp;<br />#&nbsp;<strong>user.dir</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; User's current working directory<br />资料(System.getProperty()参数大全)：http://yueguangyuan.javaeye.com/blog/71940</div></span></div></pre></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/361974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-25 10:50 <a href="http://www.blogjava.net/Steven-bot/articles/361974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】location.reload和location.replace刷新页面的区别</title><link>http://www.blogjava.net/Steven-bot/articles/361957.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Tue, 25 Oct 2011 01:42:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/361957.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/361957.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/361957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/361957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/361957.html</trackback:ping><description><![CDATA[<div><span style="font-size: 12px; font-family: verdana, arial, helvetica, sans-serif; line-height: normal; "><div style="padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><a id="ctl04_TitleUrl" href="http://www.cnblogs.com/linny/archive/2010/08/24/1807435.html" style="text-decoration: underline; color: #5c9a3d; font-size: 22px; background-color: #ffffff; font-weight: bold; ">【转载】location.reload和location.replace刷新页面的区别</a></div><div id="cnblogs_post_body"><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">转载地址:<a href="http://www.dayanmei.com/blog.php/ID_816.htm" style="font-weight: bold; color: #5c9a3d; text-decoration: none; ">http://www.dayanmei.com/blog.php/ID_816.htm</a></p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">location.reload和location.replace都可以实现页面的刷新，他们的区别是什么？<br />reload 方法，该方法强迫浏览器刷新当前页面。<br />语法： location.reload([bForceGet])&nbsp;<br />参数： bForceGet， 可选参数， 默认为 false，从客户端缓存里取当前页。<br />true, 则以 GET 方式，从服务端取最新的页面, 相当于客户端点击 F5("刷新")</p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">replace 方法，该方法通过指定URL替换当前缓存在历史里（客户端）的项目，因此当使用replace方法之后，你不能通过&#8220;前进&#8221;和&#8220;后退&#8221;来访问已经被替换的URL。<br />语法： location.replace(URL)&nbsp;<br />参数： URL</p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">在实际应用的时候，重新刷新页面的时候，我们通常使用： location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面，所以页面的method="post"的时候，会出现&#8220;网页过期&#8221;的提示。那是因为Session的安全保护机制。可以想到： 当调用 location.reload() 方法的时候， aspx页面此时在服务端内存里已经存在， 因此必定是 IsPostback 的。如果有这种应用： 我们需要重新加载该页面，也就是说我们期望页面能够在服务端重新被创建， 我们期望是 Not IsPostback 的。这里，location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。你可以这么写： location.replace(location.href)</p></div></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/361957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-25 09:42 <a href="http://www.blogjava.net/Steven-bot/articles/361957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>form 中Enctype=multipart/form-data 的作用</title><link>http://www.blogjava.net/Steven-bot/articles/361955.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Tue, 25 Oct 2011 01:38:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/361955.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/361955.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/361955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/361955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/361955.html</trackback:ping><description><![CDATA[<div><span style="font-size: 12px; font-family: verdana, arial, helvetica, sans-serif; line-height: normal; "><div style="padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "><a id="ctl04_TitleUrl" href="http://www.cnblogs.com/linny/archive/2010/08/06/1793735.html" style="text-decoration: underline; color: #5c9a3d; font-size: 22px; background-color: #ffffff; font-weight: bold; ">【转载】form 中Enctype=multipart/form-data 的作用</a></div><div id="cnblogs_post_body"><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">ENCTYPE="multipart/form-data"用于表单里有图片上传。</p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">文章来源：<a href="http://hi.baidu.com/greengain/blog/item/e9c02855f564e6c0b645ae17.html" style="font-weight: bold; color: #5c9a3d; text-decoration: none; ">http://hi.baidu.com/greengain/blog/item/e9c02855f564e6c0b645ae17.html</a></p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">&lt;form name="userInfo" method="post" action="first_submit.php"&nbsp;&nbsp;&nbsp; ENCTYPE="multipart/form-data"&gt;<br />表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。<br />如下：<br />&lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="30" align="right"&gt;上传企业营业执照图片：&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;INPUT TYPE="FILE" NAME="uploadfile" SIZE="34"&nbsp;&nbsp;&nbsp; onChange="checkimage()"&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />就得加ENCTYPE="multipart/form-data"。</p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; "><br />表单中enctype="multipart/form-data"的意思，是设置表单的MIME编码。默认情况，这个编码格式是application/x-www-form-urlencoded，不能用于文件上传；只有使用了multipart/form-data，才能完整的传递文件数据，进行下面的操作.<br />enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。<br />form里面的input的值以2进制的方式传过去，所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时，用到下面的：</p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">SmartUpload su = new SmartUpload();//新建一个SmartUpload对象</p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">su.getRequest().getParameterValues();取数组值</p><p style="font-size: 12px; color: #000000; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; word-wrap: break-word; line-height: 18px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">su.getRequest().getParameter( );取单个参数单个值</p></div></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/361955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-25 09:38 <a href="http://www.blogjava.net/Steven-bot/articles/361955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL和MSSQL下，text 、ntext、 image、blob的比较</title><link>http://www.blogjava.net/Steven-bot/articles/360185.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 08 Oct 2011 04:21:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/360185.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/360185.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/360185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/360185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/360185.html</trackback:ping><description><![CDATA[<div><span style="color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 24px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;<strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">1、MySQL存在text和blob:</strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">（1）相同</p><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; ">在<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>或<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>列的存储或检索过程中，不存在大小写转换,当未运行在严格模式时，如果你为<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>或<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>列分配一个超过该列类型的最大长度的值值，值被截取以保证适合。如果截掉的字符不是空格，将会产生一条警告。使用严格<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">SQL</span>模式，会产生错误，并且值将被拒绝而不是截取并给出警告.</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>和<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>列不能有 默认值.</span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; ">当保存或检索<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>和<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>列的值时不删除尾部空格。<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">(</span>这与<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">VARBINARY</span>和<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">VARCHAR</span>列相同）.</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; ">对于<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>和<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>列的索引，必须指定索引前缀的长度。对于<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">CHAR</span>和<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">VARCHAR</span>，前缀长度是可选的.</span></span></span></li></ul><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">（2）相异&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">&nbsp;text&nbsp;:</p><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; ">TEXT值是大小写不敏感的</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; ">Text被视为非二进制字符串</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>列有一个字符集，并且根据字符集的 校对规则对值进行排序和比较</span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; ">可以将<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>列视为<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">VARCHAR</span>列</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">MySQL</span>连接程序<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">/ODBC</span>将<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">TEXT</span>值定义为<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">LONGVARCHAR</span></span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB 可以储存图片,TEXT不行，TEXT只能储存纯文本文件。4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型，并且有同样的最大长度和存储需求。</span></span></span></li></ul><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">blob:&nbsp;&nbsp;</p><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB值的排序和比较以大小写敏感方式执行;</span></span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>被视为二进制字符串;</span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>列没有字符集，并且排序和比较基于列值字节的数值值。</span></span></p></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; font-family: 宋体; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">在大多数方面，可以将<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>列视为能够足够大的<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">VARBINARY</span>列</p></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">MySQL</span>连接程序<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">/ODBC</span>将<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">BLOB</span>值定义为<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">LONGVARBINARY</span></span></span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。</span></span></span></li></ul><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">（3）其他：</span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">VARCHAR，BLOB和TEXT类型是变长类型，对于其存储需求取决于列值的实际长度(在前面的表格中用L表示)，而不是取决于类型的最大可能尺寸。例如，一个VARCHAR(10)列能保存最大长度为10个字符的一个字符串，实际的存储需要是字符串的长度 ，加上1个字节以记录字符串的长度。对于字符串'abcd'，L是4而存储要求是5个字节。<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />&nbsp; &nbsp; BLOB和TEXT类型需要1，2，3或4个字节来记录列值的长度，这取决于类型的最大可能长度。VARCHAR需要定义大小，有255的最大限制；TEXT则不需要。如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列，值被截断以适合它。</span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">CHAR(n) 固定长度，最多 255 个字符&nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />VARCHAR(n) 可变长度，MySQL 4.1 及以前最大 255 字符，MySQL 5 之后最大 65535 字节&nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />TINYTEXT 可变长度，最多 255 个字符&nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />TEXT 可变长度，最多 65535 个字符&nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />MEDIUMTEXT 可变长度，最多 16777215（2^24 - 1）个字符&nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />LONGTEXT 可变长度，最多 4294967295（2^32 - 1）（4G）个字符&nbsp;<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">2、MSSQL存在text、ntext和image:</strong></span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">ntext:</span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">可变长度 Unicode 数据的最大长度为 2^30 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍（以字节为单位）。ntext 在 SQL-92 中的同义词是 national text。</span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">text:</span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">服务器代码页中的可变长度非 Unicode 数据的最大长度为 2^31-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时，存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节（取决于字符串）。</span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">image:</span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: x-small; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: 宋体; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">在 Image 数据类型中存储的数据是以位字符串存储的，不是由 SQL Server 解释的，必须由应用程序来解释。例如，应用程序可以使用 BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。</span></span></span></p></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/360185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-08 12:21 <a href="http://www.blogjava.net/Steven-bot/articles/360185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> union、union all、intersect、minus</title><link>http://www.blogjava.net/Steven-bot/articles/360169.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 08 Oct 2011 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/360169.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/360169.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/360169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/360169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/360169.html</trackback:ping><description><![CDATA[<div><span style="color: #333333; font-family: Arial; line-height: 26px; "><p>假设我们有一个表Student，包括以下字段与数据：</p><p>drop table student;</p><p>create table student<br />(<br />id int primary key,<br />name nvarchar2(50) not null,<br />score number not null<br />);</p><p>insert into student values(1,'Aaron',78);<br />insert into student values(2,'Bill',76);<br />insert into student values(3,'Cindy',89);<br />insert into student values(4,'Damon',90);<br />insert into student values(5,'Ella',73);<br />insert into student values(6,'Frado',61);<br />insert into student values(7,'Gill',99);<br />insert into student values(8,'Hellen',56);<br />insert into student values(9,'Ivan',93);<br />insert into student values(10,'Jay',90);</p><p>commit;</p><ul><li><strong>Union和Union All的区别。</strong></li></ul><p>select *<br />from student<br />where id &lt; 4</p><p>union</p><p>select *<br />from student<br />where id &gt; 2 and id &lt; 6</p><p>结果将是</p><p>1&nbsp;&nbsp;&nbsp; Aaron&nbsp;&nbsp;&nbsp; 78<br />2&nbsp;&nbsp;&nbsp; Bill&nbsp;&nbsp;&nbsp; 76<br />3&nbsp;&nbsp;&nbsp; Cindy&nbsp;&nbsp;&nbsp; 89<br />4&nbsp;&nbsp;&nbsp; Damon&nbsp;&nbsp;&nbsp; 90<br />5&nbsp;&nbsp;&nbsp; Ella&nbsp;&nbsp;&nbsp; 73</p><p>如果换成Union All连接两个结果集，则返回结果是：</p><p>1&nbsp;&nbsp;&nbsp; Aaron&nbsp;&nbsp;&nbsp; 78<br />2&nbsp;&nbsp;&nbsp; Bill&nbsp;&nbsp;&nbsp; 76<br />3&nbsp;&nbsp;&nbsp; Cindy&nbsp;&nbsp;&nbsp; 89<br />3&nbsp;&nbsp;&nbsp; Cindy&nbsp;&nbsp;&nbsp; 89<br />4&nbsp;&nbsp;&nbsp; Damon&nbsp;&nbsp;&nbsp; 90<br />5&nbsp;&nbsp;&nbsp; Ella&nbsp;&nbsp;&nbsp; 73</p><p>可以看到，<strong>Union和Union All的区别之一在于对重复结果的处理。</strong></p><p>接下来我们将两个子查询的顺序调整一下，改为</p><p>--Union</p><p>select *<br />from student<br />where id &gt; 2 and id &lt; 6</p><p>union</p><p>select *<br />from student<br />where id &lt; 4</p><p>看看执行结果是否和你期望的一致？</p><p>--Union All</p><p>select *<br />from student<br />where id &gt; 2 and id &lt; 6</p><p>union all</p><p>select *<br />from student<br />where id &lt; 4</p><p>那么这个呢？</p><p>据此我们可知，<strong>区别之二在于对排序的处理。</strong>Union All将按照关联的次序组织数据，而Union将进行依据一定规则进行排序。那么这个规则是？我们换个查询方式看看：</p><p>select score,id,name<br />from student<br />where id &gt; 2 and id &lt; 6</p><p>union</p><p>select score,id,name<br />from student<br />where id &lt; 4</p><p>结果如下：</p><p>73&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; Ella<br />76&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; Bill<br />78&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; Aaron<br />89&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; Cindy<br />90&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; Damon</p><p>和我们预料的一致：将会按照字段的顺序进行排序。之前我们的查询是基于id,name,score的字段顺序，那么结果集将按照id优先进行排序；而现在新的字段顺序也改变了查询结果的排序。并且，是按照给定字段a,b,c...的顺序进行的order by。即结果是order by a,b,c...........的。我们看下一个查询：</p><p>select score,id,name<br />from student<br />where id &gt; 2</p><p>union</p><p>select score,id,name<br />from student<br />where id &lt; 4</p><p>结果如下：</p><p>56&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp; Hellen<br />61&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp; Frado<br />73&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; Ella<br />76&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; Bill<br />78&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; Aaron<br />89&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; Cindy<br />90&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; Damon<br />90&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp; Jay<br />93&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp; Ivan<br />99&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp; Gill</p><p>可以看到，对于score相同的记录，将按照下一个字段id进行排序。如果我们想自行控制排序，是不是用order by指定就可以了呢？答案是肯定的，不过在写法上有需要注意的地方：</p><p>select score,id,name<br />from student<br />where id &gt; 2 and id &lt; 7</p><p>union</p><p>select score,id,name<br />from student<br />where id &lt; 4</p><p>union</p><p>select score,id,name<br />from student<br />where id &gt; 8<br />order by id desc</p><p><strong>order by子句必须写在最后一个结果集里，并且其排序规则将改变操作后的排序结果。对于Union、Union All、Intersect、Minus都有效。</strong></p><p><strong>注意：</strong></p><p>1，Union可以对<strong>字段名不同但数据类型相同</strong>的结果集进行合并；</p><p>2，如果<strong>字段名不同</strong>的结果集进行Union，那么对此字段的<strong>Order by子句将失效</strong>。</p><p><strong>=================================================================================================================</strong></p><p>Intersect和Minus的操作和Union基本一致，这里一起总结一下：</p><p>Union，对两个结果集进行并集操作，不包括重复行，同时进行默认规则的排序；</p><p>Union All，对两个结果集进行并集操作，<strong>包括重复行</strong>，<strong>不进行排序</strong>；</p><p>Intersect，对两个结果集进行交集操作，不包括重复行，同时进行默认规则的排序；</p><p>Minus，对两个结果集进行差操作，不包括重复行，同时进行默认规则的排序。</p><p>可以在最后一个结果集中指定Order by子句改变排序方式。</p></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/360169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-08 10:14 <a href="http://www.blogjava.net/Steven-bot/articles/360169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>由PowerDesigner物理模型生成sql语句</title><link>http://www.blogjava.net/Steven-bot/articles/360168.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 08 Oct 2011 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/360168.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/360168.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/360168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/360168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/360168.html</trackback:ping><description><![CDATA[<div><span style="color: #333333; font-family: Arial; line-height: 26px; "><p>Tools--&gt;Execute Commands--&gt;Edit/Run Script 在打开的窗口中 past 下面的代码：</p><p>Option Explicit</p><p>ValidationMode = True</p><p>InteractiveMode = im_Batch</p><p>&nbsp;</p><p>Dim mdl 'the current model</p><p>'get the current active model</p><p>Set mdl = ActiveModel</p><p>If (mdl Is Nothing) Then</p><p>&nbsp;&nbsp; MsgBox "There is no current Model"</p><p>ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then</p><p>&nbsp;&nbsp; MsgBox "The current model is not an Physical Data model."</p><p>Else</p><p>&nbsp;&nbsp; ProcessFolder mdl</p><p>End If</p><p>&nbsp;</p><p>'This routine copy name into code for each table, each column and each view</p><p>'of the current folder</p><p>Private sub ProcessFolder(folder)</p><p>&nbsp;&nbsp; Dim Tab 'running table</p><p>&nbsp;&nbsp; for each Tab in folder.tables</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not tab.isShortcut then</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tab.comment = tab.name&nbsp; + tab.comment '此处任意设置表的注释，此处为表名和注释一起</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim col ' running column</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for each col in tab.columns</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; col.comment= col.name + col.comment</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if</p><p>&nbsp;&nbsp; next</p><p>&nbsp;</p><p>&nbsp;&nbsp; Dim view 'running view</p><p>&nbsp;&nbsp; for each view in folder.Views</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not view.isShortcut then</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; view.comment = view.name</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if</p><p>&nbsp;&nbsp; next</p><p>&nbsp;</p><p>&nbsp;&nbsp; ' go into the sub-packages</p><p>&nbsp;&nbsp; Dim f 'running folder</p><p>&nbsp;&nbsp; For Each f In folder.Packages</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not f.IsShortcut then</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProcessFolder f</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if</p><p>&nbsp;&nbsp; Next</p><p>end sub</p><p>然后运行Run</p><p>&nbsp;</p><p>Database --&gt; Generate Database&nbsp; 这时就可以生成带有comments为物理模型中Name属性的SQL语句了。</p></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/360168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-08 10:13 <a href="http://www.blogjava.net/Steven-bot/articles/360168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 使用PowerDesigner的物理模型创建升级管理数据库(转)</title><link>http://www.blogjava.net/Steven-bot/articles/360167.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 08 Oct 2011 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/360167.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/360167.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/360167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/360167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/360167.html</trackback:ping><description><![CDATA[<div><span style="color: #333333; font-family: Arial; line-height: 26px; "><div><h4>使用PowerDesigner的物理模型创建升级管理数据库</h4><h4>PowerDesigner是一种著名的CASE建摸工具，最开始为数据库建模设计，即物理模型(Physical Data Model)用于生成数据库表结构，还有面向对象模型(Object Oriented Model)，用于建立UML模型的结构，可以直接生成CS代码，还有其他的模型等等，不同的模型之间可以相互的转化。我最中意的就是它的物理模型直接设计生成数据库，给我们对数据库的生成升级维护带来极大的方便，下面主要来讲一下它的物理模型设计。</h4></div><div id="content"><div style="line-height: 24px; font-size: 16px; "><p style="text-indent: 2em; "><strong>1.使用PowerDesigner物理模型生成数据库</strong></p><p style="text-indent: 2em; ">打开PowerDesigner在File里New选择Physical Data Model(物理模型)，可在DBMS选项里面选择数据库的类型，新建立模型后PowerDesigner自动创建一个工作空间(Workspace)放在里面，然后模型下面默认会创建一个名PhysicalDiagram_1的物理图表区，这个其实就是用来区分数据库内某一模块的单元区域，我一般是把数据库内有关系的表放在同一块里面，如会员模块就叫MemberDiagrm里面放会员及其相关的表，其他模块就另外新建一个另外放在一起。浮在IDE右上方的Palette就是PowerDesigner里一些常见操作的工具面板，点击选择<img title="table" src="http://blog.csdn.net/huwei2003/article/details/upload/jonllen/article/a_pd_table.gif" alt="" width="16" height="15" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; " />在图表区新建一个FA_Member会员表，双击表在General里面修改表名描述，这里的Name最好是用中文，然后Code就是数据库的表名用英文，默认是Name to Code mirroring名字会连动的，如果觉得这个功能有点讨厌可在Tools工具栏General Options里Dialog的Name to Code mirroring不选中即可。表的列是在Columns选项卡里面添加的，同样Name最好用中文描述而Code即是表的列名了。 后面的P、F、M选项分别代表主键、外键、强制的(字段不为空)，选中主键强制的选项也会选中，外键不可选当字段有外键引用时自动选中。双击字段列可修改字段的一些属性，有描述、字段类型等，字段默认值在Standard Checks选项卡的Values里Default处设置。再新建一个会员类型表FA_MemberType，此时会员表里面的会员类型字段应该是引用会员类型表里面的会员类型编号，在PowerDesigner里表的主外关系建立的方法是：在Palette工具面板里面选择<img title="reference" src="http://blog.csdn.net/huwei2003/article/details/upload/jonllen/article/a_pd_reference.gif" alt="" width="16" height="15" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; " />Reference后先点击从表然后再拖向主表，从表一条带箭头实线指向主表以表示主外键引用关系，双击关系名以编辑引用关系属性，建议主外键关系取名为：FK_从表_Reference_主表，但注意这里的Code不是数据库内生成的主外键关系名，而是在Integrity选项卡里Constraint name设置，另外对Insert和Update强制关系级联(Cascade)更新、删除操作(sql2005叫叠层并可以设置为空或默认值)也在此选项卡内设置。Join选项卡里是设置两个主外键表的引用列，PowerDesigner会自动选择主表主键为默认主外键列，如果两个表的列名不一样则需要修改，无论是修改主外键还是表都能在Preview选项卡里面即时预览看到生成的SQL语句。生成整个数据库的SQL语句是在Database工具栏的Generate Database里，建议新建一个sql目录专门放生成的sql语句文件，第一次创建数据库所有表建议取名叫create1.0.sql(因为后面全部是update)，Generation type建议选择Script generation生成sql脚本文件，而不要选择下面的Direct generation直接连接数据库执行，因为有时候生成的SQL语句里面会有Warn警告需要稍做修改不然会报错的(如修改表字段类型时候将以前表内数据导入时会有Warn)。Automatic archive自动备份也需要选中，该选项使生成sql语句后将弹出保存当前工程模型的对话框，后缀名为apm(其实内容和工程文件格式pdm是一样的，同样都可以打开)，建议新建一个目录叫log里面存所有apm格式的归档记录文件，由于是创建数据库文件所以建议取名叫create1.0.apm，这样能与创建数据库的sql文件一一对应。要创建数据库，找到sql目录里生成的create1.0.sql文件执行即可。</p><p style="text-indent: 2em; "><strong>2.使用PowerDesigner升级维护数据库</strong></p><p style="text-indent: 2em; ">做项目难免要升级维护之前的数据库，PowerDesigner里的操作稍微比创建时麻烦点，还是继续以上面会员为例子，假如我现在已经创建好了数据库，但是需求的变化我需要在会员表上面增加一个区域编号，并引用新建的区域表，那用PowerDesigner模型该如何操作呢？首先开打pdm工程文件，在以前模型基础上直接进行修改，这里的操作就是新建一个区域表在再会员表添加一个区域字段引用它的外键，所有的修改完成后在Database工具栏Modify Database里面进行生成修改后的SQL语句，仍然建议设置生成sql语句的目录放在之前建立的sql目录下面，但是现在的文件名应该叫update2.0.sql，或者加在后面加上括号简要描述，如update2.0(add area).sql。注意记得指定Backup tables和Automatic archive选项，选中Backup tables将在修改表结构之前把原表改名加个tmp_前缀，创建好新的表结构后再insert into from select tmp_表插入以前表内的数据，起到备份以前表内数据功能，这就是为什么有时候用PowerDesigner升级数据库后会多一些tmp开头的临时表了，Automatic archive是在生成升级sql语句后提示保存当前记录的选项。由于这次修改是针对上创建数据库时候的修改，注意指定Get database schema选项里的Using a archive model文件，这里这个文件的路径应该是log目录下面的create1.0.apm文件，因为这次升级是针对上次创建数据库时的一次升级，PowerDesigner会自动拿当前模型和create1.0.apm之前保存的历史存档模型比较生成升级的sql语句，并显示确切的修改对比变化，很清晰一目了然，如下图：</p><div style="text-indent: 2em; "><a href="http://blog.csdn.net/huwei2003/article/details/upload/jonllen/article/a_pd_different.gif" target="_blank" style="color: #336699; text-decoration: none; "></a></div><p>&nbsp;</p><p style="text-indent: 2em; ">最后提示保存Archive Model归档记录模型，这里应该叫update2.0.amp(或加上括号简要描述)并保存到log目录下面，同样与update2.0对照，这样命名条理清晰可读性强。以后的升级依此类推，都是相对之前的归档记录进行升级，升级后记得保存当前记录，如果变化不大可以叫update2.1,update2.2依次递增，如果修改较大可以升级一个版本序号叫update3.0，或者后面加上括号和简要的描述等。但是有时候我们修改的地方很少产生的update修改语句可能不会马上去执行，而是要等到下一次有多个修改的地方合起来一起去更新，这样我们的话我们就有可能有多个update语句文件在服务器数据库上还没有执行，但是和以前的update语句却区分不开来到底有没有升级过的，虽然说PowerDesigner产生的升级语句是可以多次执行的，但不建议这么多，因为这样有可能会出错，有个办法就是在每个已经升级过的sql文件名后加个后缀_ed表示已经升级过的，这样我下次升级后就只执行那些没有_ed还没有升级过的sql文件。当我们几次升级数据库后，会发现保存的数据库归档记录文件排列得很整齐。^_^</p><p style="text-indent: 2em; ">PowerDesigner的apm归档格式文件也是可以直接打开的，有个时候我们可能需要数据库某个升级版本的结构，那么现在您可以找到那个归档的apm文件用PowerDesigner直接打开，选择Database工具栏的Generate Database选项，那么这时候所产生的sql语句就是那个版本数据库的所有表结构了。</p><p style="text-indent: 2em; "><strong>3.使用PowerDesigner的Domain自定义列类型</strong></p><p style="text-indent: 2em; ">其实sqlserver数据库里面默认就支持用户定义的数据类型，该功能旨在对数据库字段实现通用和统一性，只要自定义一个数据库列类型，多处可以引用，修改自定义数据类型，所有引用处均自动修改，方便统一管理。PowerDesigner吸收这种自定义数据类型功能到模型里面，使用Domain新建一个用户自定义类型，在模型的列类型Domain处可选择用户自定义类型，最后在生成sql语句的时候PowerDesigner会自动将所有选择用户自定义类型的字段类型替换为用户自定义类型里的字段类型(不是所有的数据库都支持自定义数据类型)，一般来说我们至少会把表的主键字段做成一个用户自定义类型autoId，在autoId用户自定义类型里面我们设置它的类型Data type为int然后选中Identity，那么所有的引用表的主键就是int类型并自动增长，假如有一天我们要移植数据库或更换所有的表主键的类型那么只要修改用户自定义类型所有引用的表主键字段便会跟着被修改。还有一些字段为了做到通用性也建议使用用户自定义类型，如表的标识字段flag表示这行记录的状态，建议使用一个int类型的用户自定义类型并可设置默认值，还有当前时间字段也建议新建一个用户自定义类型，在sqlserver数据库里面我们可以设置它的默认值为getdate()，当我们更换成oracle或mysql数据库时候就只需要修改的默认值为SYSDATE或CURDATE()即可。</p><p style="text-indent: 2em; "><strong>4.使用PowerDesigner的Reverse反向工程生成模型</strong></p><p style="text-indent: 2em; ">我们以前一些项目的数据库可能没有用PowerDesigner进行建模管理，那怎么办呢？没有关系，PowerDesigner的Reverse反向工程帮您重新生成模型，选择Database工具栏Reverse Engineer Database菜单，Using script files是使用sql脚本文件来反向生成模型(不建议使用，如果sql语句太复杂生成的模型可能将与你期待的有所差异，毕竟PowerDesigner也不能全智能来识别)，使用下面的Using a data source选项是使用现有的数据库来生成，我们可以先在Configure Connections菜单里面新建立一个数据库连接，选择好要连接的数据库驱动类型，如果是Access数据库则指定本地mdb文件的路径，如果是连mysql数据库需要从网上下载一个ODBC For Mysql的驱动，Oracle和Sqlserver有默认的连接驱动程序，输入正确的数据库用户名和密码后列出数据库内所有表结构如下图：</p><div style="text-indent: 2em; "><a href="http://blog.csdn.net/huwei2003/article/details/upload/jonllen/article/a_pd_reverse.gif" target="_blank" style="color: #336699; text-decoration: none; "></a></div><p style="text-indent: 2em; ">可以看到我们从数据库反向生成模型的时候可以设置指定生成那些表、视图、用户自定义类型、触发器、存储过程、表主外键关系、索引等等，一般默认值就好，生成后我们可以看到数据库的结构原模原样的被复制到物理模型里面，E-R图如下：</p><div style="text-indent: 2em; "><a href="http://blog.csdn.net/huwei2003/article/details/upload/jonllen/article/a_pd_er.gif" target="_blank" style="color: #336699; text-decoration: none; "></a></div><p style="text-indent: 2em; ">这样，使用PowerDesigner的Reverse反向工程功能便能"同步"到当前的数据库，先保存一份create1.0.amp创建时候的数据库存档，之后在此基础上进行修改操作，生成出来的sql语句就是针对当前服务器上数据库的更新脚本。</p><p style="text-indent: 2em; ">当我们创建的是PowerDesigner的面向对象模型(Object Oriented Model)的时候同样也能使用Reverse反向工程功能，选择C#语言则指定cs文件的路径，这里一般为数据库映射的实体模型类，然后PowerDesigner便能生成对应的面向对象模型。</p><p style="text-indent: 2em; "><strong>5.使用PowerDesigner的物理模型生成不同的数据库<strong></strong>和转换成OOM模型生成CS实体类代码</strong></p><p style="text-indent: 2em; ">PowerDesigner的物理模型保存的文件是用XML来描述模型结构的格式，所以它不会受任何数据库类型的影响。假如我们刚开始的例子是使用sql2000数据库创建的物理模型，那么现在使用PowerDesigner能马上生成一份Oracle、DB2、Mysql或Access数据库的创建脚本。选择Database工具栏中的Change Current DBMS菜单，将以前的Microsoft SQL Server 2000改为MySQL 5.0，以前sql2000数据库的模型摇身一变成了MySQL，在Preview选项卡里面我们就能看到MySql的drop table if exists的sql语法了 ，这里需要注意的是转换过程中可能会出现一些错误，可能是因为你在模型里使用了某种数据库特有的一些语法或功能，在新选择数据库内不能被支持使用，所以建议从一开始就使用规范的一些SQL语法建立数据库为后面有可能移植转换做考虑，之前还提到了使用Domian自定义类型，这里就能很好的应用，如修改当前时间的自定义类型的默认值为CURDATE()即可修改所有引用字段以支持MySql数据库，或修改autoId自定义类型为其他非int类型为表的主键等等。</p><p style="text-indent: 2em; ">PowerDesigner里面各种模型是能实现无缝隙进行相互转换的。还是以刚开始会员为例子，我现在建好了物理模型需要转换为OOM模型，并把数据库所有表映射生成cs代码实体类。点击Tools工具栏选择Generate Object-Oriented Model菜单，选择生成OOM对象的语言，这里以C# 2.0为例，如果物理模型表里的Name为中文转换生成的OOM类对象字段里面也全是中文的话，请确保在转换时OOM Generation Options里的Detail选项卡内的Convert names to into codes没有被选中。转换成功后我们可以在OOM里面看到会员对象的一些关系和生成cs代码如下图：</p><div style="text-indent: 2em; "><a href="http://blog.csdn.net/huwei2003/article/details/upload/jonllen/article/a_pd_oom.gif" target="_blank" style="color: #336699; text-decoration: none; "></a></div><p style="text-indent: 2em; ">从图片可以看出，会员与会员类型是1对1关系，而会员类型可以对应多个会员。所以生成的cs代码里会员表没有会员类型编号字段，而有一个FA_MemberType类型的属性，代表当前会员的会员类型，而会员类型表里面会多一个System.Collections.Generic.List&lt;FA_Member&gt;属性，代表当前会员类型的所有会员列表集合，PowerDesigner把这些面向对象的思想真的表现得淋漓尽致。但有时候我们需要的实体类是数据库内原分不动的字段映射过来，而不需要FA_MemberType类型的属性只要一个包含memberTypeId字段的完整会员表实体怎么办？我这里介绍一个简单的办法，在物理模型转换为OOM对象模型前先把表之间的所有References主外键关系全部删除掉，可能删除表的主外键关系时会PowerDesigner也会把主从表的主外键列也全部删除去，设置Tools工具栏Model Options里Reference选项里的Auto-migrate columns勾去掉即可。删除后不保存之前的物理模型直接转换成OOM后再Ctrl+Z恢复之前删除的References，这时可以看到OOM模型里面的会员类对象便是数据库会员表所有字段原分不变的映射。另外，OOM模型可以直接生成VS的工程文件带所有cs实体类文件，那么，我们使用PowerDesigner建立好数据库的物理模型后，又可转换成OOM对象模型轻松生成cs代码实体类。</p><p style="text-indent: 2em; ">可能有些朋友的PowerDesigner打开工程Preview里看到的不是我这样的cs代码，而是一些public int MemberId之类的字段，这是因为PowerDesigner将物理模型转换到OOM对象模型的时候表的所有字段是被变成类模型里面的Attributes，而Attributes配置生成的模板默认是不带有get和set访问器的，修改Language工具栏Edit Current Object Language菜单找到Profile &gt; Attribute &gt; Templates &gt; definition修改模板即可。我的C#2.0模板如下：</p><div style="padding-left: 5px; "><div style="border-bottom-color: #cccccc; border-bottom-width: 1px; border-bottom-style: solid; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-bottom: 5px; background-color: #eeeeee; margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; padding-left: 20px; padding-right: 20px; border-top-color: #cccccc; border-top-width: 1px; border-top-style: solid; border-right-color: #cccccc; border-right-width: 1px; border-right-style: solid; padding-top: 5px; "><span style="color: #000000; ">.</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">isGenerated</span><span style="color: #000000; ">%</span><span style="color: #000000; ">)&nbsp;and&nbsp;(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">isValidAttribute</span><span style="color: #000000; ">%</span><span style="color: #000000; ">)<br />[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">comment</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/n]/<br />[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">oidDocTag</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/n]/<br />[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">customAttributes</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/n]/<br />&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; ">Multiple</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">==</span>&nbsp;<span style="color: #0000ff; ">false</span><span style="color: #000000; ">)&nbsp;and&nbsp;(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">isIndexer</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">==</span>&nbsp;<span style="color: #0000ff; ">false</span><span style="color: #000000; ">)<br /><br />private&nbsp;[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">[&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">InitialValue</span><span style="color: #000000; ">%</span><span style="color: #000000; ">];<br /><br />[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">visibility</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;][</span><span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;<br />.convert_name(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">,,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">_</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,FirstUpperChar)<br />{<br />&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;</span><span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">;&nbsp;}<br />&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;value;&nbsp;}<br />}<br /><br />&nbsp;&nbsp;&nbsp;.</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br /><br />private&nbsp;[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span><span style="color: #000000; ">[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">arraySize</span><span style="color: #000000; ">%</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">[&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">InitialValue</span><span style="color: #000000; ">%</span><span style="color: #000000; ">];<br /><br />[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">visibility</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;][</span><span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;<br />.convert_name(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">,,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">_</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,FirstUpperChar)<br />{<br />&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;</span><span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">;&nbsp;}<br />&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;value;&nbsp;}<br />}<br /><br />&nbsp;&nbsp;&nbsp;.endif<br />.endif</span></div></div><p style="text-indent: 2em; ">Java 5.0带get和set访问规则Bean对象生成模板如下：</p><div style="padding-left: 5px; "><div style="border-bottom-color: #cccccc; border-bottom-width: 1px; border-bottom-style: solid; border-left-color: #cccccc; border-left-width: 1px; border-left-style: solid; padding-bottom: 5px; background-color: #eeeeee; margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; padding-left: 20px; padding-right: 20px; border-top-color: #cccccc; border-top-width: 1px; border-top-style: solid; border-right-color: #cccccc; border-right-width: 1px; border-right-style: solid; padding-top: 5px; "><span style="color: #000000; ">.</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">Multiple</span><span style="color: #000000; ">%</span><span style="color: #000000; ">)<br />[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">javaDocComment</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/n]/<br />private&nbsp;[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/[/]&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">[&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">initialValue</span><span style="color: #000000; ">%</span><span style="color: #000000; ">];<br /><br /></span><span style="color: #000000; ">%</span><span style="color: #000000; ">visibility</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/[/]&nbsp;get<br />.convert_name(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">,,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">_</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,FirstUpperChar)<br />()<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #0000ff; ">this</span><span style="color: #000000; ">.</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">;<br />}<br /></span><span style="color: #000000; ">%</span><span style="color: #000000; ">visibility</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/[/]&nbsp;set<br />.convert_name(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">,,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">_</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,FirstUpperChar)<br />&nbsp;(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">)<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">this</span><span style="color: #000000; ">.</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">;<br />}<br />.</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br />[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">javaDocComment</span><span style="color: #000000; ">%</span><span style="color: #000000; ">/n]/<br />private&nbsp;[</span><span style="color: #000000; ">%</span><span style="color: #000000; ">flags</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;]</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">[&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">initialValue</span><span style="color: #000000; ">%</span><span style="color: #000000; ">];<br /><br /></span><span style="color: #000000; ">%</span><span style="color: #000000; ">visibility</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;get<br />.convert_name(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">,,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">_</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,FirstUpperChar)<br />()<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #0000ff; ">this</span><span style="color: #000000; ">.</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">;<br />}<br /></span><span style="color: #000000; ">%</span><span style="color: #000000; ">visibility</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;set<br />.convert_name(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">,,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">_</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,FirstUpperChar)<br />&nbsp;(</span><span style="color: #000000; ">%</span><span style="color: #000000; ">dataType</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">)<br />{<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">this</span><span style="color: #000000; ">.</span><span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span>&nbsp;<span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">%</span><span style="color: #000000; ">fieldCode</span><span style="color: #000000; ">%</span><span style="color: #000000; ">;<br />}<br />.endif</span></div></div><p style="text-indent: 2em; ">PowerDesigner几乎所有模型转换生成都可以使用模板来配置，这样能充分的让用户自定义来实现想要的功能。</p><p style="text-indent: 2em; ">PowerDesigner的OOM功能远远不只这一些，最重要的是使用UML建用例图了，在面向对象里面的继承、多态，面向接口编程，对象之间的依赖、包含等关系也能在这里一一体现，不同的箭头线条各自代表着不同的意思，也能够生成一些cs伪代码，由于本文主要将PDM物理模型，这里就不再赘述。不知那些大师也会不会使用PowerDesigner或Rose来画画图呢？</p><p style="text-indent: 2em; "><strong>6.使用Report导出生成HTML格式的数据库表结构数据字典</strong></p><p style="text-indent: 2em; ">对于一个有着很多个表的庞大的数据库，直接去查看数据库的结构显得很费力，比如我们在编程的时候要从几百个表里面找到表然后再从几十个列里去找到列的注释说明，很麻烦，使用PowerDesigner的Report功能自动生成所有表列的html的树状菜单结构，也可以作为数据库的帮助文档，使得我们找什么东西再也不需要跑到数据库内去看。选择Report工具栏选择Generate Report菜单使用Full Physical Report全部生成即可，生成后html效果图如下：</p><p style="text-indent: 2em; ">图片未能复制过来，非常抱歉！</p></div></div></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/360167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-08 10:10 <a href="http://www.blogjava.net/Steven-bot/articles/360167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主题：struts2 Tags 堆栈分析</title><link>http://www.blogjava.net/Steven-bot/articles/360160.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 08 Oct 2011 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/360160.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/360160.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/360160.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/360160.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/360160.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial, Helvetica, simsun, u5b8bu4f53; line-height: 24px; ">1.&nbsp;property: &lt;s:property value="username"/&gt;<p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br style="line-height: 24px; " /><span>&nbsp;2. property 取值为字符串: &lt;s:property value="'username'"/&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br style="line-height: 24px; " /><span>&nbsp;3. &nbsp;property 设定默认值: &lt;s:property value="admin" default="管理员"/&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br style="line-height: 24px; " /><span>&nbsp;4. property 设定HTML: &lt;s:property value="'&lt;hr/&gt;'" escape="true"/&gt; 输出 &lt;hr/&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&nbsp;5. set 设定adminName值（默认为request 和 ActionContext）: &lt;s:set var="adminName"&nbsp; value="username" /&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>set 从request取值: &lt;s:property value="#request.adminName" /&gt;</span><br style="line-height: 24px; " /><span>set 从ActionContext取值: &lt;s:property value="#adminName" /&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>set 设定范围: &lt;s:set var="adminPassword" value="password" scope="session"/&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>set 从相应范围取值: &lt;s:property value="#session.adminPassword"/&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>说明：set 在以前的版本中有name id,但是在2.1版本开始不推荐使用,用var代替.实际var表示把变量压入栈actioncontext. 官方这样说明var的:</span><span style="line-height: 24px; "><span style="line-height: 24px; ">Name used to reference the value pushed into the Value Stack;</span></span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="line-height: 24px; "><span style="line-height: 24px; ">这样我们可以用#key来访问.</span></span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>6.&nbsp; bean标签</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&nbsp;&lt;s:bean name="com.awf.tags.Dog"&nbsp; var="mydog"&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:param name="name" value="'pp'"&gt;&lt;/s:param&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:property value="name"/&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&lt;/s:bean&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>说明:注意到pp用单引号,因为这时要真正用到String,如果没有加单引号，struts2会默认用OGNL到ValueStack找值.</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>对于为什么可以&lt;s:property value="name"/&gt;(取到pp)这样取值,可以做个小实验在set标签里加入&lt;s:debug/&gt;,这样你可能看到整个栈数 据的出入,此时栈顶当然是mydog对象,这个标签执行完后就可以出栈了，这时action又保持在栈顶了.</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>此时mydog被存入到actioncontext栈中,所以要取值要用到#号了.</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>取值:&lt;s:property value="#mydog.name/&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>7. include标签</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&nbsp;&lt;s:include value="/index.html"&gt;&lt;/s:include&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>这里value的默认处理方式是要内容当做String，不是OGNL,如果这时要用OGNL可以用%,这就是%的实际意义了,其实上面所讲的标签 也可以使用%,OGNL对于那些默认使用OGNL的标签会忽略%号,真搞不懂为什么全部都统一，这样我们就不用记这么多了^^,下面是具体使用方法:</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&lt;s:set var="incPage" value="%{'/index.html'}" /&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&lt;s:include value="%{#incPage}"&gt;&lt;/s:include&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>现在回到include标签,这个标签真的不好用对中文的支持不好，可能有BUG,所以还是用jsp自带的动态包含/静态包含.</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>8. if elseif else标签</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>定义变量 num= &lt;s:set var="num" value="'100'"/&gt;&nbsp;&nbsp; set定义的变量存在ActionContext栈中</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&lt;s:if test="#num&lt; 0"&gt;&nbsp;小于0&nbsp;&lt;/s:if&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&lt;s:elseif test="#num &lt;50"&gt; 小于50 &lt;/s:elseif&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&lt;s:else&gt;大于50&lt;/s:else&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&lt;s:if test="#parameters.aaa == null"&gt;null&lt;/s:if&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>这里说到</span><span style="line-height: 24px; ">#parameters</span><span>不得不提一下，我们在地址栏输入的变量会存在ActionContext栈中,如xx/sdfds.jsp?name=1</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>这样我们可能用OGNL这样取值</span><span style="line-height: 24px; ">#parameters.name</span><span>&nbsp;,注意这里</span><span style="line-height: 24px; ">取出来的是一个集合</span><span>,如果你这样访问xx/sdfds.jsp?name=1&amp;name=2,你可以发现可以取出两个值.因为这样所以在写程序时我样最好精确定位像这样#parameters.name[0],就算你能保证只能一个值,也要这样.</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>9. iterator标签,遍历集合</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&lt;s:iterator value="{1, 2, 3}" &gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&lt;s:property/&gt;&nbsp;</span><br style="line-height: 24px; " /><span>&lt;/s:iterator&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>自定义变量:</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&lt;s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x"&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&lt;s:property value="#x.toUpperCase()"/&gt; |</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&lt;/s:iterator&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&lt;s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status"&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&lt;s:property/&gt; |&nbsp;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;遍历过的元素总数：&lt;s:property value="#status.count"/&gt; |</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;遍历过的元素索引：&lt;s:property value="#status.index"/&gt; |</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;当前是偶数？：&lt;s:property value="#status.even"/&gt; |</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;当前是奇数？：&lt;s:property value="#status.odd"/&gt; |</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;是第一个元素吗？：&lt;s:property value="#status.first"/&gt; |</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;是最后一个元素吗？：&lt;s:property value="#status.last"/&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&lt;br /&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&lt;/s:iterator&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>说明:偶数和其数不是下标，下标0其实是第一个当然是奇数了.</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>遍历map:</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&lt;s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x"&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&lt;s:property value="#x.key"/&gt; | &lt;s:property value="#x.value"/&gt; &lt;br /&gt;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&lt;/s:iterator&gt;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/360160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-08 09:33 <a href="http://www.blogjava.net/Steven-bot/articles/360160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在 Linux 和 Windows 下给 Tomcat 分配大内存设置方法(转)  </title><link>http://www.blogjava.net/Steven-bot/articles/360157.html</link><dc:creator>Steven_bot</dc:creator><author>Steven_bot</author><pubDate>Sat, 08 Oct 2011 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/Steven-bot/articles/360157.html</guid><wfw:comment>http://www.blogjava.net/Steven-bot/comments/360157.html</wfw:comment><comments>http://www.blogjava.net/Steven-bot/articles/360157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Steven-bot/comments/commentRss/360157.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Steven-bot/services/trackbacks/360157.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial, Helvetica, simsun, u5b8bu4f53; line-height: 24px; ">初始空间(即-Xms)是物理内存的1/64，最大空间(-Xmx)是物理内存的1/4。<br style="line-height: 24px; " /></span><span style="font-family: Arial, Helvetica, simsun, u5b8bu4f53; line-height: 24px; ">可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置<p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>实例，以下给出1G内存环境下java jvm 的参数设置参考：</span><br style="line-height: 24px; " /><span>JAVA_OPTS=&#8221;-server -Xms800m -Xmx800m -XX:PermSize=64M</span><br style="line-height: 24px; " /><span>-XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true &#8221;</span><br style="line-height: 24px; " /><span>JAVA_OPTS=&#8221;-server -Xms768m -Xmx768m -XX:PermSize=128m</span><br style="line-height: 24px; " /><span>-XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m&#8221;</span><br style="line-height: 24px; " /><span>CATALINA_OPTS=&#8221;-server -Xms768m -Xmx768m -XX:PermSize=128m</span><br style="line-height: 24px; " /><span>-XX:MaxPermSize=256m</span><br style="line-height: 24px; " /><span>-XX:NewSize=192m -XX:MaxNewSize=384m&#8221;</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>Linux：</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>在/usr/local/apache-tomcat-5.5.23/bin目录下的catalina.sh</span><br style="line-height: 24px; " /><span>添加：JAVA_OPTS=&#8217;-Xms512m -Xmx1024m&#8217;</span><br style="line-height: 24px; " /><span>要加&#8220;m&#8221;说明是MB，否则就是KB了，在启动tomcat时会报内存不足。</span><br style="line-height: 24px; " /><span>-Xms：初始值</span><br style="line-height: 24px; " /><span>-Xmx：最大值</span><br style="line-height: 24px; " /><span>-Xmn：最小值</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>Windows</span><br style="line-height: 24px; " /><span>在catalina.bat最前面加入</span><br style="line-height: 24px; " /><span>set JAVA_OPTS=-Xms128m -Xmx350m</span><br style="line-height: 24px; " /><span>如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,</span><br style="line-height: 24px; " /><span>上面的设置就不生效了,</span><br style="line-height: 24px; " /><span>就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.</span><br style="line-height: 24px; " /><span>上面分配200M内存就OOM了..</span><br style="line-height: 24px; " /><span>windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.</span><br style="line-height: 24px; " /><span>解决办法:</span><br style="line-height: 24px; " /><span>修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation</span><br style="line-height: 24px; " /><span>\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions</span><br style="line-height: 24px; " /><span>原值为</span><br style="line-height: 24px; " /><span>-Dcatalina.home=&#8221;C:\ApacheGroup\Tomcat 5.0&#8243;</span><br style="line-height: 24px; " /><span>-Djava.endorsed.dirs=&#8221;C:\ApacheGroup\Tomcat 5.0\common\endorsed&#8221;</span><br style="line-height: 24px; " /><span>-Xrs</span><br style="line-height: 24px; " /><span>加入 -Xms300m -Xmx350m</span><br style="line-height: 24px; " /><span>重起tomcat服务,设置生效</span><br style="line-height: 24px; " /><span>（Tomcat 5.5 的话，在Apache Software Foundation下有个Procrun 2.0的 Tomcat5\Parameters\Java下</span><br style="line-height: 24px; " /><span>设置JvmMs和JvmMx的值就可以了，要修改10进制的值哦）</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>不过，OS对内存也有限制</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>附：如何获得JVM的最大可用内存</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>在命令行下用 java -XmxXXXXM -version 命令来进行测试，然后逐渐的增大XXXX的值，如果执行正常就表示指定的内存大小可用，否则会打印错误信息。</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>实际发现版本上有细微差别的JDK最大容许内存值都不尽相同，因此在实际的应用中还是要自己试验一下看到底内存能达到什么样的值。</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>通过这个表想说明的是，如果你的机器的内存太多的话，只能通过多运行几个实例来提供机器的利用率了，例如跑Tomcat，你可以多装几个Tomcat并做集群，依此类推。</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>这个人家测试的结果，我这里引用一下</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>公司 JVM版本 最大内存(兆)client 最大内存(兆)server</span><br style="line-height: 24px; " /><span>SUN 1.5.x 1492 1520</span><br style="line-height: 24px; " /><span>SUN 1.5.5(Linux) 2634 2660</span><br style="line-height: 24px; " /><span>SUN 1.4.2 1564 1564</span><br style="line-height: 24px; " /><span>SUN 1.4.2(Linux) 1900 1260</span><br style="line-height: 24px; " /><span>IBM 1.4.2(Linux) 2047 N/A</span><br style="line-height: 24px; " /><span>BEA JRockit 1.5 (U3) 1909 1902</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>所以跟OS的系统版本，jdk版本有很大的关系。要是希望充分利用内存，就考虑使用集群。</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>********************************************************************************************88</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>一、在tomcat的catalina.bat中修改，加入-Dcom.sun.management.jmxremote参数</span><br style="line-height: 24px; " /><span>set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>二、需要使用jdk5.0以上，打开bin目录下的jconsole.exe，即可连接跟踪tomcat的内存使用情况&nbsp;</span><br style="line-height: 24px; " /></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>tomcat线程数配置：</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>conf/server.xml:中修改</span></p><p style="line-height: 24px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span>&nbsp;&lt;Connector port="80" protocol="HTTP/1.1"&nbsp;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; maxHttpHeaderSize="8192"</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="1200" minSpareThreads="100" maxSpareThreads="300"</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="1000"&nbsp;&nbsp;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="15000" disableUploadTimeout="true" compressableMimeType="text/html,text/plain,text/xml,text/css,text/javascript"&nbsp;</span><br style="line-height: 24px; " /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compression="on" URIEncoding="GBK"/&gt;</span></p></span></div><img src ="http://www.blogjava.net/Steven-bot/aggbug/360157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Steven-bot/" target="_blank">Steven_bot</a> 2011-10-08 09:25 <a href="http://www.blogjava.net/Steven-bot/articles/360157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>