﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-潜心学习 技术强身</title><link>http://www.blogjava.net/foolpig83/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:01:05 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:01:05 GMT</pubDate><ttl>60</ttl><item><title>明明白白Unsupported major.minor version 49.0的错误(转)</title><link>http://www.blogjava.net/foolpig83/archive/2009/08/05/289964.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Wed, 05 Aug 2009 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/08/05/289964.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/289964.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/08/05/289964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/289964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/289964.html</trackback:ping><description><![CDATA[转自：http://www.blogjava.net/Unmi/archive/2007/12/04/165035.html<br />
<font color="#0000ff"><strong><font size="4">一：要解决的问题</font> </strong><br />
</font><br />
我们在尝鲜 JDK1.5 的时候，相信不少人遇到过 Unsupported major.minor version 49.0 错误，当时定会茫然不知所措。因为刚开始那会儿，网上与此相关的中文资料还不多，现在好了，网上一找就知道是如何解决，大多会告诉你要使用 JDK 1.4 重新编译。那么至于为什么，那个 major.minor 究竟为何物呢？这就是本篇来讲的内容，以使未错而先知。<br />
<br />
我觉得我是比较幸运的，因为在遇到那个错误之前已研读过《深入 Java 虚拟机》第二版，英文原书名为《Inside the Java Virtual Machine》( Second Edition)，看时已知晓 major.minor 藏匿于何处，但没有切身体会，待到与 Unsupported major.minor version 49.0 真正会面试，正好是给我验证了一个事实。<br />
<br />
首先我们要对 Unsupported major.minor version 49.0 建立的直接感觉是：JDK1.5 编译出来的类不能在 JVM 1.4 下运行，必须编译成 JVM 1.4 下能运行的类。(当然，也许你用的还是 JVM 1.3 或&nbsp;JVM 1.2，那么就要编译成目标 JVM 能认可的类)。这也解决问题的方向。<br />
<br />
<strong><font color="#0000ff" size="4">二：major.minor 栖身于何处</font></strong><br />
<br />
何谓 major.minor，且又居身于何处呢？先感性认识并找到 major.minor 来。<br />
<br />
写一个 Java Hello World! 代码，然后用 JDK 1.5 的编译器编译成，HelloWorld.java<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.unmi;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HelloWorld<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img id="Codehighlighter1_43_130_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_130_Open_Text.style.display='none'; Codehighlighter1_43_130_Closed_Image.style.display='inline'; Codehighlighter1_43_130_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_43_130_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_43_130_Closed_Text.style.display='none'; Codehighlighter1_43_130_Open_Image.style.display='inline'; Codehighlighter1_43_130_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_43_130_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_43_130_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_86_128_Open_Image" onclick="this.style.display='none'; Codehighlighter1_86_128_Open_Text.style.display='none'; Codehighlighter1_86_128_Closed_Image.style.display='inline'; Codehighlighter1_86_128_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_86_128_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_86_128_Closed_Text.style.display='none'; Codehighlighter1_86_128_Open_Image.style.display='inline'; Codehighlighter1_86_128_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_86_128_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_86_128_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Hello,&nbsp;World!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
用 JDK 1.5 的 javac -d . &nbsp;HelloWorld.java&nbsp;编译出来的字节码 HelloWorld.class 用 UltraEdit 打开来的内容如图所示：<br />
<br />
<div align="center"><img border="0" alt="HelloWorldClassUnmi.jpg" src="http://www.blogjava.net/images/blogjava_net/unmi/ScreenShots/HelloWorldClassUnmi.jpg" /></div>
<br />
<br />
从上图中我们看出来了什么是 major.minor version 了，它相当于一个软件的主次版本号，只是在这里是标识的一个 Java Class 的主版本号和次版本号，同时我们看到 minor_version 为 0x0000，major_version 为 0x0031，转换为十制数分别为0 和 49，即 major.minor 就是 49.0 了。<br />
<br />
<strong><font size="4"><font color="#0000ff">三：何谓 major.minor 以及何用</font><br />
</font></strong><br />
Class 文件的第 5-8 字节为 minor_version 和 major_version。Java class 文件格式可能会加入新特性。class 文件格式一旦发生变化，版本号也会随之变化。对于 JVM 来说，版本号确定了特定的 class 文件格式，通常只有给定主版本号和一系列次版本号后，JVM 才能够读取 class 文件。如果 class 文件的版本号超出了 JVM 所能处理的有效范围，JVM 将不会处理该 class 文件。<br />
<br />
在 Sun 的 JDK 1.0.2 发布版中，JVM 实现支持从 45.0 到 45.3 的 class 文件格式。在所有 JDK 1.1 发布版中的 JVM 都能够支持版本从 45.0 到 45.65535 的 class 文件格式。在 Sun 的 1.2 版本的 SDK 中，JVM 能够支持从版本 45.0 到46.0 的 class 文件格式。<br />
<br />
1.0 或 1.2 版本的编译器能够产生版本号为 45.3 的 class 文件。在 Sun 的 1.2 版本 SDK 中，Javac 编译器默认产生版本号为 45.3&nbsp; 的 class 文件。但如果在 javac 命令行中指定了 -target 1.2 标志，1.2 版本的编译器将产生版本号为 46.0 的 class 文件。1.0 或 1.1 版本的 JVM 上不能运行使用-target 1.2 标志所产生的 class 文件。<br />
<br />
JVM 实现的 第二版中修改了对 class 文件主版本号和次版本号的解释。对于第二版而言，class 文件的主版本号与 Java 平台主发布版的版本号保持一致(例如：在 Java 2 平台发布版上，主版本号从 45 升至 46)，次版本号与特定主平台发布版的各个发布版相关。因此，尽管不同的 class 文件格式可以由不同的版本号表示，但版本号不一样并不代表 class 文件格式不同。版本号不同的原因可能只是因为 class 文件由不同发布版本的 java 平台产生，可能 class 文件的格式并没有改变。<br />
<br />
上面三段节选自《深入 Java 虚拟机》，啰嗦一堆，JDK 1.2 开启了 Java 2 的时代，但那个年代仍然离我们很远，我们当中很多少直接跳在 JDK 1.4 上的，我也差不多，只是项目要求不得不在一段时间里委屈在 JDK 1.3 上。不过大致我们可以得到的信息就是每个版本的 JDK 编译器编译出的 class 文件中都带有一个版本号，不同的 JVM 能接受一个范围 class 版本号，超出范围则要出错。不过一般都是能向后兼容的，知道 Sun 在做 Solaris 的一句口号吗？保持对先前版本的 100% 二进制兼容性，这也是对客户的投资保护。<br />
<br />
<font color="#0000ff" size="4"><strong>四：其他确定 class&nbsp;的 major.minor version 办法<br />
</strong></font><br />
1）Eclipse&nbsp;中查看<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Eclipse 3.3 加入的新特征，当某个类没有关联到源代码，打开它会显示比较详细的类信息，当然还未到源码级别了，看下图是打开 2.0 spring.jar 中 ClasspathXmlApplicationContext.class 显示的信息<br />
<br />
<div align="center"><img border="0" alt="eclipseclass1.jpg" src="http://www.blogjava.net/images/blogjava_net/unmi/ScreenShots/eclipseclass1.jpg" width="744" height="252" /></div>
<br />
2）命令 javap -verbose<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于编译出的 class 文件用 javap -verbose 能显示出类的 major.minor&nbsp;版本，见下图：<br />
<br />
<div align="center"><img border="0" alt="JavapVerboseUnmi.jpg" src="http://www.blogjava.net/images/blogjava_net/unmi/ScreenShots/JavapVerboseUnmi.jpg" /></div>
<br />
3)&nbsp;&nbsp;MANIFEST 文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把&nbsp;class 打成的&nbsp;JAR 包中都会有文件 META-INF\MANIFEST，这个文件一般会有编译器的信息，下面列几个包的 META-INF\MANIFEST 文件内容大家看看<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#183;Velocity-1.5.jar&nbsp;的 META-INFO\MANIFEST 部份内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Manifest-Version: 1.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ant-Version: Apache Ant 1.7.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Created-By: Apache Ant<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Package: org.apache.velocity<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><u>Build-Jdk: 1.4.2_08<br />
</u></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extension-Name: velocity<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们看到是用 ant 打包，构建用的JDK是 1.4.2_08，用 1.4 编译的类在 1.4 JVM 中当然能运行。如果那人用 1.5 的 JDK 来编译，然后用 JDK 1.4+ANT 来打包就太无聊了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#183;2.0 spring.jar 的 META-INFO\MANIFEST 部份内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Manifest-Version: 1.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ant-Version: Apache Ant 1.6.5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><u>Created-By: 1.5.0_08-b03 (Sun Microsystems Inc.)</u></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Implementation-Title: Spring Framework<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这下要注意啦，它是用的 JDK 1.5 来编译的，那么它是否带了 -target 1.4 或 -target 1.3 来编译的呢？确实是的，可以查看类的二进制文件，这是最保险的。所在 spring-2.0.jar 也可以在 1.4 JVM 中加载执行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#183;自已一个项目中用 ant 打的 jar 包的 META-INFO\MANIFEST<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Manifest-Version: 1.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ant-Version: Apache Ant 1.7.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#800080"><u>Created-By: 1.4.2-b28 (Sun Microsystems Inc.)<br />
</u></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用的是 JDK 1.4 构建打包的。<br />
<br />
第一第二种办法能明确知道 major.minor version，而第三种方法应该也没问题，但是碰到变态构建就难说了，比如谁把那个 META-INFO\MANIFEST 打包后换了也未可知。直接查看类的二进制文件的方法可以万分保证，准确无误，就是工具篡改我也认了。<br />
<br />
<strong><font color="#0000ff" size="4">五：编译器比较及症节之所在</font></strong><br />
<br />
现在不妨从 JDK 1.1 到 JDK 1.7 编译器编译出的 class 的默认 minor.major version 吧。（又走到 Sun 的网站上翻腾出我从来都没用过的古董来）<br />
<br />
<table style="border-collapse: collapse" border="1" bordercolor="black" width="700" align="center">
    <tbody>
        <tr>
            <td width="20%"><strong>JDK 编译器版本</strong></td>
            <td width="30%"><strong>target 参数</strong></td>
            <td width="25%"><strong>十六进制 minor.major</strong></td>
            <td width="25%"><strong>十进制 minor.major</strong></td>
        </tr>
        <tr>
            <td>jdk1.1.8</td>
            <td>不能带 target 参数</td>
            <td>00 03&nbsp; &nbsp;00 2D</td>
            <td>45.3</td>
        </tr>
        <tr>
            <td>jdk1.2.2</td>
            <td>不带(默认为 -target 1.1)</td>
            <td>00 03&nbsp; &nbsp;00 2D</td>
            <td>45.3</td>
        </tr>
        <tr>
            <td>jdk1.2.2</td>
            <td>-target 1.2</td>
            <td>00 00&nbsp;&nbsp; 00 2E</td>
            <td>46.0</td>
        </tr>
        <tr>
            <td>jdk1.3.1_19</td>
            <td>不带(默认为 -target 1.1)</td>
            <td>00 03&nbsp; &nbsp;00 2D</td>
            <td>45.3</td>
        </tr>
        <tr>
            <td>jdk1.3.1_19</td>
            <td>-target 1.3</td>
            <td>00 00&nbsp;&nbsp; 00 2F</td>
            <td>47.0</td>
        </tr>
        <tr>
            <td>j2sdk1.4.2_10</td>
            <td>不带(默认为 -target 1.2)</td>
            <td>00 00&nbsp;&nbsp; 00 2E</td>
            <td>46.0</td>
        </tr>
        <tr>
            <td>j2sdk1.4.2_10</td>
            <td>-target 1.4</td>
            <td>00 00&nbsp;&nbsp; 00 30</td>
            <td>48.0</td>
        </tr>
        <tr>
            <td>jdk1.5.0_11</td>
            <td>不带(默认为 -target 1.5)</td>
            <td>00 00&nbsp;&nbsp; 00 31</td>
            <td>49.0</td>
        </tr>
        <tr>
            <td>jdk1.5.0_11</td>
            <td>-target 1.4 -source 1.4</td>
            <td>00 00&nbsp;&nbsp; 00 30</td>
            <td>48.0</td>
        </tr>
        <tr>
            <td>jdk1.6.0_01</td>
            <td>不带(默认为 -target 1.6)</td>
            <td>00 00&nbsp;&nbsp; 00 32</td>
            <td>50.0</td>
        </tr>
        <tr>
            <td>jdk1.6.0_01</td>
            <td>-target 1.5</td>
            <td>00 00&nbsp;&nbsp; 00 31</td>
            <td>49.0</td>
        </tr>
        <tr>
            <td>jdk1.6.0_01</td>
            <td>-target 1.4 -source 1.4</td>
            <td>00 00&nbsp;&nbsp; 00 30</td>
            <td>48.0</td>
        </tr>
        <tr>
            <td>jdk1.7.0</td>
            <td>不带(默认为 -target 1.6)</td>
            <td>00 00&nbsp;&nbsp; 00 32</td>
            <td>50.0</td>
        </tr>
        <tr>
            <td>jdk1.7.0</td>
            <td>-target 1.7</td>
            <td>00 00&nbsp;&nbsp; 00 33</td>
            <td>51.0</td>
        </tr>
        <tr>
            <td>jdk1.7.0</td>
            <td>-target 1.4 -source 1.4</td>
            <td>00 00&nbsp;&nbsp; 00 30</td>
            <td>48.0</td>
        </tr>
        <tr>
            <td>Apache Harmony 5.0M3</td>
            <td>不带(默认为 -target 1.2)</td>
            <td>00 00&nbsp;&nbsp; 00 2E</td>
            <td>46.0</td>
        </tr>
        <tr>
            <td>Apache Harmony 5.0M3</td>
            <td>-target 1.4</td>
            <td>00 00&nbsp;&nbsp; 00 30</td>
            <td>48.0</td>
        </tr>
    </tbody>
</table>
<br />
上面比较是 Windows 平台下的 JDK 编译器的情况，我们可以此作些总结：<br />
<br />
1) -target 1.1 时 有次版本号，target 为 1.2 及以后都只用主版本号了，次版本号为 0<br />
2) 从 1.1 到 1.4 语言差异比较小，所以 1.2 到 1.4 默认的 target 都不是自身相对应版本<br />
3) 1.5 语法变动很大，所以直接默认 target 就是 1.5。也因为如此用 1.5 的 JDK 要生成目标为 1.4 的代码，光有 -target 1.4 不够，必须同时带上 -source 1.4，指定源码的兼容性，1.6/1.7 JDk 生成目标为 1.4 的代码也如此。<br />
4) 1.6 编译器显得较为激进，默认参数就为 -target 1.6。因为&nbsp;1.6 和 1.5 的语法无差异，所以用 -target 1.5 时无需跟着 -source 1.5。<br />
5) 注意 1.7 编译的默认 target 为 1.6<br />
6) 其他第三方的 JDK 生成的 Class 文件格式版本号同对应 Sun 版本 JDK<br />
7) 最后一点最重要的，<font color="#800080">某个版本的 JVM 能接受 class 文件的最大主版本号不能超过对应 JDK 带相应 target 参数编译出来的 class 文件的版本号</font>。<br />
<br />
上面那句话有点长，一口气读过去不是很好理解，举个例子：1.4 的 JVM 能接受最大的 class 文件的主版本号不能超过用 1.4 JDK 带参数 -target 1.4 时编译出的 class 文件的主版本号，也就是 48。<br />
<br />
因为 1.5 JDK 编译时默认 target 为 1.5，出来的字节码 major.minor version 是 49.0，所以 1.4 的 JVM 是无法接受的，只有抛出错误。<br />
<br />
那么又<font color="#800080">为什么从 1.1 到 1.2、从 1.2 到 1.3 或者从 1.3 到 1.4 的 JDK 升级不会发生 Unsupported major.minor version 的错误呢，那是因为 1.2/1.3/1.4 都保持了很好的二进制兼容性</font>，看看 1.2/1.3/1.4 的默认 target 分别为 1.1/1.1/1.2 就知道了，也就是默认情况下1.4 JDK 编译出的 class 文件在 JVM 1.2 下都能加载执行，何况于 JVM 1.3 呢？（当然要去除使用了新版本扩充的 API 的因素）<br />
<br />
<strong><font color="#0000ff" size="4">六：找到问题解决的方法</font><br />
</strong><br />
那么现在如果碰到这种问题该知道如何解决了吧，还会像我所见到有些兄弟那样，去找个 1.4 的 JDK 下载安装，然后用其重新编译所有的代码吗？其实大可不必如此费神，我们一定还记得 javac 还有个 -target 参数，对啦，可以继续使用 1.5 JDK，编译时带上参数 -target 1.4 -source 1.4 就 OK 啦，不过你一定要对哪些 API 是 1.5 JDK 加入进来的了如指掌，不能你的 class 文件拿到 JVM 1.4 下就会 method not found。目标 JVM 是 1.3 的话，编译选项就用 -target 1.3 -source 1.3 了。<br />
<br />
相应的如果使用 ant ，它的 javac 任务也可对应的选择 target 和 source<br />
<br />
&lt;javac target="1.4" source="1.4" ............................/&gt;<br />
<br />
如果是在开发中，可以肯定的是现在真正算得上是 JAVA IDE 对于工程也都有编译选项设置目标代码的。例如 Eclipse 的项目属性中的 Java Compiler 设置，如图<br />
<br />
<div align="center"><img border="0" alt="EclipseCompiler.JPG" src="http://www.blogjava.net/images/blogjava_net/unmi/ScreenShots/EclipseCompiler.JPG" width="708" height="548" /></div>
<br />
<br />
自已设定编译选项，你会看到选择不同的 compiler compliance level 是，Generated class files compatibility 和 Source compatibility 也在变，你也可以手动调整那两项，手动设置后你就不用很在乎用的什么版本的编译器了，只要求他生成我们希望的字节码就行了，再引申一下就是即使源代码是用 VB 写的，只要能编译成 JVM 能执行的字节码都不打紧。在其他的 IDE 也能找到相应的设置对话框的。<br />
<br />
其他时候，你一定要知道当前的 JVM 是什么版本，能接受的字节码主版本号是多少（可对照前面那个表）。获息当前 JVM 版本有两种途径：<br />
<br />
第一：如果你是直接用 java 命令在控制台执行程序，可以用 java -version 查看当前的 JVM 版本，然后确定能接受的 class 文件版本<br />
<br />
第二：如果是在容器中执行，而不能明确知道会使用哪个 JVM，那么可以在容器中执行的程序中加入代码　System.getProperty("java.runtime.version"); 或 System.getProperty("java.class.version")，获得 JVM 版本和能接受的 class 的版本号。<br />
<br />
最后一绝招，如果你不想针对低版本的 JVM 用 target 参数重新编译所有代码；如果你仍然想继续在代码中用新的 API 的话；更有甚者，你还用了 JDK 1.5 的新特性，譬如泛型、自动拆装箱、枚举等的话，那你用 -target 1.4 -source 1.4 就没法编译通过，不得不重新整理代码。那么告诉你最后一招，不需要再从源代码着手，直接转换你所正常编译出的字节码，继续享用那些新的特性，新的 API，那就是：请参考之前的一篇日志：<a href="http://www.blogjava.net/Unmi/articles/124166.html">Retrotranslator让你用JDK1.5的特性写出的代码能在JVM1.4中运行</a>，我就是这么用的，做好测试就不会有问题的。<br />
<br />
<font size="4"><strong><font color="#0000ff">七：再议一个实际发生的相关问题</font></strong><br />
</font><br />
这是一个因为拷贝 Tomcat 而产生的 Unsupported major.minor version 49.0 错误。情景是：我本地安装的是 JDK 1.5，然后在网上找了一个 EXE 的 Tomcat 安装文件安装了并且可用。后来同事要一个 Tomcat，不想下载或安装，于是根据我以往的经验是把我的 Tomcat 整个目录拷给他应该就行了，结果是拿到他那里浏览 jsp 文件都出现 Unsupported major.minor version 49.0 错误，可以确定的是他安装的是 1.4 的 JDK，但我还是有些纳闷，先前对这个问题还颇有信心的我傻眼了。惯性思维是编译好的 class 文件拿到低版本的 JVM 会出现如是异常，可现并没有用已 JDK 1.5 编译好的类要执行啊。<br />
<br />
后来仔细看异常信息，终于发现了 %TOMCAT_HOME%\common\lib\tools.jar 这一眉目，因为 jsp 文件需要依赖它来编译，打来这个 tools.jar 中的一个 class 文件来看看，49.0，很快我就明白原来这个文件是在我的机器上安装 Tomcat 时由 Tomcat 安装程序从 %JDK1.5%\lib 目录拷到 Tomcat 的 lib 目录去的，造成在同事机器上编译 JSP 时是 1.4 的&nbsp;JVM 配搭着 49.0 的 tools.jar，那能不出错，于是找来 1.4&nbsp; JDK 的 tools.jar 替换了 Tomcat 的就 OK 啦。<br />
<br />
<font size="4"><strong><font color="#0000ff">八：小结</font></strong><br />
</font><br />
其实理解 major.minor 就像是我们可以这么想像，同样是微软件的程序，32 位的应用程序不能拿到 16 位系统中执行那样。<br />
<br />
如果我们发布前了解到目标 JVM 版本，知道怎么从 java class 文件中看出 major.minor 版本来，就不用等到服务器报出异常才着手去解决，也就能预知到可能发生的问题。<br />
<br />
其他时候遇到这个问题应具体解决，总之问题的根由是低版本的&nbsp; JVM 无法加载高版本的 class 文件造成的，找到高版本的 class 文件处理一下就行了。<br />
<br />
<img src ="http://www.blogjava.net/foolpig83/aggbug/289964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-08-05 16:27 <a href="http://www.blogjava.net/foolpig83/archive/2009/08/05/289964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java基础术语解释</title><link>http://www.blogjava.net/foolpig83/archive/2009/08/01/289357.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Sat, 01 Aug 2009 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/08/01/289357.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/289357.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/08/01/289357.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/289357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/289357.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: VO(value object) 值对象&nbsp;&nbsp;&nbsp; 通常用于业务层之间的数据传递，和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。&nbsp;&nbsp;&nbsp; 对于数据库而言，每一个VO对象可以表示出一张表中的一行记录，此类的名称要与表的名称一致。B...&nbsp;&nbsp;<a href='http://www.blogjava.net/foolpig83/archive/2009/08/01/289357.html'>阅读全文</a><img src ="http://www.blogjava.net/foolpig83/aggbug/289357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-08-01 11:12 <a href="http://www.blogjava.net/foolpig83/archive/2009/08/01/289357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java开发者需坚守的十大基本准则（转）</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/31/289278.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Fri, 31 Jul 2009 07:38:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/31/289278.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/289278.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/31/289278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/289278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/289278.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有许多标准和实践准则可适用于Java开发者，但此处要说的，是每个Java开发者需坚守的基本原则。
<p>　　一、为代码加注释。虽然每个人都知道这点，但有时却不自觉忘了履行，今天你&#8220;忘了&#8221;加注释了吗？虽然注释对程序的功能没什么&#8220;贡献&#8221;，但过一段时间，比如说两星期之后或者更长，回过头来看看自己的代码，说不定已经记不住它是干什么的了。如果这些代码是你个人的，那还算是走运了，不幸的是，当然了，大多数时候都是别人的不幸，很多时候大家都是在为公司写代码，写代码的人也许早已经离开了公司，但别忘了一句古话，有来有往嘛，为他人，也为我们自己，请为你的代码加上注释。</p>
<p>　　二、不要让事情复杂化。程序员有时候总是对简单问题想出复杂的解决方案，比如说，在只有五个用户的程序中引入EJB、对程序实现了并不需要的框架（framework），之类的还有属性文件、面向对象解决方案、多线程等等。为什么要这样做呢？也许我们并不知道是否这样会更好，但这样做也许可以学到一些新东西，或者让自己更感兴趣一些。如果是不知道为什么这样做，建议多请教经验丰富的程序员，如果是为了个人的目的，麻烦让自己更专业一点。</p>
<p>　　三、始终牢记——&#8220;少即是好（Less is more）并不总是对的&#8221;。代码效率虽然很重要，但在许多解决方案中，编写更少的代码并不能改善这些代码的效率，请看下面这个简单的例子：</p>
<p>if(newStatusCode.equals("SD") &amp;&amp; (sellOffDate == null ||<br />
todayDate.compareTo(sellOffDate)＜0 || (lastUsedDate != null &amp;&amp;<br />
todayDate.compareTo(lastUsedDate)＞0)) ||<br />
(newStatusCode.equals("OBS") &amp;&amp; (OBSDate == null ||<br />
todayDate.compareTo(OBSDate)＜0))){<br />
newStatusCode = "NYP";&nbsp;<br />
}</p>
<p>　　能看明白if条件语句是干什么的吗？能想出来是谁写的这段代码吗？如果把它分成两段独立的if语句，是不是更容易理解呢，下面是修改后的代码：</p>
<p>if(newStatusCode.equals("SD") &amp;&amp; (sellOffDate == null ||<br />
todayDate.compareTo(sellOffDate)＜0 || (lastUsedDate != null &amp;&amp;<br />
todayDate.compareTo(lastUsedDate)＞0))){<br />
newStatusCode = "NYP";&nbsp;<br />
}else<br />
if(newStatusCode.equals("OBS") &amp;&amp; (OBSDate == null ||<br />
todayDate.compareTo(OBSDate)&lt;0))<br />
{<br />
newStatusCode = "NYP";&nbsp;<br />
}</p>
<p>　　是不是读起来容易多了呢，在此只是多加了一个if和两个花括号，但代码的可读性与可理解性就一下子提高了一大截。</p>
<p>　　四、请不要硬编码。开发者经常有意&#8220;忘记&#8221;或忽略掉这点，因为有些时候开发日程逼得实在太紧。其实，多写一行定义静态变量的代码能花多少时间呢？</p>
<p>public class A {<br />
public static final String S_CONSTANT_ABC = "ABC";&nbsp;<br />
public boolean methodA(String sParam1){<br />
if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){<br />
return true;&nbsp;<br />
}<br />
return false;&nbsp;<br />
}<br />
}</p>
&nbsp;
<p>　　现在，每次需要将&#8220;ABC&#8221;与其他变量进行比较时，不必记住实际代码，直接引用A.S_CONSTANT_ABC就行了，而且在今后需要进行修改时，也可在一处修改，不会翻遍整个源代码逐个修改了。</p>
<p>　　五、不要&#8220;创造&#8221;自己的框架（framework）。确切来说，有数以千计的各种框架存在，而且大多数是开源的，这些框架都是优秀的解决方案，可用于日常程序开发中，我们只需使用这些框架的最新版本就行了，至少表面上要跟上形势吧。被大家广为接受的最为明显的一个例子就是Struts了，这个开源web框架非常适合用在基于web的应用程序中。是不是想开发出自己的Struts呢，还是省点力气吧，回头看看第二条——不要让事情复杂化。另外，如果正在开发的程序只有3个窗口，就不要使用Struts了，对这种程序来说，不需要那么多的&#8220;控制&#8221;。</p>
<p>　　六、不要使用println及字符串连接。通常为了调试方便，开发者喜欢在可能的所有地方都加上System.out.println，也许还会提醒自己回过头来再来删除，但有些时候，经常会忘了删除或者不愿意删除它们。既然使用System.out.println是为了测试，那么测试完之后，为什么还要留着它们呢，因为在删除时，很可能会删除掉真正有用的代码，所以不能低估System.out.println危害啊，请看下面的代码：</p>
<p>public class BadCode {<br />
public static void calculationWithPrint(){<br />
double someValue = 0D;&nbsp;<br />
for (int i = 0; i ＜10000; i++) {<br />
System.out.println(someValue = someValue + i);&nbsp;<br />
}<br />
}<br />
public static void calculationWithOutPrint(){<br />
double someValue = 0D;&nbsp;<br />
for (int i = 0; i ＜ 10000; i++) {<br />
someValue = someValue + i;&nbsp;<br />
}<br />
}<br />
public static void main(String [] n) {<br />
BadCode.calculationWithPrint();&nbsp;<br />
BadCode.calculationWithOutPrint();&nbsp;<br />
}<br />
}</p>
<p>　　从测试中可以发现，方法calculationWithOutPrint()执行用了0.001204秒，作为对比，方法calculationWithPrint()执行可是用了10.52秒。</p>
<p>　　要避免浪费CPU时间，最好的方法是引入像如下的包装方法：</p>
<p>public class BadCode {<br />
public static final int DEBUG_MODE = 1;&nbsp;<br />
public static final int PRODUCTION_MODE = 2;&nbsp;<br />
public static void calculationWithPrint(int logMode){<br />
double someValue = 0D;&nbsp;<br />
for (int i = 0; i ＜ 10000; i++) {<br />
someValue = someValue + i;&nbsp;<br />
myPrintMethod(logMode, someValue);&nbsp;<br />
}<br />
}<br />
public static void myPrintMethod(int logMode, double value) {<br />
if (logMode ＞ BadCode.DEBUG_MODE) { return; }<br />
System.out.println(value);&nbsp;<br />
}<br />
public static void main(String [] n) {<br />
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);&nbsp;<br />
}<br />
}</p>
&nbsp;
<p>　　另外，字符串连接也是浪费CPU时间的一个大头，请看下面的示例代码：</p>
<p>public static void concatenateStrings(String startingString) {<br />
for (int i = 0; i ＜ 20; i++) {<br />
startingString = startingString + startingString;&nbsp;<br />
}<br />
}<br />
public static void concatenateStringsUsingStringBuffer(String startingString) {<br />
StringBuffer sb = new StringBuffer();&nbsp;<br />
sb.append(startingString);&nbsp;<br />
for (int i = 0; i ＜ 20; i++) {<br />
sb.append(sb.toString());&nbsp;<br />
}<br />
}</p>
<p>　　在测试中可发现，使用StringBuffer的方法只用了0.01秒执行完毕，而使用连接的方法则用了0.08秒，选择显而易见了。</p>
<p>　　七、多关注GUI（用户界面）。再三强调，GUI对商业客户来说，与程序的功能及效率同等重要，GUI是一个成功程序的最基本部分，而很多IT经理往往都没注意到GUI的重要性。在现实生活中，许多公司可能为了节省开支，没有雇用那些有着设计&#8220;用户友好&#8221;界面丰富经验的网页设计者，此时Java开发者只能依赖他们自身的HTML基本功及在此领域有限的知识，结果，很多开发出来的程序都是&#8220;计算机友好&#8221;甚于&#8220;用户友好&#8221;。很少有开发者同时精通软件开发及GUI设计，如果你在公司&#8220;不幸&#8221;被分配负责程序界面，就应该遵守下面三条原则：</p>
<p>　　1、 不要再发明一次轮子，即不做无用功。现有的程序可能会有类似的界面需求。<br />
　　2、 先创建一个原型。这是非常重要一步，用户一般想看到他们将使用的东西，而且可以先利用这个原型征求用户的意见，再慢慢修改成用户想要的样子。<br />
　　3、 学会换位思考。换句话来说，就是从用户的角度来审查程序的需求。举例来讲，一个汇总的窗口可以跨页或者不跨页，作为一个软件开发者，可能会倾向于不跨页，因为这样简单一些。但是，从用户的角度来看，可能不希望看到上百行数据都挤在同一页上。</p>
<p>　　八、文档需求不放松。每个商业需求都必须记录在案，这可能听上去像童话，似乎在现实生活中很难实现。而我们要做的是，不管开发时间多紧迫，不管最终期限多临近，对每个商业需求都必须记录在案。</p>
<p>　　 九、单元测试、单元测试、单元测试。关于什么是单元测试的最好方法，在此不便细说，只是强调，单元测试一定要完成，这也是编程中最基本的原则。当然了，如果有人帮你做单元测试自然是最好，如果没有，就自己来做吧，当创建一个单元测试计划时，请遵守以下三条最基本的原则：</p>
<p>　　1、 先于编写类代码之前编写单元测试。<br />
　　2、 记录单元测试中的代码注释。<br />
　　3、 测试所有执行关键功能的公有方法，这里不是指set和get方法，除非它们是以自己独特方式执行set和get方法。</p>
<p>　　十、质量，而不是数量。有些时候因为产品问题、期限紧迫、或一些预料之外的事情，导致常常不能按时下班，但一般而言，公司不会因为雇员经常加班而对之表扬和奖励，公司只看重高质量的工作。如果遵守了前九条原则，你会发现自己写出的代码bug少且可维护性高，无形中质量提高了一大步。</p>
<img src ="http://www.blogjava.net/foolpig83/aggbug/289278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-31 15:38 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/31/289278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring + Tomcat5/6 + ConnectionPool的配置</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/30/288986.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Wed, 29 Jul 2009 17:21:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/30/288986.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/288986.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/30/288986.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/288986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/288986.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; <strong>Tomcat5 及 Tomcat6 下CP配置。</strong><br />
&nbsp;&nbsp;&nbsp; 主要是根据MLDN的一个实例进行配置的。实例中用的是Tomcat5.5，所以他的CP配置如下：<br />
<strong>&nbsp;&nbsp;&nbsp; 第一：</strong>将jdbc驱动的jar包，如：MySQL、Oracle的jdbc驱动，拷贝到tomcat中lib下。<br />
&nbsp;&nbsp;&nbsp; 注意：必须是tomcat中lib下，如：D:\Tomcat 6.0\lib，但不能是项目中的WEB-INF/lib下，因为这时tomcat解析不到此类目录。<br />
<strong>&nbsp;&nbsp;&nbsp; 第二：</strong>在Tomcat的安装目录下conf下找到server.xml，在&lt;host&gt;&lt;/host&gt;之间加上如下代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Context&nbsp;</span><span style="color: #ff0000">path</span><span style="color: #0000ff">="/zhinangtuan"</span><span style="color: #ff0000">&nbsp;docBase</span><span style="color: #0000ff">="F:\Eclipse\MyZNTProject\MyZhiNangTuanDemo\WebRoot"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;debug</span><span style="color: #0000ff">="5"</span><span style="color: #ff0000">&nbsp;reloadable</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;crossContext</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Logger&nbsp;</span><span style="color: #ff0000">className</span><span style="color: #0000ff">="org.apache.catalina.logger.FileLogger"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prefix</span><span style="color: #0000ff">="localhost_MysqlTest_log."</span><span style="color: #ff0000">&nbsp;suffix</span><span style="color: #0000ff">=".txt"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timestamp</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/mldn"</span><span style="color: #ff0000">&nbsp;&nbsp;auth</span><span style="color: #0000ff">="Container"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ResourceParams&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/mldn"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">factory</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.apache.commons.dbcp.BasicDataSourceFactory</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxActive</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">100</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxIdle</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">30</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">maxWait</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">5000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">username</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">root</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">password</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">mysqladmin</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">driverClassName</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.gjt.mm.mysql.Driver</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">url</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:mysql://localhost:3306/mldn</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">parameter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ResourceParams</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp; 第一部分为项目的发布路径。其他的就是数据库的配置了。<br />
&nbsp;&nbsp;&nbsp; <strong>第三：</strong>在Spring的配置文件applicationContext.xml中加上如下代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="dataSource"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">2</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff">="org.springframework.jndi.JndiObjectFactoryBean"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">3</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destroy-method</span><span style="color: #0000ff">="close"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jndiName"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">java:comp/env/jdbc/mldn</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span></div>
<br />
&nbsp;&nbsp;&nbsp; 而我用的Tomcat是6.0.18，在根据这个配置后就会出现javax.naming.NameNotFoundException: <font color="#c60a00">Name</font> <font color="#c60a00">jdbc</font> <font color="#c60a00">is</font> <font color="#c60a00">not</font> <font color="#c60a00">bound</font> <font color="#c60a00">in</font> <font color="#c60a00">this</font> <font color="#c60a00">Context</font>的错误。原因是，Tomcat5和Tomcat6的配置有所区别：<br />
&nbsp;&nbsp;&nbsp; <strong>第一：</strong>将jdbc驱动的jar包，拷贝到Tomcat的lib下<br />
&nbsp;&nbsp;&nbsp;<strong> 第二：</strong>在tomcat中conf下的context.xml文件中&lt;context&gt;与&lt;/context&gt;之间加入以下部分：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jdbc/mldn"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth</span><span style="color: #0000ff">="Container"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory</span><span style="color: #0000ff">="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #0000ff">="com.mysql.jdbc.Driver"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff">="jdbc:mysql://localhost:3306/mldn?useUnicode=true&amp;amp;characterEncoding=utf-8"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #0000ff">="root"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000ff">="123"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff">="100"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxIdle</span><span style="color: #0000ff">="30"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxWait</span><span style="color: #0000ff">="10000"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></div>
&nbsp;&nbsp;&nbsp; 同时在项目的web.xml中加入如下代码（网上说可以加也可以不加）<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">resource-ref</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">DB&nbsp;Connection</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-ref-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc/mldn</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-ref-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-type</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">javax.sql.DataSource</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-type</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-auth</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Container</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-auth</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">resource-ref</span><span style="color: #0000ff">&gt;</span></div>
<br />
&nbsp;&nbsp;&nbsp;<strong> </strong><strong>第三：</strong>在Spring的配置文件applicationContext.xml中加上如下代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="dataSource"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">2</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff">="org.springframework.jndi.JndiObjectFactoryBean"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">3</span><span style="color: #ff0000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destroy-method</span><span style="color: #0000ff">="close"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jndiName"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">java:comp/env/jdbc/mldn</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span></div>
<br />
&nbsp;&nbsp;&nbsp; 这样，Tomcat6下的CP才能正常的运行起来。
<img src ="http://www.blogjava.net/foolpig83/aggbug/288986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-30 01:21 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/30/288986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于S2SH+mysql中文乱码问题</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/23/288067.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Thu, 23 Jul 2009 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/23/288067.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/288067.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/23/288067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/288067.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/288067.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 主要是mysql数据库乱码问题，关于网页中的乱码（JSP页面乱码，action乱码）都好解决，只要页面的编码统一就可以了。我比较喜欢用UTF-8编码，不是很喜欢GBK或GB2312编码。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关于JSP页面及action只需添加一个EncodingFilter就可以了，代码如下：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;cn.zhang.myznt.filter;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.Filter;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterChain;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterConfig;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletRequest;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletResponse;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img id="Codehighlighter1_320_723_Open_Image" onclick="this.style.display='none'; Codehighlighter1_320_723_Open_Text.style.display='none'; Codehighlighter1_320_723_Closed_Image.style.display='inline'; Codehighlighter1_320_723_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_320_723_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_320_723_Closed_Text.style.display='none'; Codehighlighter1_320_723_Open_Image.style.display='inline'; Codehighlighter1_320_723_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;EncodingFilter&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Filter&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_320_723_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_320_723_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;charset&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_377_381_Open_Image" onclick="this.style.display='none'; Codehighlighter1_377_381_Open_Text.style.display='none'; Codehighlighter1_377_381_Closed_Image.style.display='inline'; Codehighlighter1_377_381_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_377_381_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_377_381_Closed_Text.style.display='none'; Codehighlighter1_377_381_Open_Image.style.display='inline'; Codehighlighter1_377_381_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;destroy()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_377_381_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_377_381_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doFilter(ServletRequest&nbsp;request,&nbsp;ServletResponse&nbsp;response,<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img id="Codehighlighter1_515_602_Open_Image" onclick="this.style.display='none'; Codehighlighter1_515_602_Open_Text.style.display='none'; Codehighlighter1_515_602_Closed_Image.style.display='inline'; Codehighlighter1_515_602_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_515_602_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_515_602_Closed_Text.style.display='none'; Codehighlighter1_515_602_Open_Image.style.display='inline'; Codehighlighter1_515_602_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilterChain&nbsp;chain)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException,&nbsp;ServletException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_515_602_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_515_602_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(</span><span style="color: #0000ff">this</span><span style="color: #000000">.charset);<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img id="Codehighlighter1_666_720_Open_Image" onclick="this.style.display='none'; Codehighlighter1_666_720_Open_Text.style.display='none'; Codehighlighter1_666_720_Closed_Image.style.display='inline'; Codehighlighter1_666_720_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_666_720_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_666_720_Closed_Text.style.display='none'; Codehighlighter1_666_720_Open_Image.style.display='inline'; Codehighlighter1_666_720_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(FilterConfig&nbsp;arg0)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_666_720_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_666_720_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.charset&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;arg0.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">charset</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<br />
在web.xml中注册这个Filter，注意他的位置必须放在需要调用action及jsp或其他页面声明之前<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encoding</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">cn.zhang.myznt.filter.EncodingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">charset</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">UTF-8</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encoding</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></div>
<br />
同时在连接mysql数据库的时候也要改为jdbc:mysql://localhost:3306/mldn?useUnicode=true<span style="color: red">&amp;amp;</span>characterEncoding=utf-8 如果连接在java代码中使用，请使用&amp;，如果是在xml中使用请写成<span style="color: red">&amp;amp;</span>。<br />
<br />
&nbsp;&nbsp;&nbsp; 关于mysql的collation字符集和mysql的characterSet字符集问题，查了很多资料都说要设置成一样，我想那只是针对如果你选GBK作为数据库编码的时候所用，但如果选用UTF8作为数据库编码的时候就不一定正确了。<br />
&nbsp;&nbsp;&nbsp; 今天根据网上的资料将所有的characterSet设置成utf8（可用mysql&gt; SHOW VARIABLES LIKE 'character_set_%';查看），一直在测试乱码问题解决没有。在测试过程发现传递的中文都是正确的，可就是在MySQL Client中查看的是乱码，所以继续找方法解决，但其实这个时候你插进去的中文已经是正常的了，只是在MySQL Client中显示是乱码。那么为什么会这样？MySQL Client设置成UTF8的时候中文不能正常显示，此时我们应该将charact_set_client ：设置成gbk，这样就可以正常显示中文了。<br />
&nbsp;&nbsp;&nbsp; 可以在my.ini中
<p>[mysql]</p>
<p>default-character-set=gbk</p>
<br />
而下面的default-character-set=utf8，两个default-character-set的设置是不一样的。当然如果你选用gbk作为数据库编码，是需要设置成一样的。
<img src ="http://www.blogjava.net/foolpig83/aggbug/288067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-23 17:40 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/23/288067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>getOutputStream() has already been called for this response</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/23/287952.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Thu, 23 Jul 2009 00:40:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/23/287952.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/287952.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/23/287952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/287952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/287952.html</trackback:ping><description><![CDATA[<div class="blog_content">
<p>tomcat下jsp出现<span class="undefined">getOutputStream</span>() <span class="hilite2">has</span> <span class="hilite3">already</span> <span class="hilite4">been</span> <span class="hilite5">called</span> <span class="hilite6">for</span> <span class="hilite7">this</span> <span class="hilite8">response</span>异常的原因和解决方法</p>
<p>在tomcat下jsp中出现此错误一般都是在jsp中使用了输出流（如输出图片验证码，文件下载等），<br />
没有妥善处理好的原因。<br />
具体的原因就是<br />
在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse <span class="hilite8">response</span>)的最后<br />
有一段这样的代码<br />
finally {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);<br />
&nbsp;&nbsp;&nbsp; }<br />
这里是在释放在jsp中使用的对象，会调用<span class="hilite8">response</span>.getWriter(),因为这个方法是和<br />
<span class="hilite8">response</span>.<span class="undefined">getOutputStream</span>()相冲突的！所以会出现以上这个异常。</p>
<p>然后当然是要提出解决的办法，其实挺简单的（并不是和某些朋友说的那样--<br />
将jsp内的所有空格和回车符号所有都删除掉），</p>
<p>在使用完输出流以后调用以下两行代码即可：<br />
out.clear();<br />
out = pageContext.pushBody();</p>
<p>最后这里是一个输出彩色验证码例子（这样的例子几乎随处可见）<br />
imag.jsp</p>
<p>&lt;%@ page&nbsp; import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %&gt;<br />
&lt;%@ page import="java.io.OutputStream" %&gt;<br />
&lt;%!<br />
Color getRandColor(int fc,int bc){<br />
Random random = new Random();<br />
if(fc&gt;255) fc=255;<br />
if(bc&gt;255) bc=255;<br />
int r=fc+random.nextInt(bc-fc);<br />
int g=fc+random.nextInt(bc-fc);<br />
int b=fc+random.nextInt(bc-fc);<br />
return new Color(r,g,b);<br />
}<br />
%&gt;<br />
&lt;%<br />
try{<br />
<span class="hilite8">response</span>.setHeader("Pragma","No-cache");<br />
<span class="hilite8">response</span>.setHeader("Cache-Control","no-cache");<br />
<span class="hilite8">response</span>.setDateHeader("Expires", 0);<br />
int width=60, height=20;<br />
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);<br />
OutputStream os=<span class="hilite8">response</span>.<span class="undefined">getOutputStream</span>();<br />
Graphics g = image.getGraphics();<br />
Random random = new Random();<br />
g.setColor(getRandColor(200,250));<br />
g.fillRect(0, 0, width, height);</p>
<p>g.setFont(new Font("Times New Roman",Font.PLAIN,18));<br />
g.setColor(getRandColor(160,200));<br />
<span class="hilite6">for</span> (int i=0;i&lt;155;i++)<br />
{<br />
int x = random.nextInt(width);<br />
int y = random.nextInt(height);<br />
int xl = random.nextInt(12);<br />
int yl = random.nextInt(12);<br />
g.drawLine(x,y,x+xl,y+yl);<br />
}<br />
String sRand="";<br />
<span class="hilite6">for</span> (int i=0;i&lt;4;i++){<br />
String rand=String.valueOf(random.nextInt(10));<br />
sRand+=rand;<br />
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));<br />
g.drawString(rand,13*i+6,16);<br />
}<br />
session.setAttribute("rand",sRand);<br />
g.dispose();</p>
<p>ImageIO.write(image, "JPEG",os);<br />
os.flush();<br />
os.close();<br />
os=null;<br />
<span class="hilite8">response</span>.flushBuffer();<br />
out.clear();<br />
out = pageContext.pushBody();<br />
}<br />
catch(IllegalStateException e)<br />
{<br />
System.out.println(e.getMessage());<br />
e.printStackTrace();<br />
}%&gt;</p>
</div><img src ="http://www.blogjava.net/foolpig83/aggbug/287952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-23 08:40 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/23/287952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Could not open ServletContext resource [/WEB-INF/action-servlet.xml]解决方案</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/22/287932.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Wed, 22 Jul 2009 15:15:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/22/287932.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/287932.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/22/287932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/287932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/287932.html</trackback:ping><description><![CDATA[<p>这个错误主要是struts-config.xml或web.xml上配置出错<br />
仔细对比后就可以解决<br />
struts-config.xml<br />
&lt;controller<br />
&nbsp;&nbsp;processorClass="org.springframework.web.struts.DelegatingRequestProcessor"&gt;<br />
&nbsp;&lt;/controller&gt;<br />
<br />
&nbsp; &lt;plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;set-property property="<span style="color: red">contextConfigLocation</span>" value="/WEB-INF/classes/applicationContext.xml" /&gt;<br />
&nbsp; &lt;/plug-in&gt;<br />
</p>
web.xml<br />
&lt;context-param&gt;<br />
&nbsp; &nbsp;&lt;param-name&gt;<span style="color: red">contextConfigLocation</span>&lt;/param-name&gt;<br />
&nbsp; &nbsp;&lt;param-value&gt;/WEB-INF/classes/applicationContext.xml&lt;/param-value&gt;<br />
&nbsp; &lt;/context-param&gt;<br />
&nbsp; <br />
&nbsp; &lt;servlet&gt;<br />
&nbsp; &nbsp;&lt;servlet-name&gt;context&lt;/servlet-name&gt;<br />
&nbsp; &nbsp;&lt;servlet-class&gt;org.springframework.web.context.ContextLoaderServlet&lt;/servlet-class&gt;<br />
&nbsp; &nbsp;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&nbsp; &lt;/servlet&gt;<br />
主要是要保证<span style="color: red">contextConfigLocation</span>名字没有错误即可。<br />
仔细对比 要一字不差 <br />
<img src ="http://www.blogjava.net/foolpig83/aggbug/287932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-22 23:15 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/22/287932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>S2SH搭建的一个实例学习笔记(三)</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/22/287880.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Wed, 22 Jul 2009 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/22/287880.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/287880.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/22/287880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/287880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/287880.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;二、Struts2和Spring2.5的整合（1）在web.xml中加入Struts2过滤器                                    &lt;filter&gt;            &nbsp;&nbsp;&lt;filter-name&gt;struts2&lt;/filter-name&gt;          ...&nbsp;&nbsp;<a href='http://www.blogjava.net/foolpig83/archive/2009/07/22/287880.html'>阅读全文</a><img src ="http://www.blogjava.net/foolpig83/aggbug/287880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-22 17:02 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/22/287880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>S2SH搭建的一个实例学习笔记(二)</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/20/287536.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Mon, 20 Jul 2009 14:04:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/20/287536.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/287536.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/20/287536.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/287536.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/287536.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;一、Srping 与 Hibnernate 的整合（4）开发&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里采用自底向上的开发模式。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （a）底层的开发&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开DB Explorer，连接上数据库，...&nbsp;&nbsp;<a href='http://www.blogjava.net/foolpig83/archive/2009/07/20/287536.html'>阅读全文</a><img src ="http://www.blogjava.net/foolpig83/aggbug/287536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-20 22:04 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/20/287536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>S2SH搭建的一个实例学习笔记(一)</title><link>http://www.blogjava.net/foolpig83/archive/2009/07/20/287428.html</link><dc:creator>平涛</dc:creator><author>平涛</author><pubDate>Mon, 20 Jul 2009 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/foolpig83/archive/2009/07/20/287428.html</guid><wfw:comment>http://www.blogjava.net/foolpig83/comments/287428.html</wfw:comment><comments>http://www.blogjava.net/foolpig83/archive/2009/07/20/287428.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/foolpig83/comments/commentRss/287428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/foolpig83/services/trackbacks/287428.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">使用的版本为：</span>Struts 2.1.6 + Spring 2.5 + Hibernate 3.2
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<span style="font-family: 宋体">开发环境为：</span>MyEclipse 7.1.1 + Jdk 1.6.0_13 + Tomcat 6.0.18 + MySQL 6.0.10 alpha</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">所用表：</span>test.employee</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">(</span><span style="color: #000000">11</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NO&nbsp;&nbsp;&nbsp;PRI&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto_increment<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varchar(</span><span style="color: #000000">255</span><span style="color: #000000">)&nbsp;YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />address&nbsp;&nbsp;&nbsp;varchar(</span><span style="color: #000000">255</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />phone&nbsp;&nbsp;&nbsp;&nbsp;varchar(</span><span style="color: #000000">255</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">这个实例主要是实现简单的</span>CRUD<span style="font-family: 宋体">方法。在搭建环境前，需要处理一个问题：因为</span>Spring2.5 AOP Liberaries<span style="font-family: 宋体">里的</span>asm2.2.3.jar<span style="font-family: 宋体">和</span>Hiberate<span style="font-family: 宋体">中的生成代理用的</span>asm.jar<span style="font-family: 宋体">冲突，我们需要删除</span>asm2.2.3.jar<span style="font-family: 宋体">，不然就会发生异常：</span><strong>java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor </strong><span style="font-family: 宋体">。具体的删除方法（避免在</span>Tomcat<span style="font-family: 宋体">中的</span>lib<span style="font-family: 宋体">下删除了，然后又重新发布项目时此</span>jar<span style="font-family: 宋体">又重新发不到</span>lib<span style="font-family: 宋体">下）：在</span>MyEclipse<span style="font-family: 宋体">中【</span>Window<span style="font-family: 宋体">】</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">【</span>Preferences<span style="font-family: 宋体">】</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">【</span>MyEclipse Enterprise Workbench<span style="font-family: 宋体">】</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">【</span>Project Capabilities<span style="font-family: 宋体">】</span><span style="font-family: Wingdings">&#224;</span><span style="font-family: 宋体">【</span>Spring<span style="font-family: 宋体">】在</span>spring2.5 AOP Libraries<span style="font-family: 宋体">中删除</span>asm2.2.3.jar<br />
</p>
<center><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image002.jpg" /></center>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">在开发</span>S2SH<span style="font-family: 宋体">架构时，先整合</span>Spring + Hibernate <span style="font-family: 宋体">，然后再整合</span>Struts + Spring <span style="font-family: 宋体">完成</span>S2SH<span style="font-family: 宋体">架构的搭建。</span></p>
<p><strong><span style="font-family: 宋体">一、</span>Srping <span style="font-family: 宋体">与</span> Hibnernate <span style="font-family: 宋体">的整合</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><span style="font-family: 宋体">（</span>1<span style="font-family: 宋体">）添加</span>Hibernate<span style="font-family: 宋体">支持</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">在添加</span>Hibernate<span style="font-family: 宋体">支持之前，我们先在【</span>MyEclipse DataBase Explorer<span style="font-family: 宋体">】中设置数据库连接。所用的mysql/jdbc的jar包为mysql-connector-java-5.1.8-bin.jar。<br />
</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><strong><span style="font-family: 宋体"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image004.jpg" /><br />
&nbsp;&nbsp;&nbsp; 注意：</span></strong>MySQL<span style="font-family: 宋体">的</span>URL<span style="font-family: 宋体">为：</span>jdbc:mysql://localhost:3306/test<span style="font-family: 宋体">（我所根据学的视频案例是连接</span>oracle<span style="font-family: 宋体">的，根据视频中所学的时候，</span>url<span style="font-family: 宋体">没有添加数据库，在测试过程当中怎么样也找到实体，原因就是因为在</span>url<span style="font-family: 宋体">中没有添加数据库的选择。）</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">后面按照默认设置一直到【</span>finish<span style="font-family: 宋体">】即可。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">（</span>a<span style="font-family: 宋体">）在导航中找到【</span>MyEclipse<span style="font-family: 宋体">】，然后选择【</span>Add Hibernate Capbilities<span style="font-family: 宋体">】<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image006.jpg" /></span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">这里可以直接选择</span>jar<span style="font-family: 宋体">包拷贝到</span>lib<span style="font-family: 宋体">下面，也可以先不拷贝，到时候</span>MyEclipse<span style="font-family: 宋体">会自动拷贝到</span>lib<span style="font-family: 宋体">下。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">（</span>b<span style="font-family: 宋体">）由于</span>Hibernate<span style="font-family: 宋体">要与</span>Spring<span style="font-family: 宋体">整合，所以在这一步无需再配置更详细的</span>hibernate.cfg.xml<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image008.jpg" /></p>
<p style="text-indent: 21pt" class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">在这个按列中，我们使用</span>JDBC Driver<span style="font-family: 宋体">模式。</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">（</span>c<span style="font-family: 宋体">）不创建</span>sessionFactory<span style="font-family: 宋体">。然后【</span>finish<span style="font-family: 宋体">】<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image010.jpg" /><br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image012.jpg" width="553" height="529" /><br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image014.jpg" /></span></p>
<p style="text-indent: 21pt" class="MsoNormal"><strong><span style="font-family: 宋体">（</span>2<span style="font-family: 宋体">）添加</span>Spring<span style="font-family: 宋体">支持</span></strong></p>
<p><span style="font-family: 宋体">（</span>a<span style="font-family: 宋体">）在导航中找到【</span>MyEclipse<span style="font-family: 宋体">】，然后选择【</span>Add Spring Capbilities<span style="font-family: 宋体">】</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">添加</span>5<span style="font-family: 宋体">个类库。<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image016.jpg" /><br />
</span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">（</span>b<span style="font-family: 宋体">）生成</span>applicationContext.xml<span style="font-family: 宋体">，建议将其放在</span>WEB-INF<span style="font-family: 宋体">下面。<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image018.jpg" /></span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">（</span>c<span style="font-family: 宋体">）创建</span>sessionFactory<span style="font-family: 宋体">。然后【</span>finish<span style="font-family: 宋体">】<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image018.jpg" width="554" height="414" /><br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image022.jpg" /></span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">（</span>3<span style="font-family: 宋体">）整合</span>Spring<span style="font-family: 宋体">和</span>Hibernate</p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">打开</span>applicationContext<span style="font-family: 宋体">，在当中增加</span>DataSource<span style="font-family: 宋体">和</span>SessionFactory</p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0">
    <tbody>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 426.1pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="568">
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; background: silver; color: #3f7f7f; font-size: 10pt">bean</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"sessionFactory"</span></em></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt">&nbsp;&nbsp;&nbsp; <span style="color: #7f007f">class</span><span style="color: black">=</span><em><span style="color: #2a00ff">"org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"configLocation"</span></em></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #7f007f">value</span><span style="color: black">=</span><em><span style="color: #2a00ff">"classpath:hibernate.cfg.xml"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; background: silver; color: #3f7f7f; font-size: 10pt">bean</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">先将原先自动生成的上述代码删除。<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image024.jpg" /></span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">然后再</span>Outline<span style="font-family: 宋体">的导航中选择【</span>New DataSource and SessionFactory<span style="font-family: 宋体">】<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image026.jpg" /></span></p>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">后面要用到</span>Mapping Resources<span style="font-family: 宋体">，所以你可以在这里随便填一个值进去。<br />
</span><span style="font-family: 宋体"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/foolpig83/image028.jpg" /><br />
最后添加部分属性（添加了</span>hibernate.show_sql<span style="font-family: 宋体">）后形成代码如下：</span></p>
<table style="border-bottom: medium none; border-left: medium none; width: 414pt; border-collapse: collapse; margin-left: 23.4pt; border-top: medium none; border-right: medium none" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" width="552">
    <tbody>
        <tr style="height: 23.25pt">
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 414pt; padding-right: 5.4pt; height: 23.25pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="552">
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; background: silver; color: #3f7f7f; font-size: 10pt">bean</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"dataSource"</span></em></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #7f007f">class</span><span style="color: black">=</span><em><span style="color: #2a00ff">"org.apache.commons.dbcp.BasicDataSource"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"driverClassName"</span></em></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #7f007f">value</span><span style="color: black">=</span><em><span style="color: #2a00ff">"com.mysql.jdbc.Driver"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"url"</span></em> <span style="color: #7f007f">value</span><span style="color: black">=</span><em><span style="color: #2a00ff">"jdbc:mysql://localhost:3306/test"</span></em><span style="color: teal">&gt;&lt;/</span><span style="color: #3f7f7f">property</span><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"username"</span></em> <span style="color: #7f007f">value</span><span style="color: black">=</span><em><span style="color: #2a00ff">"root"</span></em><span style="color: teal">&gt;&lt;/</span><span style="color: #3f7f7f">property</span><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"password"</span></em> <span style="color: #7f007f">value</span><span style="color: black">=</span><em><span style="color: #2a00ff">"123"</span></em><span style="color: teal">&gt;&lt;/</span><span style="color: #3f7f7f">property</span><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; background: silver; color: #3f7f7f; font-size: 10pt">bean</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">bean</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">id</span><span style="color: black">=</span><em><span style="color: #2a00ff">"sessionFactory"</span></em></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: #7f007f">class</span><span style="color: black">=</span><em><span style="color: #2a00ff">"org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"dataSource"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">ref</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">bean</span><span style="color: black">=</span><em><span style="color: #2a00ff">"dataSource"</span></em> <span style="color: teal">/&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"hibernateProperties"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">props</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">prop</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">key</span><span style="color: black">=</span><em><span style="color: #2a00ff">"hibernate.dialect"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>org</u>.<u>hibernate</u>.dialect.MySQLDialect</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">prop</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">prop</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">key</span><span style="color: black">=</span><em><span style="color: #2a00ff">"hibernate.show_sql"</span></em><span style="color: teal">&gt;</span><span style="color: black">true</span><span style="color: teal">&lt;/</span><span style="color: #3f7f7f">prop</span><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">props</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; font-size: 10pt"> <span style="color: #7f007f">name</span><span style="color: black">=</span><em><span style="color: #2a00ff">"mappingDirectoryLocations"</span></em><span style="color: teal">&gt;</span></span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">list</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">value</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">file:src</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">value</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">list</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">property</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            <p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">bean</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">自此已经完成了</span>Spring<span style="font-family: 宋体">与</span>Hibernate<span style="font-family: 宋体">的整合。</span></p>
<img src ="http://www.blogjava.net/foolpig83/aggbug/287428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/foolpig83/" target="_blank">平涛</a> 2009-07-20 11:17 <a href="http://www.blogjava.net/foolpig83/archive/2009/07/20/287428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>