﻿<?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-Terry Zou-随笔分类-Tomcat+Eclipse</title><link>http://www.blogjava.net/ZouYonghui/category/51174.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 13 Jun 2014 10:23:11 GMT</lastBuildDate><pubDate>Fri, 13 Jun 2014 10:23:11 GMT</pubDate><ttl>60</ttl><item><title>Servlet日志输出Log4j配置</title><link>http://www.blogjava.net/ZouYonghui/archive/2014/05/26/414102.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Mon, 26 May 2014 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2014/05/26/414102.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/414102.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2014/05/26/414102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/414102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/414102.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;转自：http://musicbox95351.iteye.com/blog/868526&nbsp;&nbsp;&nbsp;&nbsp;比如项目为一个UserServlet，主要分三步&nbsp;&nbsp;&nbsp;&nbsp;1 日志输出文件log4j.xml的配置。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 加载日志配置...&nbsp;&nbsp;<a href='http://www.blogjava.net/ZouYonghui/archive/2014/05/26/414102.html'>阅读全文</a><img src ="http://www.blogjava.net/ZouYonghui/aggbug/414102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2014-05-26 11:13 <a href="http://www.blogjava.net/ZouYonghui/archive/2014/05/26/414102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何使用log4j打印日志并保存日志</title><link>http://www.blogjava.net/ZouYonghui/archive/2014/03/21/411346.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Fri, 21 Mar 2014 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2014/03/21/411346.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/411346.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2014/03/21/411346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/411346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/411346.html</trackback:ping><description><![CDATA[<div>1.新建项目<br />2.导入jar包（例如，log4j-1.2.15<a></a>.jar,slf4j-api-1.5.2.jar,slf4j-log4j12-1.5.0.jar）见附件：<a href="/Files/ZouYonghui/log4j.rar">/Files/ZouYonghui/log4j.rar</a><br />3.在src目录下编写log.properties文件，里面包含日志所在位置，如下所示： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">#Created&nbsp;by&nbsp;JInto&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;www.guh</span><span style="color: #000000">-</span><span style="color: #000000">software.de<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />#Mon&nbsp;May&nbsp;</span><span style="color: #000000">27</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">17</span><span style="color: #000000">:</span><span style="color: #000000">12</span><span style="color: #000000">:</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;CST&nbsp;</span><span style="color: #000000">2013</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.CONSOLE</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.ConsoleAppender<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.CONSOLE.ImmediateFlush</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.CONSOLE.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<br /><img id="Codehighlighter1_285_312_Open_Image" onclick="this.style.display='none'; Codehighlighter1_285_312_Open_Text.style.display='none'; Codehighlighter1_285_312_Closed_Image.style.display='inline'; Codehighlighter1_285_312_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_285_312_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_285_312_Closed_Text.style.display='none'; Codehighlighter1_285_312_Open_Image.style.display='inline'; Codehighlighter1_285_312_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">log4j.appender.CONSOLE.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #000000">[</span><span style="color: #000000">%</span><span style="color: #000000">p]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">d</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_285_312_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_285_312_Open_Text"><span style="color: #000000">{dd&nbsp;MMM&nbsp;hh\:mm\:ss.SSS&nbsp;aa}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">t&nbsp;&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">m</span><span style="color: #000000">%</span><span style="color: #000000">n<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.logFile</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.RollingFileAppender<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.logFile.Append</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.lo</span><span style="color: #ff0000">gFile.File</span><span style="color: #ff0000">=</span><span style="color: #ff0000">D\:</span><span style="color: #ff0000">/</span><span style="color: #ff0000">Java</span><span style="color: #ff0000">/</span><span style="color: #ff0000">logs</span><span style="color: #ff0000">/</span><span style="color: #ff0000">testHel</span><span style="color: #ff0000">l<br />og4j.appender.logFile.MaxBackupIndex</span><span style="color: #000000">loWorld.log<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">=</span><span style="color: #000000">100</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.logFile.MaxFileSize</span><span style="color: #000000">=</span><span style="color: #000000">10MB<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.logFile.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<br /><img id="Codehighlighter1_678_705_Open_Image" onclick="this.style.display='none'; Codehighlighter1_678_705_Open_Text.style.display='none'; Codehighlighter1_678_705_Closed_Image.style.display='inline'; Codehighlighter1_678_705_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_678_705_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_678_705_Closed_Text.style.display='none'; Codehighlighter1_678_705_Open_Image.style.display='inline'; Codehighlighter1_678_705_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">log4j.appender.logFile.layout.ConversionPattern</span><span style="color: #000000">=</span><span style="color: #000000">[</span><span style="color: #000000">%</span><span style="color: #000000">p]&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">d</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_678_705_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_678_705_Open_Text"><span style="color: #000000">{dd&nbsp;MMM&nbsp;hh\:mm\:ss.SSS&nbsp;aa}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">t&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">m</span><span style="color: #000000">%</span><span style="color: #000000">n<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.appender.FILELOGER.encoding</span><span style="color: #000000">=</span><span style="color: #000000">UTF</span><span style="color: #000000">-</span><span style="color: #000000">8</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.com.mchange</span><span style="color: #000000">=</span><span style="color: #000000">ERROR<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.net.sf.ehcache</span><span style="color: #000000">=</span><span style="color: #000000">ERROR<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.org.apache.commons</span><span style="color: #000000">=</span><span style="color: #000000">ERROR<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.org.apache.cxf</span><span style="color: #000000">=</span><span style="color: #000000">info<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.org.apache.http</span><span style="color: #000000">=</span><span style="color: #000000">ERROR<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.org.apache.shiro</span><span style="color: #000000">=</span><span style="color: #000000">ERROR<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.org.hibernate</span><span style="color: #000000">=</span><span style="color: #000000">ERROR<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.logger.org.springframework</span><span style="color: #000000">=</span><span style="color: #000000">ERROR<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />log4j.rootLogger</span><span style="color: #000000">=</span><span style="color: #000000">info,logFile,CONSOLE<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>4.在项目中初始化：<br />PropertyConfigurator.configure("log4j.properties");<br />5.使用<br />如：<br />private static final Logger log = LoggerFactory.getLogger(HelloWorld.class);<br />。。。。。。<br />log.debug("hello");<br /></div><img src ="http://www.blogjava.net/ZouYonghui/aggbug/411346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2014-03-21 16:50 <a href="http://www.blogjava.net/ZouYonghui/archive/2014/03/21/411346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate参数一览表</title><link>http://www.blogjava.net/ZouYonghui/archive/2014/01/22/409206.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Wed, 22 Jan 2014 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2014/01/22/409206.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/409206.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2014/01/22/409206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/409206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/409206.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Hibernate 参数设置一览表&nbsp;SQL方言1、Hibernate JDBC属性&nbsp;属性名用途hibernate.connection.driver_classjdbc驱动类hibernate.connection.urljdbc URLhibernate.connection.username数据库用户...&nbsp;&nbsp;<a href='http://www.blogjava.net/ZouYonghui/archive/2014/01/22/409206.html'>阅读全文</a><img src ="http://www.blogjava.net/ZouYonghui/aggbug/409206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2014-01-22 10:18 <a href="http://www.blogjava.net/ZouYonghui/archive/2014/01/22/409206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Multiple markers at this line </title><link>http://www.blogjava.net/ZouYonghui/archive/2014/01/21/409173.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Tue, 21 Jan 2014 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2014/01/21/409173.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/409173.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2014/01/21/409173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/409173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/409173.html</trackback:ping><description><![CDATA[<span style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; float: none; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Multiple markers at this line&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;原因1，这中情况有时候是jar包中缺少需要的类，没把需要的类打进去<br />&nbsp;&nbsp;&nbsp;&nbsp;原因2，<span style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 32px; letter-spacing: normal; display: inline !important; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; float: none; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">缺少default.properties文件</span><br style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 32px; letter-spacing: normal; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 32px; letter-spacing: normal; display: inline !important; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; float: none; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从其他工程拷贝一个过来</span><br />&nbsp;&nbsp;&nbsp;&nbsp;原因3，<span style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 32px; letter-spacing: normal; display: inline !important; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; float: none; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">没有jar包，没有资源文件</span><br style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 32px; letter-spacing: normal; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 32px; letter-spacing: normal; display: inline !important; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; float: none; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工程右键 -&gt; Properties -&gt;android -&gt;选择一个android的版本，（如果已经选择好了，还是有问题，就先选择另一个，之后再换回来）</span><br /></span><br style="text-align: left; widows: 2; text-transform: none; background-color: rgb(255,244,224); text-indent: 0px; letter-spacing: normal; font: 16px/28px 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; color: rgb(83,61,37); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><img src ="http://www.blogjava.net/ZouYonghui/aggbug/409173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2014-01-21 15:21 <a href="http://www.blogjava.net/ZouYonghui/archive/2014/01/21/409173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate常见异常</title><link>http://www.blogjava.net/ZouYonghui/archive/2014/01/15/408969.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Wed, 15 Jan 2014 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2014/01/15/408969.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/408969.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2014/01/15/408969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/408969.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/408969.html</trackback:ping><description><![CDATA[<p>1.缺少包commons-collections-3.1.jar<br />java.lang.NoClassDefFoundError: org/apache/commons/collections/map/LRUMap<br />&nbsp;at org.hibernate.util.SimpleMRUCache.init(SimpleMRUCache.java:71)<br />&nbsp;at org.hibernate.util.SimpleMRUCache.&lt;init&gt;(SimpleMRUCache.java:55)<br />&nbsp;at org.hibernate.engine.query.QueryPlanCache.&lt;init&gt;(QueryPlanCache.java:76)<br />&nbsp;at org.hibernate.impl.SessionFactoryImpl.&lt;init&gt;(SessionFactoryImpl.java:239)<br />&nbsp;at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)<br />&nbsp;at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)<br />&nbsp;at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)<br />&nbsp;at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)<br />&nbsp;at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)<br />&nbsp;at com.rfcyber.rfcepayment.util.jpa.JPAHelper.init(Unknown Source)<br />&nbsp;at test.TestDataPreparation.setUp(TestDataPreparation.java:52)<br />&nbsp;at junit.framework.TestCase.runBare(TestCase.java:128)<br />&nbsp;at junit.framework.TestResult$1.protect(TestResult.java:106)<br />&nbsp;at junit.framework.TestResult.runProtected(TestResult.java:124)<br />&nbsp;at junit.framework.TestResult.run(TestResult.java:109)<br />&nbsp;at junit.framework.TestCase.run(TestCase.java:120)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)<br />Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.LRUMap<br />&nbsp;at java.net.URLClassLoader$1.run(URLClassLoader.java:200)<br />&nbsp;at java.security.AccessController.doPrivileged(Native Method)<br />&nbsp;at java.net.URLClassLoader.findClass(URLClassLoader.java:188)<br />&nbsp;at java.lang.ClassLoader.loadClass(ClassLoader.java:307)<br />&nbsp;at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)<br />&nbsp;at java.lang.ClassLoader.loadClass(ClassLoader.java:252)<br />&nbsp;at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)<br />&nbsp;... 22 more<br /><br />2.缺jta.jar</p>
<p>java.lang.NoClassDefFoundError: javax/transaction/SystemException<br />&nbsp;at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:112)<br />&nbsp;at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:107)<br />&nbsp;at com.rfcyber.rfcepayment.util.jpa.JPAHelper.getEntityManager(Unknown Source)<br />&nbsp;at com.rfcyber.rfcepayment.util.jpa.JPADAO.findByJPQL(Unknown Source)<br />&nbsp;at com.richhouse.personal.service.DPZYTService.searchNextAvaiable(Unknown Source)<br />&nbsp;at com.richhouse.personal.util.ZYTDPHandler.searchNextAvaiable(Unknown Source)<br />&nbsp;at com.richhouse.personal.util.ZYTDataPreparation.prepareStoreData(Unknown Source)<br />&nbsp;at test.TestDataPreparation.testOracleSearchNext(TestDataPreparation.java:91)<br />&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />&nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />&nbsp;at java.lang.reflect.Method.invoke(Method.java:597)<br />&nbsp;at junit.framework.TestCase.runTest(TestCase.java:164)<br />&nbsp;at junit.framework.TestCase.runBare(TestCase.java:130)<br />&nbsp;at junit.framework.TestResult$1.protect(TestResult.java:106)<br />&nbsp;at junit.framework.TestResult.runProtected(TestResult.java:124)<br />&nbsp;at junit.framework.TestResult.run(TestResult.java:109)<br />&nbsp;at junit.framework.TestCase.run(TestCase.java:120)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)<br />&nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)<br />Caused by: java.lang.ClassNotFoundException: javax.transaction.SystemException<br />&nbsp;at java.net.URLClassLoader$1.run(URLClassLoader.java:200)<br />&nbsp;at java.security.AccessController.doPrivileged(Native Method)<br />&nbsp;at java.net.URLClassLoader.findClass(URLClassLoader.java:188)<br />&nbsp;at java.lang.ClassLoader.loadClass(ClassLoader.java:307)<br />&nbsp;at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)<br />&nbsp;at java.lang.ClassLoader.loadClass(ClassLoader.java:252)<br />&nbsp;at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)<br />&nbsp;... 24 more&nbsp;</p><img src ="http://www.blogjava.net/ZouYonghui/aggbug/408969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2014-01-15 10:44 <a href="http://www.blogjava.net/ZouYonghui/archive/2014/01/15/408969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中imp命令详解</title><link>http://www.blogjava.net/ZouYonghui/archive/2014/01/13/408876.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Mon, 13 Jan 2014 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2014/01/13/408876.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/408876.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2014/01/13/408876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/408876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/408876.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: oracle中imp命令详解命令：exp&nbsp;源库usr/源库pwd@源库连接符&nbsp;tables=dp_zyt_dgi,dp_zyt_file,dp_zyt_card&nbsp;file=d:\test2.dmp&nbsp;full=n;imp&nbsp;目标库usr/目标库pwd@目标库连接符&nbsp;file=test.dmp&nbsp;log=test_imp.log...&nbsp;&nbsp;<a href='http://www.blogjava.net/ZouYonghui/archive/2014/01/13/408876.html'>阅读全文</a><img src ="http://www.blogjava.net/ZouYonghui/aggbug/408876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2014-01-13 20:04 <a href="http://www.blogjava.net/ZouYonghui/archive/2014/01/13/408876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字节数组的相关操作(取反，查找位置，转为16进制)</title><link>http://www.blogjava.net/ZouYonghui/archive/2013/12/25/408007.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Wed, 25 Dec 2013 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2013/12/25/408007.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/408007.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2013/12/25/408007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/408007.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/408007.html</trackback:ping><description><![CDATA[1.字节数组取反 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img id="Codehighlighter1_42_286_Open_Image" onclick="this.style.display='none'; Codehighlighter1_42_286_Open_Text.style.display='none'; Codehighlighter1_42_286_Closed_Image.style.display='inline'; Codehighlighter1_42_286_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_42_286_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_42_286_Closed_Text.style.display='none'; Codehighlighter1_42_286_Open_Image.style.display='inline'; Codehighlighter1_42_286_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><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">byte</span><span style="color: #000000">[]&nbsp;backByte(</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;buff)</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_42_286_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_42_286_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_77_268_Open_Image" onclick="this.style.display='none'; Codehighlighter1_77_268_Open_Text.style.display='none'; Codehighlighter1_77_268_Closed_Image.style.display='inline'; Codehighlighter1_77_268_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_77_268_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_77_268_Closed_Text.style.display='none'; Codehighlighter1_77_268_Open_Image.style.display='inline'; Codehighlighter1_77_268_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">buff.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)</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_77_268_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_77_268_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img id="Codehighlighter1_133_229_Open_Image" onclick="this.style.display='none'; Codehighlighter1_133_229_Open_Text.style.display='none'; Codehighlighter1_133_229_Closed_Image.style.display='inline'; Codehighlighter1_133_229_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_133_229_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_133_229_Closed_Text.style.display='none'; Codehighlighter1_133_229_Open_Image.style.display='inline'; Codehighlighter1_133_229_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">8</span><span style="color: #000000">;j</span><span style="color: #000000">++</span><span style="color: #000000">)</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_133_229_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_133_229_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;bit&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(buff[i]</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">j</span><span style="color: #000000">&amp;</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">?</span><span style="color: #000000">1</span><span style="color: #000000">:</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">1</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">j)</span><span style="color: #000000">*</span><span style="color: #000000">bit;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff[i]</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">byte</span><span style="color: #000000">)b;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;buff;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000">&nbsp;</span></div><br />2.查找字节数组中字数组的位置<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"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img id="Codehighlighter1_64_318_Open_Image" onclick="this.style.display='none'; Codehighlighter1_64_318_Open_Text.style.display='none'; Codehighlighter1_64_318_Closed_Image.style.display='inline'; Codehighlighter1_64_318_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_64_318_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_64_318_Closed_Text.style.display='none'; Codehighlighter1_64_318_Open_Image.style.display='inline'; Codehighlighter1_64_318_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><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">int</span><span style="color: #000000">&nbsp;indexOf(</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;src,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;offset,</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;needFind)</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_64_318_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_64_318_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_125_302_Open_Image" onclick="this.style.display='none'; Codehighlighter1_125_302_Open_Text.style.display='none'; Codehighlighter1_125_302_Closed_Image.style.display='inline'; Codehighlighter1_125_302_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_125_302_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_125_302_Closed_Text.style.display='none'; Codehighlighter1_125_302_Open_Image.style.display='inline'; Codehighlighter1_125_302_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">offset;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">src.length</span><span style="color: #000000">-</span><span style="color: #000000">offset</span><span style="color: #000000">-</span><span style="color: #000000">needFind.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)</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_125_302_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_125_302_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;isValid</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /><img id="Codehighlighter1_189_263_Open_Image" onclick="this.style.display='none'; Codehighlighter1_189_263_Open_Text.style.display='none'; Codehighlighter1_189_263_Closed_Image.style.display='inline'; Codehighlighter1_189_263_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_189_263_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_189_263_Closed_Text.style.display='none'; Codehighlighter1_189_263_Open_Image.style.display='inline'; Codehighlighter1_189_263_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">needFind.length;j</span><span style="color: #000000">++</span><span style="color: #000000">)</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_189_263_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_189_263_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_220_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_220_258_Open_Text.style.display='none'; Codehighlighter1_220_258_Closed_Image.style.display='inline'; Codehighlighter1_220_258_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_220_258_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_220_258_Closed_Text.style.display='none'; Codehighlighter1_220_258_Open_Image.style.display='inline'; Codehighlighter1_220_258_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(src[i</span><span style="color: #000000">+</span><span style="color: #000000">j]</span><span style="color: #000000">!=</span><span style="color: #000000">needFind[j])</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_220_258_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_220_258_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isValid</span><span style="color: #000000">=</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_279_298_Open_Image" onclick="this.style.display='none'; Codehighlighter1_279_298_Open_Text.style.display='none'; Codehighlighter1_279_298_Closed_Image.style.display='inline'; Codehighlighter1_279_298_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_279_298_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_279_298_Closed_Text.style.display='none'; Codehighlighter1_279_298_Open_Image.style.display='inline'; Codehighlighter1_279_298_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(isValid)</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_279_298_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_279_298_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;i;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br /><br /><br />3.字节数组转换为16进制<br /><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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_45_244_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_244_Open_Text.style.display='none'; Codehighlighter1_45_244_Closed_Image.style.display='inline'; Codehighlighter1_45_244_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_45_244_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_45_244_Closed_Text.style.display='none'; Codehighlighter1_45_244_Open_Image.style.display='inline'; Codehighlighter1_45_244_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">final</span><span style="color: #000000"> </span><span style="color: #0000ff">byte</span><span style="color: #000000">[] HEX_CHAR_TABLE </span><span style="color: #000000">=</span><span style="color: #000000"> </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_45_244_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_45_244_Open_Text"><span style="color: #000000">{ (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">0</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">1</span><span style="color: #000000">'</span><span style="color: #000000">,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">2</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">3</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">4</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">5</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">6</span><span style="color: #000000">'</span><span style="color: #000000">,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">7</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">8</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">9</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">A</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">B</span><span style="color: #000000">'</span><span style="color: #000000">,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" /> (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">C</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">D</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">E</span><span style="color: #000000">'</span><span style="color: #000000">, (</span><span style="color: #0000ff">byte</span><span style="color: #000000">) </span><span style="color: #000000">'</span><span style="color: #000000">F</span><span style="color: #000000">'</span><span style="color: #000000"> }</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /> <br /><img id="Codehighlighter1_305_575_Open_Image" onclick="this.style.display='none'; Codehighlighter1_305_575_Open_Text.style.display='none'; Codehighlighter1_305_575_Closed_Image.style.display='inline'; Codehighlighter1_305_575_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_305_575_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_305_575_Closed_Text.style.display='none'; Codehighlighter1_305_575_Open_Image.style.display='inline'; Codehighlighter1_305_575_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> String getHexString(</span><span style="color: #0000ff">byte</span><span style="color: #000000">[] raw, </span><span style="color: #0000ff">int</span><span style="color: #000000"> len) </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_305_575_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_305_575_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">byte</span><span style="color: #000000">[] hex </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> </span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">2</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000"> len];<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">int</span><span style="color: #000000"> index </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">int</span><span style="color: #000000"> pos </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img id="Codehighlighter1_394_545_Open_Image" onclick="this.style.display='none'; Codehighlighter1_394_545_Open_Text.style.display='none'; Codehighlighter1_394_545_Closed_Image.style.display='inline'; Codehighlighter1_394_545_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_394_545_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_394_545_Closed_Text.style.display='none'; Codehighlighter1_394_545_Open_Image.style.display='inline'; Codehighlighter1_394_545_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"> </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">byte</span><span style="color: #000000"> b : raw) </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_394_545_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_394_545_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (pos </span><span style="color: #000000">&gt;=</span><span style="color: #000000"> len)<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> pos</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">int</span><span style="color: #000000"> v </span><span style="color: #000000">=</span><span style="color: #000000"> b </span><span style="color: #000000">&amp;</span><span style="color: #000000"> </span><span style="color: #000000">0xFF</span><span style="color: #000000">;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> hex[index</span><span style="color: #000000">++</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> HEX_CHAR_TABLE[v </span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000"> </span><span style="color: #000000">4</span><span style="color: #000000">];<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> hex[index</span><span style="color: #000000">++</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> HEX_CHAR_TABLE[v </span><span style="color: #000000">&amp;</span><span style="color: #000000"> </span><span style="color: #000000">0xF</span><span style="color: #000000">];<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /> }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /> </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> String(hex);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" /> }</span></span></div><br /><br /><br /><img src ="http://www.blogjava.net/ZouYonghui/aggbug/408007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2013-12-25 11:32 <a href="http://www.blogjava.net/ZouYonghui/archive/2013/12/25/408007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web项目Spring+hibernate+Spring mvc简单的添删改查</title><link>http://www.blogjava.net/ZouYonghui/archive/2013/06/01/400051.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Sat, 01 Jun 2013 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2013/06/01/400051.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/400051.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2013/06/01/400051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/400051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/400051.html</trackback:ping><description><![CDATA[<div>----------------------------------------------一.WEB项目的执行流程---------------------------------<br />1.web项目的运行流程大致如下：&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;启动tomcat，先到web.xml里面查看&lt;context-param&gt;&lt;listener&gt;&lt;filter&gt;&lt;servlet&gt;等等几个tag，查看里面的配置，查找相应的配置文件。<br />如下列文件所示：<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xmlns="<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a>" xmlns:web="<a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</a>" xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a> <a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</a>" id="WebApp_ID" version="2.5"&gt;<br />&nbsp; &lt;display-name&gt;SpringMVC12&lt;/display-name&gt;<br />&nbsp; &lt;welcome-file-list&gt;<br />&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;<br />&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;<br />&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;default.html&lt;/welcome-file&gt;<br />&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;default.htm&lt;/welcome-file&gt;<br />&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt;<br />&nbsp; &lt;/welcome-file-list&gt;<br />&nbsp; <br />&nbsp; &lt;context-param&gt;<br />&nbsp; &nbsp;&nbsp;&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />&nbsp; &nbsp;&nbsp;&lt;param-value&gt;classpath*:config/springAnnotation-*.xml&lt;/param-value&gt;<br />&nbsp; &lt;/context-param&gt;<br />&nbsp; <br />&nbsp; <br />&nbsp; &lt;listener&gt;<br />&nbsp; &nbsp; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br />&nbsp; &lt;/listener&gt;<br />&nbsp; <br />&nbsp; &lt;servlet&gt;<br />&nbsp; &nbsp;&lt;servlet-name&gt;springMVC&lt;/servlet-name&gt;<br />&nbsp; &nbsp;&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />&nbsp; &nbsp;&nbsp;&lt;init-param&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp;&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />&nbsp; &nbsp;&nbsp;&nbsp;&lt;param-value&gt;classpath*:config/springAnnotation-servlet.xml&lt;/param-value&gt;<br />&nbsp; &nbsp;&nbsp;&lt;/init-param&gt; <br />&nbsp; &nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; <br />&nbsp; &lt;/servlet&gt;<br />&nbsp; <br />&nbsp;&nbsp;&lt;filter&gt;<br />&nbsp;&nbsp;&lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;<br />&nbsp;&nbsp;&lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt;<br />&nbsp;&nbsp;&lt;init-param&gt;<br />&nbsp;&nbsp;&nbsp;&lt;param-name&gt;encoding&lt;/param-name&gt;<br />&nbsp;&nbsp;&nbsp;&lt;param-value&gt;UTF-8&lt;/param-value&gt;<br />&nbsp;&nbsp;&lt;/init-param&gt;<br />&nbsp;&nbsp;&lt;init-param&gt;<br />&nbsp;&nbsp;&nbsp;&lt;param-name&gt;forceEncoding&lt;/param-name&gt;<br />&nbsp;&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt;<br />&nbsp;&nbsp;&lt;/init-param&gt;<br />&nbsp;&lt;/filter&gt;<br />&nbsp;&lt;!-- encoding filter for jsp page --&gt;<br />&nbsp;&lt;filter-mapping&gt;<br />&nbsp;&nbsp;&lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;<br />&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&nbsp;&lt;/filter-mapping&gt;<br />&nbsp;<br />&nbsp; &lt;servlet-mapping&gt;<br />&nbsp; &nbsp;&lt;servlet-name&gt;springMVC&lt;/servlet-name&gt;<br />&nbsp; &nbsp;&lt;url-pattern&gt;/&lt;/url-pattern&gt;<br />&nbsp; &lt;/servlet-mapping&gt;<br />&nbsp; <br />&nbsp; &lt;filter&gt;<br />&nbsp; &nbsp;&nbsp;&lt;filter-name&gt;openSession&lt;/filter-name&gt;<br />&nbsp; &nbsp;&nbsp;&lt;filter-class&gt;org.springframework.orm.hibernate4.support.OpenSessionInViewFilter&lt;/filter-class&gt;<br />&nbsp; &lt;/filter&gt;<br />&nbsp; <br />&nbsp; &lt;filter-mapping&gt;<br />&nbsp; &nbsp;&lt;filter-name&gt;openSession&lt;/filter-name&gt;<br />&nbsp; &nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&nbsp; &lt;/filter-mapping&gt;<br />&lt;/web-app&gt;<br /><br />首先查看那几个标签，找到对应的配置文件，如&lt;context-param&gt;中配置的classpath*:config/springAnnotation-*.xml。<br /><br /><br />---------------------------------------2.到配置文件查看相关信息----------------------------------------------<br />（1）&lt;context-param&gt;里的classpath*:config/springAnnotation-*.xml，即在config目录下匹配springAnnotation-*.xml的文件<br /><br /><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zouyonghui/SpringMVC12/config.jpg" width="296" height="214" /><br /><br />（1.1）查看springAnnotation-core.xml<br /><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "<a href="http://www.springframework.org/dtd/spring-beans-2.0.dtd">http://www.springframework.org/dtd/spring-beans-2.0.dtd</a>" [<br />&lt;!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml"&gt;<br />]&gt;</p><p>&lt;beans&gt;<br />&nbsp;<br />&nbsp;&lt;import resource="classpath*:com/zyh/web/controller/spring/springAnnotation-import.xml"/&gt;<br />&lt;/beans&gt;<br /></p>对应的路径如下com/zyh/web/controller/spring/springAnnotation-import.xml<br />（1.2）查看springAnnotation-import.xml<br /><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "<a href="http://www.springframework.org/dtd/spring-beans-2.0.dtd">http://www.springframework.org/dtd/spring-beans-2.0.dtd</a>" [<br />&lt;!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml"&gt;<br />]&gt;</p><p>&lt;beans&gt;<br />&nbsp;&lt;bean id="userDao" class="com.zyh.web.controller.dao.UserDAO"&gt;<br />&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;<br />&nbsp;&lt;bean id="userManagerBase" class="com.zyh.web.controller.service.UserManager"&gt;<br />&nbsp;&nbsp;&lt;property name="userDao" ref="userDao"&gt;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;<br />&nbsp;&lt;bean id="userManager" parent="transactionBese"&gt;<br />&nbsp;&nbsp;&lt;property name="target" ref="userManagerBase"&gt;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;<br />&lt;/beans&gt;<br /><br />对应关于就已经配置在容器里面了。<br />（2.1）查看springAnnotation-hibernate.xml（配置数据源，sessionFactory，和事物）<br /></p><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "<a href="http://www.springframework.org/dtd/spring-beans-2.0.dtd">http://www.springframework.org/dtd/spring-beans-2.0.dtd</a>" [<br />&lt;!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml"&gt;<br />]&gt;</p><p>&lt;beans&gt;<br />&nbsp;&lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;<br />&nbsp;&nbsp;&lt;property name="driverClassName" value="com.mysql.jdbc.Driver"/&gt;<br />&nbsp;&nbsp;&lt;property name="url" value="jdbc:mysql://localhost/test1?useUnicode=true"/&gt;<br />&nbsp;&nbsp;&lt;property name="username" value="root"/&gt;<br />&nbsp;&nbsp;&lt;property name="password" value="root"/&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;<br />&nbsp;&lt;bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"&gt;<br />&nbsp;&nbsp;&lt;property name="dataSource" ref="dataSource"/&gt;<br />&nbsp;&nbsp;&lt;property name="hibernateProperties"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;props&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.MySQL5InnoDBDialect&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="hibernate.hbm2ddl.auto"&gt;update&lt;/prop&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="hibernate.show_sql"&gt;true&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="hiberante.format_sql"&gt;true&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&lt;/props&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="configLocations"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;list&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;value&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath*:com/zyh/web/controller/hibernate/hibernate.cfg.test.xml<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/value&gt;<br />&nbsp;&nbsp;&nbsp;&lt;/list&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;<br />&nbsp;&lt;bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"&gt;<br />&nbsp;&nbsp;&lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;<br />&nbsp;&lt;bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true"&gt;<br />&nbsp;&nbsp;&lt;property name="transactionManager" ref="transactionManager"&gt;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="transactionAttributes"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;props&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="add*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="update*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="insert*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="modify*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="delete*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;prop key="get*"&gt;PROPAGATION_NEVER&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&lt;/props&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&lt;/beans&gt;<br /><br />&nbsp;配置的对应的&nbsp;classpath*:com/zyh/web/controller/hibernate/hibernate.cfg.test.xml<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />（3）springAnnotation-servlet.xml，内容如下<br /></p><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;beans xmlns="<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>"&nbsp; <br />&nbsp;xmlns:context="<a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>"&nbsp; <br />&nbsp;xmlns:p="<a href="http://www.springframework.org/schema/p">http://www.springframework.org/schema/p</a>"&nbsp; <br />&nbsp;xmlns:mvc="<a href="http://www.springframework.org/schema/mvc">http://www.springframework.org/schema/mvc</a>"&nbsp; <br />&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"&nbsp; <br />&nbsp;xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/context/spring-context.xsd">http://www.springframework.org/schema/context/spring-context.xsd</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/mvc">http://www.springframework.org/schema/mvc</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd</a>"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 注解扫描包 --&gt;<br />&nbsp;&lt;context:component-scan base-package="com.zyh.web.controller" /&gt;<br />&nbsp;&lt;!-- 开启注解 --&gt;<br />&nbsp;<br />&nbsp;&lt;mvc:annotation-driven/&gt;<br />&nbsp;<br />&nbsp;&lt;!-- &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt;<br />&nbsp;&lt;bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"&gt;&lt;/bean&gt; --&gt;<br />&nbsp;&lt;!-- 静态资源访问 --&gt;<br />&nbsp; &lt;mvc:resources location="/img/" mapping="/img/**"/&gt;&nbsp; <br />&nbsp; &lt;mvc:resources location="/js/" mapping="/js/**"/&gt;&nbsp;&nbsp; <br />&nbsp;</p><p>&nbsp;&lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;<br />&nbsp;&nbsp;&lt;property name="prefix" value="/"&gt;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="suffix" value=".jsp"&gt;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;<br />&nbsp;&lt;bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;property name="defaultEncoding" value="utf-8" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxUploadSize" value="10485760000" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxInMemorySize" value="40960" /&gt;<br />&nbsp;&lt;/bean&gt;<br />&nbsp;&lt;/beans&gt;&nbsp; <br /><br /></p><p><br /><br /></p><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;beans xmlns="<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>"&nbsp; <br /> xmlns:context="<a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>"&nbsp; <br /> xmlns:p="<a href="http://www.springframework.org/schema/p">http://www.springframework.org/schema/p</a>"&nbsp; <br /> xmlns:mvc="<a href="http://www.springframework.org/schema/mvc">http://www.springframework.org/schema/mvc</a>"&nbsp; <br /> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"&nbsp; <br /> xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/context/spring-context.xsd">http://www.springframework.org/schema/context/spring-context.xsd</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/mvc">http://www.springframework.org/schema/mvc</a>&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd</a>"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 注解扫描包 --&gt;<br /> &lt;context:component-scan base-package="com.zyh.web.controller" /&gt;<br /> &lt;!-- 开启注解 --&gt;<br /> <br /> &lt;mvc:annotation-driven/&gt;<br /> <br /> &lt;!-- &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt;<br /> &lt;bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"&gt;&lt;/bean&gt; --&gt;<br /> &lt;!-- 静态资源访问 --&gt;<br />&nbsp; &lt;mvc:resources location="/img/" mapping="/img/**"/&gt;&nbsp; <br />&nbsp; &lt;mvc:resources location="/js/" mapping="/js/**"/&gt;&nbsp;&nbsp; <br /> </p><p> &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;<br />&nbsp; &lt;property name="prefix" value="/"&gt;&lt;/property&gt;<br />&nbsp; &lt;property name="suffix" value=".jsp"&gt;&lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;property name="defaultEncoding" value="utf-8" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxUploadSize" value="10485760000" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxInMemorySize" value="40960" /&gt;<br /> &lt;/bean&gt;<br /> &lt;/beans&gt;&nbsp; </p><p><p><br /> </p><p>springAnnotation-hibernate.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "<a href="http://www.springframework.org/dtd/spring-beans-2.0.dtd">http://www.springframework.org/dtd/spring-beans-2.0.dtd</a>" [<br />&lt;!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml"&gt;<br />]&gt;</p><p>&lt;beans&gt;<br /> &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;<br />&nbsp; &lt;property name="driverClassName" value="com.mysql.jdbc.Driver"/&gt;<br />&nbsp; &lt;property name="url" value="jdbc:mysql://localhost/test1?useUnicode=true"/&gt;<br />&nbsp; &lt;property name="username" value="root"/&gt;<br />&nbsp; &lt;property name="password" value="root"/&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"&gt;<br />&nbsp; &lt;property name="dataSource" ref="dataSource"/&gt;<br />&nbsp; &lt;property name="hibernateProperties"&gt;<br />&nbsp;&nbsp; &lt;props&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.MySQL5InnoDBDialect&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="hibernate.hbm2ddl.auto"&gt;update&lt;/prop&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="hibernate.show_sql"&gt;true&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="hiberante.format_sql"&gt;true&lt;/prop&gt;<br />&nbsp;&nbsp; &lt;/props&gt;<br />&nbsp; &lt;/property&gt;<br />&nbsp; &lt;property name="configLocations"&gt;<br />&nbsp;&nbsp; &lt;list&gt;<br />&nbsp;&nbsp;&nbsp; &lt;value&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; classpath*:com/zyh/web/controller/hibernate/hibernate.cfg.test.xml<br />&nbsp;&nbsp;&nbsp; &lt;/value&gt;<br />&nbsp;&nbsp; &lt;/list&gt;<br />&nbsp; &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"&gt;<br />&nbsp; &lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true"&gt;<br />&nbsp; &lt;property name="transactionManager" ref="transactionManager"&gt;&lt;/property&gt;<br />&nbsp; &lt;property name="transactionAttributes"&gt;<br />&nbsp;&nbsp; &lt;props&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="add*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="update*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="insert*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="modify*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="delete*"&gt;PROPAGATION_REQUIRED,-Exception&lt;/prop&gt;<br />&nbsp;&nbsp;&nbsp; &lt;prop key="get*"&gt;PROPAGATION_NEVER&lt;/prop&gt;<br />&nbsp;&nbsp; &lt;/props&gt;<br />&nbsp; &lt;/property&gt;<br /> &lt;/bean&gt;<br />&lt;/beans&gt;</p><p>这个写的有点乱，理清思路，其实很简单，就是配置spring容器,里面扫描了所有的bean及一些依赖关系，hibernate配置数据源建立数据库连接，SessionFactory用于管理数据库，还有就是Springmvc用于控制视图与后台之间的页面转向，传递数据，发送请求。<br />配置工作就到此结束，然后就是写bean,dao,service,control与联系配置文件的对应关系，实际开发中当然不会把配置文件都写好才来写java代码。我的做法是同时进行，漏了就相应的加上。<br /><br />-----------------------------------------------------------3对应的实现--------------------------------------<br />3.1 为了简单，我们建立一个单表的添删改查，就一个对象吧User，对应的表T_User,里面有userName和age两个属性，当然还要建立一个主键id,如下列代码所示:<br />com.zyh.web.controller.entity.User<br /></p><p>package com.zyh.web.controller.entity;</p><p>import javax.persistence.Column;<br />import javax.persistence.Entity;<br />import javax.persistence.GeneratedValue;<br />import javax.persistence.Id;<br />import javax.persistence.Table;</p><p>import org.hibernate.annotations.GenericGenerator;</p><p>@Entity<br />@Table(name="T_USER")<br />public class User {</p><p>&nbsp;@GeneratedValue(generator = "system-uuid")&nbsp; <br />&nbsp;&nbsp;&nbsp; @GenericGenerator(name = "system-uuid", strategy = "uuid") <br />&nbsp;&nbsp;&nbsp; @Column(length=32)<br />&nbsp;@Id<br />&nbsp;private String id;<br />&nbsp;<br />&nbsp;@Column(length=32)<br />&nbsp;private String userName;<br />&nbsp;<br />&nbsp;@Column(length=32)<br />&nbsp;private String age;<br />&nbsp;<br />&nbsp;public String getId() {<br />&nbsp;&nbsp;return id;<br />&nbsp;}<br />&nbsp;public void setId(String id) {<br />&nbsp;&nbsp;this.id = id;<br />&nbsp;}<br />&nbsp;public String getUserName() {<br />&nbsp;&nbsp;return userName;<br />&nbsp;}<br />&nbsp;public void setUserName(String userName) {<br />&nbsp;&nbsp;this.userName = userName;<br />&nbsp;}<br />&nbsp;public String getAge() {<br />&nbsp;&nbsp;return age;<br />&nbsp;}<br />&nbsp;public void setAge(String age) {<br />&nbsp;&nbsp;this.age = age;<br />&nbsp;}</p><p>}<br />3.2 dao层结构如下：接口IUserDAO与实现类UserDAO，我们实现添删改查，查询包括一个User和所以User<br />com.zyh.web.controller.dao.IUserDAO</p><p>package com.zyh.web.controller.dao;</p><p>import java.util.List;</p><p>import com.zyh.web.controller.entity.User;</p><p>public interface IUserDAO {</p><p>&nbsp;public void addUser(User user);<br />&nbsp;<br />&nbsp;public List&lt;User&gt; getAllUser();<br />&nbsp;<br />&nbsp;public User getUser(String id);<br />&nbsp;<br />&nbsp;public boolean delUser(String id);<br />&nbsp;<br />&nbsp;public boolean updateUser(User user);<br />}<br />实现类UserDAO:<br /></p><p>package com.zyh.web.controller.dao;</p><p>import java.util.List;</p><p>import org.hibernate.Query;<br />import org.hibernate.SessionFactory;</p><p>import com.zyh.web.controller.entity.User;</p><p>public class UserDAO implements IUserDAO {</p><p>&nbsp;private SessionFactory sessionFactory;<br />&nbsp;public void setSessionFactory(SessionFactory sessionFactory) {<br />&nbsp;&nbsp;this.sessionFactory = sessionFactory;<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public void addUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;sessionFactory.getCurrentSession().save(user);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public List&lt;User&gt; getAllUser() {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "from User";<br />&nbsp;&nbsp;Query query =&nbsp; sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;return query.list();<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public User getUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "from User u where u.id=?";<br />&nbsp;&nbsp;Query query = sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;query.setString(0, id);<br />&nbsp;&nbsp;return (User) query.uniqueResult();<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean delUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "delete User u where u.id=?";<br />&nbsp;&nbsp;Query query = sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;query.setString(0, id);<br />&nbsp;&nbsp;return (query.executeUpdate()&gt;0);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean updateUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "update User u set u.userName=?,u.age=? where u.id=?";<br />&nbsp;&nbsp;Query query = sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;query.setString(0, user.getUserName());<br />&nbsp;&nbsp;query.setString(1, user.getAge());<br />&nbsp;&nbsp;query.setString(2, user.getId());<br />&nbsp;&nbsp;return (query.executeUpdate()&gt;0);<br />&nbsp;}</p><p>}<br /></p><p>3.3 service层结构如下：接口IUserManager与实现类UserManager，我们实现添删改查，查询包括一个User和所以User<br />com.zyh.web.controller.service.IUserManager</p><p>package com.zyh.web.controller.service;</p><p>import java.util.List;</p><p>import com.zyh.web.controller.entity.User;</p><p>public interface IUserManager {<br />&nbsp;<br />&nbsp;public void addUser(User user);<br />&nbsp;<br />&nbsp;public List&lt;User&gt; getAllUser();<br />&nbsp;<br />&nbsp;public boolean delUser(String id);<br />&nbsp;<br />&nbsp;public User getUser(String id);<br />&nbsp;<br />&nbsp;public boolean updateUser(User user);<br />}<br />实现类UserManager.java</p><p>package com.zyh.web.controller.service;</p><p>import java.util.List;</p><p>import com.zyh.web.controller.dao.IUserDAO;<br />import com.zyh.web.controller.entity.User;</p><p>public class UserManager implements IUserManager {<br />&nbsp;<br />&nbsp;private IUserDAO userDao;<br />&nbsp;<br />&nbsp;public void setUserDao(IUserDAO userDao) {<br />&nbsp;&nbsp;this.userDao = userDao;<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public void addUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;userDao.addUser(user);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public List&lt;User&gt; getAllUser() {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.getAllUser();<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean delUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.delUser(id);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public User getUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.getUser(id);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean updateUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.updateUser(user);<br />&nbsp;}</p><p>}<br /></p><p>4.Control层结构如下：实现类UserController.java，代码如下：<br /></p><p>package com.zyh.web.controller;</p><p>import java.io.IOException;<br />import java.io.PrintWriter;<br />import java.util.List;</p><p>import javax.annotation.Resource;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;</p><p>import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;</p><p>import com.zyh.web.controller.entity.User;<br />import com.zyh.web.controller.service.IUserManager;</p><p>@Controller<br />@RequestMapping("/user")<br />public class UserController {<br />&nbsp;@Resource(name="userManager")<br />&nbsp;private IUserManager userManager;<br />&nbsp;<br />&nbsp;@RequestMapping("/toAddUser")<br />&nbsp;public String toAddUser(){<br />&nbsp;&nbsp;return "/addUser";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/addUser")<br />&nbsp;public String addUser(User user){<br />&nbsp;&nbsp;userManager.addUser(user);<br />&nbsp;&nbsp;return "redirect:/user/getAllUser";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/getAllUser")<br />&nbsp;public String getAllUser(HttpServletRequest request){<br />&nbsp;&nbsp;List&lt;User&gt; user = userManager.getAllUser();<br />&nbsp;&nbsp;request.setAttribute("user", user);<br />&nbsp;&nbsp;return "/userManager";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/delUser")<br />&nbsp;public void delUser(String id,HttpServletResponse response){<br />&nbsp;&nbsp;String result = "{\"result\":\"error\"}";<br />&nbsp;&nbsp;if(userManager.delUser(id)){<br />&nbsp;&nbsp;&nbsp;result = "{\"result\":\"success\"}";<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;response.setContentType("application/json");<br />&nbsp;&nbsp;PrintWriter pw;<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;pw = response.getWriter();<br />&nbsp;&nbsp;&nbsp;pw.write(result);<br />&nbsp;&nbsp;} catch (IOException e) {<br />&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/getUser")<br />&nbsp;public String getUser(String id,HttpServletRequest request){<br />&nbsp;&nbsp;User user = userManager.getUser(id);<br />&nbsp;&nbsp;request.setAttribute("user", user);<br />&nbsp;&nbsp;return "editUser";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/updateUser")<br />&nbsp;public String updateUser(User user,HttpServletRequest request){<br />&nbsp;&nbsp;if(userManager.updateUser(user)){<br />&nbsp;&nbsp;&nbsp;userManager.getUser(user.getId());<br />&nbsp;&nbsp;&nbsp;request.setAttribute("user", user);<br />&nbsp;&nbsp;&nbsp;return "/editUser";<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;return "/error";<br />&nbsp;&nbsp;}<br />&nbsp;}<br />}<br /></p><table style="display: inline-block;" id="span1370058800032"><tbody><tr><td>--</td></tr></tbody></table><p>&nbsp;<table style="display: inline-block;" id="span1370058378901"><tbody><tr><td>--</td></tr></tbody></table><p>package com.zyh.web.controller;</p><p>import java.io.IOException;<br />import java.io.PrintWriter;<br />import java.util.List;</p><p>import javax.annotation.Resource;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;</p><p>import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.RequestMapping;</p><p>import com.zyh.web.controller.entity.User;<br />import com.zyh.web.controller.service.IUserManager;</p><p>@Controller<br />@RequestMapping("/user")<br />public class UserController {<br />&nbsp;@Resource(name="userManager")<br />&nbsp;private IUserManager userManager;<br />&nbsp;<br />&nbsp;@RequestMapping("/toAddUser")<br />&nbsp;public String toAddUser(){<br />&nbsp;&nbsp;return "/addUser";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/addUser")<br />&nbsp;public String addUser(User user){<br />&nbsp;&nbsp;userManager.addUser(user);<br />&nbsp;&nbsp;return "redirect:/user/getAllUser";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/getAllUser")<br />&nbsp;public String getAllUser(HttpServletRequest request){<br />&nbsp;&nbsp;List&lt;User&gt; user = userManager.getAllUser();<br />&nbsp;&nbsp;request.setAttribute("user", user);<br />&nbsp;&nbsp;return "/userManager";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/delUser")<br />&nbsp;public void delUser(String id,HttpServletResponse response){<br />&nbsp;&nbsp;String result = "{\"result\":\"error\"}";<br />&nbsp;&nbsp;if(userManager.delUser(id)){<br />&nbsp;&nbsp;&nbsp;result = "{\"result\":\"success\"}";<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;response.setContentType("application/json");<br />&nbsp;&nbsp;PrintWriter pw;<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;pw = response.getWriter();<br />&nbsp;&nbsp;&nbsp;pw.write(result);<br />&nbsp;&nbsp;} catch (IOException e) {<br />&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/getUser")<br />&nbsp;public String getUser(String id,HttpServletRequest request){<br />&nbsp;&nbsp;User user = userManager.getUser(id);<br />&nbsp;&nbsp;request.setAttribute("user", user);<br />&nbsp;&nbsp;return "editUser";<br />&nbsp;}<br />&nbsp;<br />&nbsp;@RequestMapping("/updateUser")<br />&nbsp;public String updateUser(User user,HttpServletRequest request){<br />&nbsp;&nbsp;if(userManager.updateUser(user)){<br />&nbsp;&nbsp;&nbsp;userManager.getUser(user.getId());<br />&nbsp;&nbsp;&nbsp;request.setAttribute("user", user);<br />&nbsp;&nbsp;&nbsp;return "/editUser";<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;return "/error";<br />&nbsp;&nbsp;}<br />&nbsp;}<br />}<br /></p><p>&nbsp;</p>&nbsp;<p>&nbsp;</p><p>&nbsp;</p><p><br /><br />&nbsp;</p><p>package com.zyh.web.controller.service;</p><p>import java.util.List;</p><p>import com.zyh.web.controller.dao.IUserDAO;<br />import com.zyh.web.controller.entity.User;</p><p>public class UserManager implements IUserManager {<br />&nbsp;<br />&nbsp;private IUserDAO userDao;<br />&nbsp;<br />&nbsp;public void setUserDao(IUserDAO userDao) {<br />&nbsp;&nbsp;this.userDao = userDao;<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public void addUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;userDao.addUser(user);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public List&lt;User&gt; getAllUser() {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.getAllUser();<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean delUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.delUser(id);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public User getUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.getUser(id);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean updateUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;return userDao.updateUser(user);<br />&nbsp;}</p><p>}<br /></p><p><table style="display: inline-block;" id="span1370058190098"><tbody><tr><td>--</td></tr></tbody></table><p><p>package com.zyh.web.controller.service;</p><p>import java.util.List;</p><p>import com.zyh.web.controller.entity.User;</p><p>public interface IUserManager {<br />&nbsp;<br />&nbsp;public void addUser(User user);<br />&nbsp;<br />&nbsp;public List&lt;User&gt; getAllUser();<br />&nbsp;<br />&nbsp;public boolean delUser(String id);<br />&nbsp;<br />&nbsp;public User getUser(String id);<br />&nbsp;<br />&nbsp;public boolean updateUser(User user);<br />}<br /></p><p>&nbsp;</p><table style="display: inline-block;" id="span1370058038639"><tbody><tr><td>--</td></tr></tbody></table>3.2 dao层结构如下：接口IUserDAO与实现类UserDAO，我们实现添删改查，查询包括一个User和所以User<br />com.zyh.web.controller.dao.IUserDAO<table style="display: inline-block;" id="span1370057921001"><tbody><tr><td>--</td></tr></tbody></table><p>package com.zyh.web.controller.dao;</p><p>import java.util.List;</p><p>import org.hibernate.Query;<br />import org.hibernate.SessionFactory;</p><p>import com.zyh.web.controller.entity.User;</p><p>public class UserDAO implements IUserDAO {</p><p>&nbsp;private SessionFactory sessionFactory;<br />&nbsp;public void setSessionFactory(SessionFactory sessionFactory) {<br />&nbsp;&nbsp;this.sessionFactory = sessionFactory;<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public void addUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;sessionFactory.getCurrentSession().save(user);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public List&lt;User&gt; getAllUser() {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "from User";<br />&nbsp;&nbsp;Query query =&nbsp; sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;return query.list();<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public User getUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "from User u where u.id=?";<br />&nbsp;&nbsp;Query query = sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;query.setString(0, id);<br />&nbsp;&nbsp;return (User) query.uniqueResult();<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean delUser(String id) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "delete User u where u.id=?";<br />&nbsp;&nbsp;Query query = sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;query.setString(0, id);<br />&nbsp;&nbsp;return (query.executeUpdate()&gt;0);<br />&nbsp;}</p><p>&nbsp;@Override<br />&nbsp;public boolean updateUser(User user) {<br />&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;String hql = "update User u set u.userName=?,u.age=? where u.id=?";<br />&nbsp;&nbsp;Query query = sessionFactory.getCurrentSession().createQuery(hql);<br />&nbsp;&nbsp;query.setString(0, user.getUserName());<br />&nbsp;&nbsp;query.setString(1, user.getAge());<br />&nbsp;&nbsp;query.setString(2, user.getId());<br />&nbsp;&nbsp;return (query.executeUpdate()&gt;0);<br />&nbsp;}</p><p>}<br /></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><br /><br /><br />&nbsp;</p><p>package com.zyh.web.controller.dao;</p><p>import java.util.List;</p><p>import com.zyh.web.controller.entity.User;</p><p>public interface IUserDAO {</p><p>&nbsp;public void addUser(User user);<br />&nbsp;<br />&nbsp;public List&lt;User&gt; getAllUser();<br />&nbsp;<br />&nbsp;public User getUser(String id);<br />&nbsp;<br />&nbsp;public boolean delUser(String id);<br />&nbsp;<br />&nbsp;public boolean updateUser(User user);<br />}<br /></p><p><table style="display: inline-block;" id="span1370057686972"><tbody><tr><td>--</td></tr></tbody></table><p>package com.zyh.web.controller.entity;</p><p>import javax.persistence.Column;<br />import javax.persistence.Entity;<br />import javax.persistence.GeneratedValue;<br />import javax.persistence.Id;<br />import javax.persistence.Table;</p><p>import org.hibernate.annotations.GenericGenerator;</p><p>@Entity<br />@Table(name="T_USER")<br />public class User {</p><p>&nbsp;@GeneratedValue(generator = "system-uuid")&nbsp; <br />&nbsp;&nbsp;&nbsp; @GenericGenerator(name = "system-uuid", strategy = "uuid") <br />&nbsp;&nbsp;&nbsp; @Column(length=32)<br />&nbsp;@Id<br />&nbsp;private String id;<br />&nbsp;<br />&nbsp;@Column(length=32)<br />&nbsp;private String userName;<br />&nbsp;<br />&nbsp;@Column(length=32)<br />&nbsp;private String age;<br />&nbsp;<br />&nbsp;public String getId() {<br />&nbsp;&nbsp;return id;<br />&nbsp;}<br />&nbsp;public void setId(String id) {<br />&nbsp;&nbsp;this.id = id;<br />&nbsp;}<br />&nbsp;public String getUserName() {<br />&nbsp;&nbsp;return userName;<br />&nbsp;}<br />&nbsp;public void setUserName(String userName) {<br />&nbsp;&nbsp;this.userName = userName;<br />&nbsp;}<br />&nbsp;public String getAge() {<br />&nbsp;&nbsp;return age;<br />&nbsp;}<br />&nbsp;public void setAge(String age) {<br />&nbsp;&nbsp;this.age = age;<br />&nbsp;}</p><p>}<br /></p><p><table style="display: inline-block;" id="span1370056987394"><tbody><tr><td>--</td></tr></tbody></table><p><br />&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>&nbsp;<p>&nbsp;</p><p><br />&nbsp;</p></div><img src ="http://www.blogjava.net/ZouYonghui/aggbug/400051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2013-06-01 10:49 <a href="http://www.blogjava.net/ZouYonghui/archive/2013/06/01/400051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将字节数组转换为ImageView可调用的Bitmap对象</title><link>http://www.blogjava.net/ZouYonghui/archive/2013/05/29/399913.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Wed, 29 May 2013 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2013/05/29/399913.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/399913.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2013/05/29/399913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/399913.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/399913.html</trackback:ping><description><![CDATA[<p><span class="comment">/** <br /></span><span class="comment">* @param 将字节数组转换为ImageView可调用的Bitmap对象 </span></p><p><span class="comment">&nbsp;* @param bytes </span></p><p><span class="comment">&nbsp;* @param opts </span></p><p><span class="comment">&nbsp;* @return Bitmap </span></p><p><span class="comment">&nbsp;*/</span><span> </span></p><p><span>&nbsp;</span><span class="keyword">public</span><span> </span><span class="keyword">static</span><span> Bitmap getPicFromBytes(</span><span class="keyword">byte</span><span>[] bytes, </span><span>BitmapFactory.Options opts) { </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span> (bytes != </span><span class="keyword">null</span><span>) </span></p><p><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if</span><span> (opts != </span><span class="keyword">null</span><span>)&nbsp;<br /></span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span> BitmapFactory.decodeByteArray(bytes, </span><span class="number"><span style="color: rgb(192, 0, 0);">0</span></span><span>, bytes.length,&nbsp;</span><span>&nbsp;opts);&nbsp;<br /></span><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</span><span> </span></p><p><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return</span><span> BitmapFactory.decodeByteArray(bytes, </span><span class="number"><span style="color: rgb(192, 0, 0);">0</span></span><span>, bytes.length);&nbsp;<br /></span><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return</span><span> </span><span class="keyword">null</span><span>; </span></p><p><span>}<br /><br />这里我们主要来介绍一个BitmapFactory.Options这个类<br />&nbsp;&nbsp;&nbsp;&nbsp;</p><p><span style="color: rgb(255, 0, 0);">BitmapFactory.Options这个类的详解如下：</span><br /></p><table cellspacing="0"><tbody><tr><td><p align="right">public <span>Bitmap</span></p></td><td><p align="left"><span>inBitmap</span></p></td><td><p align="left">If set, decode methods that take the Options object will attempt to reuse this bitmap when loading content.</p></td></tr><tr><td><p align="right">public int</p></td><td><p align="left"><span>inDensity</span></p></td><td><p align="left">The pixel density to use for the bitmap.</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>inDither</span></p></td><td><p align="left">If dither is true, the decoder will attempt to dither the decoded image.</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>inInputShareable</span></p></td><td><p align="left">This field works in conjuction with inPurgeable.</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>inJustDecodeBounds</span></p></td><td><p align="left">If set to true, the decoder will return null (no bitmap), but the out&#8230;</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>inMutable</span></p></td><td><p align="left">If set, decode methods will always return a mutable Bitmap instead of an immutable one.</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>inPreferQualityOverSpeed</span></p></td><td><p align="left">If inPreferQualityOverSpeed is set to true, the decoder will try to decode the reconstructed image to a higher quality even at the expense of the decoding speed.</p></td></tr><tr><td><p align="right">public<span>Bitmap.Config</span></p></td><td><p align="left"><span>inPreferredConfig</span></p></td><td><p align="left">If this is non-null, the decoder will try to decode into this internal configuration.</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>inPurgeable</span></p></td><td><p align="left">If this is set to true, then the resulting bitmap will allocate its pixels such that they can be purged if the system needs to reclaim memory.</p></td></tr><tr><td><p align="right">public int</p></td><td><p align="left"><span>inSampleSize</span></p></td><td><p align="left">If set to a value &gt; 1, requests the decoder to subsample the original image, returning a smaller image to save memory.</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>inScaled</span></p></td><td><p align="left">When this flag is set, if <span>inDensity</span> and <span>inTargetDensity</span> are not 0, the bitmap will be scaled to match <span>inTargetDensity</span> when loaded, rather than relying on the graphics system scaling it each time it is drawn to a Canvas.</p></td></tr><tr><td><p align="right">public int</p></td><td><p align="left"><span>inScreenDensity</span></p></td><td><p align="left">The pixel density of the actual screen that is being used.</p></td></tr><tr><td><p align="right">public int</p></td><td><p align="left"><span>inTargetDensity</span></p></td><td><p align="left">The pixel density of the destination this bitmap will be drawn to.</p></td></tr><tr><td><p align="right">public byte[]</p></td><td><p align="left"><span>inTempStorage</span></p></td><td><p align="left">Temp storage to use for decoding.</p></td></tr><tr><td><p align="right">public boolean</p></td><td><p align="left"><span>mCancel</span></p></td><td><p align="left">Flag to indicate that cancel has been called on this object.</p></td></tr><tr><td><p align="right">public int</p></td><td><p align="left"><span>outHeight</span></p></td><td><p align="left">The resulting height of the bitmap, set independent of the state of inJustDecodeBounds.</p></td></tr><tr><td><p align="right">public <span>String</span></p></td><td><p align="left"><span>outMimeType</span></p></td><td><p align="left">If known, this string is set to the mimetype of the decoded image.</p></td></tr><tr><td><p align="right">public int</p></td><td><p align="left"><span>outWidth</span></p></td><td><p align="left">The resulting width of the bitmap, set independent of the state of inJustDecodeBounds.</p></td></tr></tbody></table><p>这个表格是从android sdk文档里摘出来的，简单看一下说明就明白是什么意思了。<br />下面我们回到我们的主题上来：怎样获取图片的大小？<br />思路很简单：<br />首先我们把这个图片转成Bitmap，然后再利用Bitmap的getWidth()和getHeight()方法就可以取到图片的宽高了。<br />新问题又来了，在通过BitmapFactory.decodeFile(String path)方法将突破转成Bitmap时，遇到大一些的图片，我们经常会遇到OOM(Out Of Memory)的问题。怎么避免它呢？<br />这就用到了我们上面提到的BitmapFactory.Options这个类。</p><p>BitmapFactory.Options这个类，有一个字段叫做 <span style="font-family: arial, sans-serif;"><span>inJustDecodeBounds</span></span> 。SDK中对这个成员的说明是这样的：<br /><span style="font-family: arial, sans-serif;"><span>If set to true, the decoder will return null (no bitmap), but the out&#8230;</span></span><br />也就是说，如果我们把它设为true，那么BitmapFactory.decodeFile(String path, Options opt)并不会真的返回一个Bitmap给你，它仅仅会把它的宽，高取回来给你，这样就不会占用太多的内存，也就不会那么频繁的发生OOM了。<br />示例代码如下：</p><div><div id="code_0bu"><ol><li>BitmapFactory.Options options = new BitmapFactory.Options();</li><li>options.inJustDecodeBounds = true;</li><li>Bitmap bmp = BitmapFactory.decodeFile(path, options);</li><li>/* 这里返回的bmp是null */</li></ol></div><p><em>复制代码</em></p></div><p>这段代码之后，options.outWidth 和 options.outHeight就是我们想要的宽和高了。</p><p>有了宽，高的信息，我们怎样在图片不变形的情况下获取到图片指定大小的缩略图呢？<br />比如我们需要在图片不变形的前提下得到宽度为200的缩略图。<br />那么我们需要先计算一下缩放之后，图片的高度是多少<span> </span></p><div><div id="code_2Ql"><ol><li>/* 计算得到图片的高度 */</li><li>/* 这里需要主意，如果你需要更高的精度来保证图片不变形的话，需要自己进行一下数学运算 */</li><li>int height = options.outHeight * 200 / options.outWidth;</li><li></li><li>options.outWidth = 200；</li><li>options.outHeight = height;<span> </span></li><li>/* 这样才能真正的返回一个Bitmap给你 */</li><li>options.inJustDecodeBounds = false;</li><li>Bitmap bmp = BitmapFactory.decodeFile(path, options);</li><li>image.setImageBitmap(bmp);</li></ol></div><p><em>复制代码</em></p></div><p><span style="color: rgb(255, 0, 0);">这样虽然我们可以得到我们期望大小的ImageView<br />但是在执行BitmapFactory.decodeFile(path, options);时，并没有节约内存。</span><span style="color: rgb(255, 0, 0);">要想节约内存，还需要用到BitmapFactory.Options这个类里的 <span style="font-family: arial, sans-serif;"><span><a href="http://www.lephone.net/file:///E:/android-sdk-windows-1.5_3.0/docs/reference/android/graphics/BitmapFactory.Options.html#inSampleSize" target="_blank">inSampleSize</a></span></span> 这个成员变量。</span><br /><span style="color: rgb(255, 0, 0);">我们可以根据图片实际的宽高和我们期望的宽高来计算得到这个值。</span></p><div><div id="code_p2G"><ol><li>inSampleSize = options.outWidth / 200;</li></ol></div></div><p><span style="font-family: arial, sans-serif;"><span>另外，为了节约内存我们还可以使用下面的几个字段：<br /></span></span></p><div><div id="code_SsO"><ol><li>options.inPreferredConfig = Bitmap.Config.ARGB_4444;&nbsp;&nbsp;&nbsp; // 默认是Bitmap.Config.ARGB_8888</li><li></li><li>/* 下面两个字段需要组合使用 */</li><li>options.inPurgeable = true;</li><li>options.inInputShareable = true;</li></ol></div></div><p>&nbsp;&nbsp;&nbsp;&nbsp;</span></p><img src ="http://www.blogjava.net/ZouYonghui/aggbug/399913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2013-05-29 11:36 <a href="http://www.blogjava.net/ZouYonghui/archive/2013/05/29/399913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;context-param&gt;与&lt;init-param&gt;的区别与作用</title><link>http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399811.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Mon, 27 May 2013 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399811.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/399811.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/399811.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/399811.html</trackback:ping><description><![CDATA[<div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">&lt;context-param&gt;的作用:<br style="margin: 0px; padding: 0px; line-height: 22px;" />web.xml的配置中&lt;context-param&gt;配置作用<br style="margin: 0px; padding: 0px; line-height: 22px;" /><strong style="margin: 0px; padding: 0px; line-height: 22px;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0); line-height: 22px;">1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: &lt;listener&gt;&lt;/listener&gt; 和 &lt;context-param&gt;&lt;/context-param&gt;</span></strong></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><strong style="margin: 0px; padding: 0px; line-height: 22px;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0); line-height: 22px;">2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.</span></strong></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><strong style="margin: 0px; padding: 0px; line-height: 22px;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0); line-height: 22px;">3.容器将&lt;context-param&gt;&lt;/context-param&gt;转化为键值对,并交给ServletContext.</span></strong></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><strong style="margin: 0px; padding: 0px; line-height: 22px;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0); line-height: 22px;">4.容器创建&lt;listener&gt;&lt;/listener&gt;中的类实例,即创建监听.</span></strong></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0); line-height: 22px;"><strong style="margin: 0px; padding: 0px; line-height: 22px;">5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得ServletContext = ServletContextEvent.getServletContext();</strong></span><br style="margin: 0px; padding: 0px; line-height: 22px;" />context-param的值 = ServletContext.getInitParameter("context-param的键");</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.<br style="margin: 0px; padding: 0px; line-height: 22px;" />换句话说,这个时候,你对&lt;context-param&gt;中的键值做的操作,将在你的WEB项目完全启动之前被执行.</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">7.举例.你可能想在项目启动之前就打开数据库.<br style="margin: 0px; padding: 0px; line-height: 22px;" />那么这里就可以在&lt;context-param&gt;中设置数据库的连接方式,在监听类中初始化数据库的连接.</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">8.这个监听是自己写的一个类,除了初始化方法,它还有销毁方法.用于关闭应用前释放资源.比如说数据库连接的关闭.</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">如:<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;!-- 加载spring的配置文件 --&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-value&gt;/WEB-INF/applicationContext.xml,/WEB-INF/act<wbr style="margin: 0px; padding: 0px; line-height: 22px;"><wbr><wbr><wbr>ion-servlet.xml,/WEB-</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">INF/jason-servlet.xml&lt;/param-value&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;listener&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/listener&gt;</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><strong style="margin: 0px; padding: 0px; line-height: 22px;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0); line-height: 22px;">又如: ---&gt;自定义context-param,且自定义listener来获取这些信息</span></strong></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">&lt;context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-name&gt;urlrewrite&lt;/param-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-value&gt;false&lt;/param-value&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-name&gt;cluster&lt;/param-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-value&gt;false&lt;/param-value&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-name&gt;servletmapping&lt;/param-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-value&gt;*.bbscs&lt;/param-value&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-name&gt;poststoragemode&lt;/param-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;param-value&gt;1&lt;/param-value&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;listener&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;listener-class&gt;com.laoer.bbscs.web.servlet.SysListener&lt;/listener-class&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/listener&gt;</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">public class SysListener<span class="Apple"> </span><strong style="margin: 0px; padding: 0px; line-height: 22px;">extends HttpServlet implements ServletContextListener</strong><span class="Apple"> </span>{</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">private static final Log logger = LogFactory.getLog(SysListener.class);</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">public void<span class="Apple"> </span><strong style="margin: 0px; padding: 0px; line-height: 22px;">contextDestroyed(ServletContextEvent sce)</strong><span class="Apple"> </span>{</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">&nbsp; <span class="Apple"> </span><strong style="margin: 0px; padding: 0px; line-height: 22px;">//用于在容器关闭时,操作</strong><br style="margin: 0px; padding: 0px; line-height: 22px;" />}</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><strong style="margin: 0px; padding: 0px; line-height: 22px;">//用于在容器开启时,操作</strong></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">public void<span class="Apple"> </span><strong style="margin: 0px; padding: 0px; line-height: 22px;">contextInitialized(ServletContextEvent sce)</strong><span class="Apple"> </span>{<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; String rootpath =<span class="Apple"> </span><strong style="margin: 0px; padding: 0px; line-height: 22px;">sce.getServletContext().getRealPath("/");<br style="margin: 0px; padding: 0px; line-height: 22px;" /></strong>&nbsp;&nbsp; System.out.println("-------------rootPath:"+rootpath);</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">&nbsp;&nbsp; if (rootpath != null) {<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; rootpath = rootpath.replaceAll("<a style="margin: 0px; padding: 0px; color: rgb(106, 165, 13); line-height: 22px; font-size: 1em; text-decoration: none;">\\\\</a>", "/");<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; } else {<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; rootpath = "/";<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; }<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; if (!rootpath.endsWith("/")) {<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; rootpath = rootpath + "/";<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; }<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; Constant.ROOTPATH = rootpath;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; logger.info("Application Run Path:" + rootpath);<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; String urlrewrtie =<span class="Apple"> </span><strong style="margin: 0px; padding: 0px; line-height: 22px;">sce.getServletContext().getInitParameter("urlrewrite");</strong><br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; boolean burlrewrtie = false;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; if (urlrewrtie != null) {<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; burlrewrtie = Boolean.parseBoolean(urlrewrtie);<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; }<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; Constant.USE_URL_REWRITE = burlrewrtie;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; logger.info("Use Urlrewrite:" + burlrewrtie);<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; 其它略之.... </div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">&nbsp;&nbsp; }</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">}<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; /*最终输出<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; -------------rootPath:D:\tomcat_bbs\webapps\BBSCS_8_0_3\<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; 2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">Application Run Path:D:/tomcat_bbs/webapps/BBSCS_8_0_3/<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; 2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">Use Urlrewrite:true<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; 2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">Use Cluster:false<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; 2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">SERVLET MAPPING:*.bbscs<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; 2009-06-09 21:51:46,573 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">Post Storage Mode:1<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp; */</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><strong style="margin: 0px; padding: 0px; line-height: 22px;"><span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0); line-height: 28px; font-size: medium;">context-param和init-param区别</span></strong><br style="margin: 0px; padding: 0px; line-height: 22px;" />web.xml里面可以定义两种参数：<br style="margin: 0px; padding: 0px; line-height: 22px;" /><strong style="margin: 0px; padding: 0px; line-height: 22px;">(1)application范围内的参数，存放在servletcontext中，在web.xml中配置如下：<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;context-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;context/param&lt;/param-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;avalible during application&lt;/param-value&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/context-param&gt;</strong></div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;"><strong style="margin: 0px; padding: 0px; line-height: 22px;">(2)servlet范围内的参数，只能在servlet的init()方法中取得，</strong>在web.xml中配置如下：<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;servlet&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;MainServlet&lt;/servlet-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;com.wes.controller.MainServlet&lt;/servlet-class&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;param1&lt;/param-name&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;avalible in servlet init()&lt;/param-value&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;0&lt;/load-on-startup&gt;<br style="margin: 0px; padding: 0px; line-height: 22px;" />&lt;/servlet&gt;</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">在servlet中可以通过代码分别取用：<br style="margin: 0px; padding: 0px; line-height: 22px;" />package com.wes.controller;</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">imp<wbr style="margin: 0px; padding: 0px; line-height: 22px;"><wbr><wbr><wbr>ort javax.servlet.ServletException;<br style="margin: 0px; padding: 0px; line-height: 22px;" />imp<wbr style="margin: 0px; padding: 0px; line-height: 22px;"><wbr><wbr><wbr>ort javax.servlet.http.HttpServlet;</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">public class MainServlet extends HttpServlet ...{</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">&nbsp;&nbsp;&nbsp; public MainServlet() ...{<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super();<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp; }<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp; public void init() throws ServletException ...{<br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("下面的两个参数param1是在servlet中存放的");<br style="margin: 0px; padding: 0px; line-height: 22px;" /><strong style="margin: 0px; padding: 0px; line-height: 22px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(this.getInitParameter("param1"));</strong><br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("下面的参数是存放在servletcontext中的");<br style="margin: 0px; padding: 0px; line-height: 22px;" /><strong style="margin: 0px; padding: 0px; line-height: 22px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(getServletContext().getInitParameter("context/param"));</strong><br style="margin: 0px; padding: 0px; line-height: 22px;" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="margin: 0px; padding: 0px; line-height: 22px;" />}</div><div style="margin: 0px; padding: 0px; line-height: 22px; zoom: 1;">第一种参数在servlet里面可以通过getServletContext().getInitParameter("context/param")得到<br style="margin: 0px; padding: 0px; line-height: 22px;" />第二种参数只能在servlet的init()方法中通过this.getInitParameter("param1")取得.</div><br /><br />文章来源自：<a href="http://www.cnblogs.com/hzj-/articles/1689836.html">http://www.cnblogs.com/hzj-/articles/1689836.html</a><img src ="http://www.blogjava.net/ZouYonghui/aggbug/399811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2013-05-27 11:45 <a href="http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>回调函数</title><link>http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399805.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Mon, 27 May 2013 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399805.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/399805.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/399805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/399805.html</trackback:ping><description><![CDATA[
 
回调函数其实用起来比较简单，主要有三个部分<br />第一部分：定义一个接口用于回调；<br />如下所示：<br />public interface CallBackInterface {<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void doSome();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void exectueMethod();<br />}<br /><br />第二部分：在一个类里面把它当做参数并用到该参数<br />如下所示：</p><p>public class MethodB {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public double getTime(CallBackInterface callBack){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long start = System.currentTimeMillis();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callBack.exectueMethod();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long end = System.currentTimeMillis();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("cost time="+(end-start));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return end-start;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />第三部分：在另外一个类里面调用到getTime方法并实现回调函数<br />如下所示:</p><p>public class MethodA {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodB b = new MethodB();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double d = b.getTime(new CallBackInterface() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void exectueMethod() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new MethodA().testMethod();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void doSome() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("d="+d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void testMethod(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;10000;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</p><p>输出结果：</p><p>cost time=31<br />d=31.0<br /></p><p>理解&#8220;回调函数&#8221; </p><div><pre><span style="font-size: 14px;">所谓回调，就是客户程序CLIENT调用服务程序SERVER中的某个函数SA，然后SERVER又在某个时候反过来调用CLIENT中的某个函数CB，对于CLIENT来说，这个CB便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。 </span><br /><span style="font-size: 14px;">一般说来，CLIENT不会自己调用CB，CLIENT提供CB的目的就是让SERVER来调用它，而且是CLIENT不得不提供。由于SERVER并不知道CLIENT提供的CB叫甚名谁，所以SERVER会约定CB的接口规范（函数原型），然后由CLIENT提前通过SERVER的一个函数R告诉SERVER自己将要使用CB函数，这个过程称为回调函数的注册，R称为注册函数。Web SERVERerviCliente以及Java的RMI都用到回调机制，可以访问远程服务器程序。 </span><br /><br /><span style="font-size: 14px;">下面举个通俗的例子： </span><br /><span style="font-size: 14px;">某天，我打电话向你请教问题，当然是个难题，:)，你一时想不出解决方法，我又不能拿着电话在那里傻等，于是我们约定：等你想出办法后打手机通知我，这样，我就挂掉电话办其它事情去了。过了XX分钟，我的手机响了，你兴高采烈的说问题已经搞定，应该如此这般处理。故事到此结束。这个例子说明了&#8220;异步＋回调&#8221;的编程模式。其中，你后来打手机告诉我结果便是一个&#8220;回调&#8221;过程；我的手机号码必须在以前告诉你，这便是注册回调函数；我的手机号码应该有效并且手机能够接收到你的呼叫，这是回调函数必须符合接口规范。 </span><br /><span style="font-size: 14px;">通过上面个人感觉到回调函数更多的应用就是结合异步。比如：ajax中jServer通过组件和服务器的异步通信。 </span><br /><br /><span style="font-size: 14px;">什么是回调函数 </span><br /><br /><span style="font-size: 14px;">精妙比喻:回调函数还真有点像您随身带的BP机：告诉别人号码，在它有事情时Call您 </span><br /><span style="font-size: 14px;">回调用于层间协作，上层将本层函数安装在下层，这个函数就是回调，而下层在一定条件下触发回调，例如作为一个驱动，是一个底层，他在收到一个数据时，除了完成本层的处理工作外，还将进行回调，将这个数据交给上层应用层来做进一步处理，这在分层的数据通信中很普遍。 </span><br /><span style="font-size: 14px;">其实回调和API非常接近，他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用，一般这个函数对高层都是已知的；而回调正好相反，他是高层提供给底层的调用，对于低层他是未知的，必须由高层进行安装，这个安装函数其实就是一个低层提供的API，安装后低层不知道这个回调的名字，但它通过一个函数指针来保存这个回调，在需要调用时，只需引用这个函数指针和相关的参数指针。</span><br /><br /><span style="font-size: 14px;">其实：回调就是该函数写在高层，低层通过一个函数指针保存这个函数，在某个事件的触发下，低层通过该函数指针调用高层那个函数。</span></pre><pre><span style="font-size: 14px;">【参考】</span></pre><pre><span style="font-size: 14px;">http://blog.csdn.net/sweetwxh/article/details/2067139</span></pre><pre><span style="font-size: 14px;">http://liutiemeng.blog.51cto.com/120361/18874</span></pre><pre><span style="font-size: 14px;">http://kidult.iteye.com/blog/148982</span></pre></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><br /><br /><br />&nbsp;</p><table style="display: inline-block;" id="span1369624147678"><tbody><tr><td>--</td></tr></tbody></table><p>public static void main(String[] args) {<br />&nbsp;&nbsp;MethodB b = new MethodB();<br />&nbsp;&nbsp;double d = b.getTime(new CallBackInterface() {<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;public void exectueMethod() {<br />&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;&nbsp;&nbsp;new MethodA().testMethod();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;public void doSome() {<br />&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated method stub<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;});<br />&nbsp;&nbsp;System.out.println("d="+d);<br />&nbsp;}<br />&nbsp;public void testMethod(){<br />&nbsp;&nbsp;for(int i=0;i&lt;10000;i++)<br />&nbsp;&nbsp;&nbsp;System.out.print("");<br />&nbsp;}</p><p><br />&nbsp;</p><br /><img src ="http://www.blogjava.net/ZouYonghui/aggbug/399805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2013-05-27 11:13 <a href="http://www.blogjava.net/ZouYonghui/archive/2013/05/27/399805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>decorators.xml的用法</title><link>http://www.blogjava.net/ZouYonghui/archive/2013/05/15/399310.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Wed, 15 May 2013 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2013/05/15/399310.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/399310.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2013/05/15/399310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/399310.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/399310.html</trackback:ping><description><![CDATA[
<div>源文件为：<a href="http://wenku.baidu.com/view/433b1585d4d8d15abe234e3a.html">http://wenku.baidu.com/view/433b1585d4d8d15abe234e3a.html</a><br />下面我简单写下这个例子：<br />第一，首先配置环境：<br />(1)添加jar包，如：sitemesh-2.4.1.jar放在lib下<br />在web.xml添加配置<br />&lt;filter&gt;<br />&nbsp;&nbsp;&lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />&nbsp;&nbsp;&lt;filter-class&gt;com.opensymphony.module.sitemesh.filter.PageFilter&lt;/filter-class&gt;<br />&nbsp;&lt;/filter&gt;<br />&nbsp;<br />&nbsp;&lt;filter-mapping&gt;<br />&nbsp;&nbsp;&lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&nbsp;&nbsp;&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br />&nbsp;&nbsp;&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br />&nbsp;&lt;/filter-mapping&gt;<br />第二步：<br />在WEB-INF下新建decorators.xml文件<br />内容如下：<br />&lt;decorators defaultdir="/decorators"&gt;<br />&nbsp;&lt;decorator name="main" page="main.jsp"&gt;<br />&nbsp;&nbsp;&lt;pattern&gt;/*&lt;/pattern&gt;<br />&nbsp;&lt;/decorator&gt;<br />&lt;/decorators&gt;<br />第三步：<br />根据decorators.xml文件里面的属性defaultdir在webroot下创建一个目录decorators，在该目录下创建一个main.jsp文件<br />内容如下：<br />&lt;%@ page contentType="text/html; charset=GBK"%&gt; <br />&lt;%@ include file="/includes/taglibs.jsp"%&gt;<br />&nbsp; &lt;html&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;head&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=gbk"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;&lt;decorator:title default="装饰器页面..." /&gt;&lt;/title&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;decorator:head /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/head&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;body&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="page"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="header"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;jsp:include page="/includes/header.jsp"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="content"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;decorator:body /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="footer"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;jsp:include page="/includes/footer.jsp"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/div&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/body&gt; <br />&nbsp;&lt;/html&gt; <br />第四步<br />&lt;jsp:include page="/includes/header.jsp"/&gt;为includes目录下的一个共同使用的内容<br />&lt;jsp:include page="/includes/footer.jsp"/&gt;为includes目录下的一个共同使用的内容<br />&lt;decorator:head /&gt; 为每个要访问文件的内容<br />如下所示访问index.jsp<br />index.jsp内容为：<br />&lt;%@ page contentType="text/html; charset=GBK"%&gt; <br />&lt;%@ include file="/includes/taglibs.jsp"%&gt;<br />&nbsp;&lt;html&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;head&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;Agent Test&lt;/title&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/head&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;body&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p&gt;本页只有就是本句.&lt;/p&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/body&gt; <br />&nbsp;&lt;/html&gt; <br /><br />/includes/header.jsp内容为：<br /><p>&lt;%@ page language="java" contentType="text/html; charset=gbk"<br />&nbsp;&nbsp;&nbsp; pageEncoding="gbk"%&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;&nbsp; <br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gbk"&gt;<br />&lt;/head&gt;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;body&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sitemesh的例&lt;hr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/body&gt; <br />&lt;/html&gt; </p>/includes/footer.jsp内容为：<br />&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"<br />&nbsp;&nbsp;&nbsp; pageEncoding="gbk"%&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gbk"&gt;<br />&lt;title&gt;Insert title here&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&nbsp;&lt;hr&gt;chen56@msn.com<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br />访问得到内容如下：<br />sitemesh的例<br /><hr /><br /> <br /><div id="content"><br /><p>本页只有就是本句.</p></div><br /><div id="footer"><br /><hr /><br />chen56@msn.com </div><br />当然这里最主要的是要记住引入/include/taglibs.jsp<br />内容如下：<br />&lt;%@ taglib uri="<a href="http://www.opensymphony.com/sitemesh/decorator">http://www.opensymphony.com/sitemesh/decorator</a>" prefix="decorator"%&gt;<br /><br /></div> 
<img src ="http://www.blogjava.net/ZouYonghui/aggbug/399310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2013-05-15 16:04 <a href="http://www.blogjava.net/ZouYonghui/archive/2013/05/15/399310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置数据源(mysql)</title><link>http://www.blogjava.net/ZouYonghui/archive/2012/07/27/384195.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Fri, 27 Jul 2012 11:29:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2012/07/27/384195.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/384195.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2012/07/27/384195.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/384195.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/384195.html</trackback:ping><description><![CDATA[<span style="font-size: large;">这几天在弄个小东西，要用到数据库，以前就听说过数据库连接池这个概念，所以就打算在这个小东西中加入数据库连接池。呵呵。从网上搜了一些资料。今天就整理一下。我搜到的设置基本上主要有两种方法我们以MySQL+TOMCAT为例， MySQL驱动文件不仅要在工程lib目录下，也要在Tomcat的lib目录下。</span><br /><span style="color: red;">1.把DataSource设置到我们的WEB项目中，下面详细的介绍下：</span><br />第一步：在我们的WEB项目中的<span style="color: red;">META-INF</span>文件夹下建立一个<span style="color: red;">context.xml</span><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">'1.0'</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">'utf-8'</span><span class="tag">?&gt;</span><span>&nbsp; </span></li><li><span>&nbsp; </span></li><li><span class="tag">&lt;</span><span class="tag-name">Context</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">Resource</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"jdbc/mysql"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">auth</span><span>=</span><span class="attribute-value">"Container"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">type</span><span>=</span><span class="attribute-value">"javax.sql.DataSource"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">driverClassName</span><span>=</span><span class="attribute-value">"com.mysql.jdbc.Driver"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">url</span><span>=</span><span class="attribute-value">"jdbc:mysql://localhost/bbs"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">username</span><span>=</span><span class="attribute-value">"root"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">password</span><span>=</span><span class="attribute-value">"root"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxActive</span><span>=</span><span class="attribute-value">"50"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxIdle</span><span>=</span><span class="attribute-value">"20"</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxWait</span><span>=</span><span class="attribute-value">"10000"</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp; </span></li><li><span class="tag">&lt;/</span><span class="tag-name">Context</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="0" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">&lt;?xml version='1.0' encoding='utf-8'?&gt;

&lt;Context&gt;

    &lt;Resource name="jdbc/mysql"   
       auth="Container"   
       type="javax.sql.DataSource"   
       driverClassName="com.mysql.jdbc.Driver"   
       url="jdbc:mysql://localhost/bbs"   
       username="root"   
       password="root"   
       maxActive="50"   
       maxIdle="20"   
       maxWait="10000" /&gt;   

&lt;/Context&gt;
</pre><br />第二步：在我们的WEB项目下的<span style="color: red;">WEB-INF</span>文件夹下建立一个<span style="color: red;">web.xml</span>(如果存在了就不用了，直接修改就行了)<br /><span style="color: red;">(这几天测试了一下，不做这步也可以，O(&#8745;_&#8745;)O哈哈~省事了)</span><br /><div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;</span><span class="tag-name">resource-ref</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">description</span><span class="tag">&gt;</span><span>DB Connection</span><span class="tag">&lt;/</span><span class="tag-name">description</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-ref-name</span><span class="tag">&gt;</span><span>jdbc/mysql</span><span class="tag">&lt;/</span><span class="tag-name">res-ref-name</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-type</span><span class="tag">&gt;</span><span>javax.sql.DataSource</span><span class="tag">&lt;/</span><span class="tag-name">res-type</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-auth</span><span class="tag">&gt;</span><span>Container</span><span class="tag">&lt;/</span><span class="tag-name">res-auth</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">resource-ref</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="1" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">  &lt;resource-ref&gt;
      &lt;description&gt;DB Connection&lt;/description&gt;
      &lt;res-ref-name&gt;jdbc/mysql&lt;/res-ref-name&gt;
      &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
      &lt;res-auth&gt;Container&lt;/res-auth&gt;
  &lt;/resource-ref&gt;
</pre><br />第三步：我们就可以用代码来获取<span style="color: red;">Connection</span>对象了<br /><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-j"><li><span class="keyword">package</span><span> xushun.util;&nbsp; </span></li><li><span>&nbsp; </span></li><li><span class="keyword">import</span><span> java.sql.*;&nbsp; </span></li><li><span class="keyword">import</span><span> javax.sql.*;&nbsp; </span></li><li><span class="keyword">import</span><span> javax.naming.*;&nbsp; </span></li><li><span>&nbsp; </span></li><li><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> DBHelper {&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> Connection getConnection() </span><span class="keyword">throws</span><span> SQLException,NamingException&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; {&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 初始化查找命名空间</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context initContext = <span class="keyword">new</span><span> InitialContext();&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context envContext = (Context)initContext.lookup(<span class="string">"java:/comp/env"</span><span>);&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 找到DataSource</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataSource ds = (DataSource)envContext.lookup(<span class="string">"jdbc/mysql"</span><span>);&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">return</span><span> ds.getConnection();&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; }&nbsp; </span></li><li><span>}&nbsp; </span></li></ol></div><pre style="display: none;" class="java" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="2" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">package xushun.util;

import java.sql.*;
import javax.sql.*;
import javax.naming.*;

public class DBHelper {
    
    public static Connection getConnection() throws SQLException,NamingException
    {
        // 初始化查找命名空间
        Context initContext = new InitialContext();
        Context envContext = (Context)initContext.lookup("java:/comp/env");
        // 找到DataSource
        DataSource ds = (DataSource)envContext.lookup("jdbc/mysql");
        return ds.getConnection();
    }
}
</pre><br /><span style="color: red;">2.把DataSource设置到我们的Tomcat中，下面详细的介绍下（测试用的JAVA代码和上面的一样就不帖出了）：</span><br />这里我查到的设置方法就有了一点区别了。有的人把DataSource设置在Tomcat的server.xml文件的GlobalNamingResources下面，然后在context.xml中去映射。有的直接就写在context.xml中了<br /><span style="color: blue;">先说下在server.xml添加DataSource</span><br />第一步：在Tomcat的conf中的server.xml文件中找到<div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;</span><span class="tag-name">GlobalNamingResources</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp; &lt;!-- Editable user database that can also be used by&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserDatabaseRealm to authenticate users&nbsp; </span></li><li><span>&nbsp; --<span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp; <span class="tag">&lt;</span><span class="tag-name">Resource</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"UserDatabase"</span><span> </span><span class="attribute">auth</span><span>=</span><span class="attribute-value">"Container"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">type</span><span>=</span><span class="attribute-value">"org.apache.catalina.UserDatabase"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">description</span><span>=</span><span class="attribute-value">"User database that can be updated and saved"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">factory</span><span>=</span><span class="attribute-value">"org.apache.catalina.users.MemoryUserDatabaseFactory"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">pathname</span><span>=</span><span class="attribute-value">"conf/tomcat-users.xml"</span><span> </span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">GlobalNamingResources</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="3" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">  &lt;GlobalNamingResources&gt;
    &lt;!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    --&gt;
    &lt;Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" /&gt;
  &lt;/GlobalNamingResources&gt;</pre>修改为<div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;</span><span class="tag-name">GlobalNamingResources</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp; &lt;!-- Editable user database that can also be used by&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserDatabaseRealm to authenticate users&nbsp; </span></li><li><span>&nbsp; --<span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp; <span class="tag">&lt;</span><span class="tag-name">Resource</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"UserDatabase"</span><span> </span><span class="attribute">auth</span><span>=</span><span class="attribute-value">"Container"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">type</span><span>=</span><span class="attribute-value">"org.apache.catalina.UserDatabase"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">description</span><span>=</span><span class="attribute-value">"User database that can be updated and saved"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">factory</span><span>=</span><span class="attribute-value">"org.apache.catalina.users.MemoryUserDatabaseFactory"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">pathname</span><span>=</span><span class="attribute-value">"conf/tomcat-users.xml"</span><span> </span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp; <span class="tag">&lt;</span><span class="tag-name">Resource</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"jdbc/bbs"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">auth</span><span>=</span><span class="attribute-value">"Container"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"javax.sql.DataSource"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">driverClassName</span><span>=</span><span class="attribute-value">"com.mysql.jdbc.Driver"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxIdle</span><span>=</span><span class="attribute-value">"20"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxWait</span><span>=</span><span class="attribute-value">"5000"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">username</span><span>=</span><span class="attribute-value">"root"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">password</span><span>=</span><span class="attribute-value">"admin"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">url</span><span>=</span><span class="attribute-value">"jdbc:mysql://localhost:3306/bbs"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxActive</span><span>=</span><span class="attribute-value">"100"</span><span>&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">removeAbandoned</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">removeAbandonedTimeout</span><span>=</span><span class="attribute-value">"60"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">logAbandoned</span><span>=</span><span class="attribute-value">"true"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">GlobalNamingResources</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="4" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">  &lt;GlobalNamingResources&gt;
    &lt;!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    --&gt;
    &lt;Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" /&gt;
    &lt;Resource name="jdbc/bbs"     
	          auth="Container" type="javax.sql.DataSource"
	          driverClassName="com.mysql.jdbc.Driver"
	          maxIdle="20"
	          maxWait="5000"
	          username="root"
	          password="admin"
	          url="jdbc:mysql://localhost:3306/bbs"     
	          maxActive="100" 
	          removeAbandoned="true"
	          removeAbandonedTimeout="60"
	          logAbandoned="true"/&gt;
  &lt;/GlobalNamingResources&gt;</pre><br />第二步：在Tomcat的conf文件夹下的context.xml中加入<br /><div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;</span><span class="tag-name">ResourceLink</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"jdbc/bbs"</span><span> </span><span class="attribute">global</span><span>=</span><span class="attribute-value">"jdbc/bbs"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"javax.sql.DataSource"</span><span class="tag">/&gt;</span><span>&nbsp; </span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="5" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">&lt;ResourceLink name="jdbc/bbs" global="jdbc/bbs" type="javax.sql.DataSource"/&gt;</pre><br />第三步：就是在WEB项目的WEB-INF中的web.xml添加<div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;</span><span class="tag-name">resource-ref</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">description</span><span class="tag">&gt;</span><span>DB Connection</span><span class="tag">&lt;/</span><span class="tag-name">description</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-ref-name</span><span class="tag">&gt;</span><span>jdbc/mysql</span><span class="tag">&lt;/</span><span class="tag-name">res-ref-name</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-type</span><span class="tag">&gt;</span><span>javax.sql.DataSource</span><span class="tag">&lt;/</span><span class="tag-name">res-type</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-auth</span><span class="tag">&gt;</span><span>Container</span><span class="tag">&lt;/</span><span class="tag-name">res-auth</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">resource-ref</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="6" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">  &lt;resource-ref&gt;
      &lt;description&gt;DB Connection&lt;/description&gt;
      &lt;res-ref-name&gt;jdbc/mysql&lt;/res-ref-name&gt;
      &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
      &lt;res-auth&gt;Container&lt;/res-auth&gt;
  &lt;/resource-ref&gt;
</pre><br /><span style="color: blue;">还有就是在Tomcat文档中提到的方法，直接修改context.xml文件了</span><br />在Tomcat的conf文件夹下的context.xml中加入<div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;</span><span class="tag-name">Resource</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"jdbc/bbs"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">auth</span><span>=</span><span class="attribute-value">"Container"</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"javax.sql.DataSource"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">driverClassName</span><span>=</span><span class="attribute-value">"com.mysql.jdbc.Driver"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxIdle</span><span>=</span><span class="attribute-value">"20"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxWait</span><span>=</span><span class="attribute-value">"5000"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">username</span><span>=</span><span class="attribute-value">"root"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">password</span><span>=</span><span class="attribute-value">"admin"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">url</span><span>=</span><span class="attribute-value">"jdbc:mysql://localhost:3306/bbs"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">maxActive</span><span>=</span><span class="attribute-value">"100"</span><span>&nbsp;&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">removeAbandoned</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">removeAbandonedTimeout</span><span>=</span><span class="attribute-value">"60"</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="attribute">logAbandoned</span><span>=</span><span class="attribute-value">"true"</span><span class="tag">/&gt;</span><span>&nbsp; </span></span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="7" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">&lt;Resource name="jdbc/bbs"     
	          auth="Container" type="javax.sql.DataSource"
	          driverClassName="com.mysql.jdbc.Driver"
	          maxIdle="20"
	          maxWait="5000"
	          username="root"
	          password="admin"
	          url="jdbc:mysql://localhost:3306/bbs"     
	          maxActive="100" 
	          removeAbandoned="true"
	          removeAbandonedTimeout="60"
	          logAbandoned="true"/&gt;</pre>然后就是在WEB项目的WEB-INF中的web.xml添加<div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <a title="复制代码" href="http://www.iteye.com/topic/245596#"><img alt="复制代码" src="http://www.iteye.com/images/icon_copy.gif" /></a> <a title="收藏这段代码" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png" /><img style="display: none;" class="spinner" src="http://www.iteye.com/images/spinner.gif"  alt="" /></a></div></div><ol class="dp-xml"><li><span class="tag">&lt;</span><span class="tag-name">resource-ref</span><span class="tag">&gt;</span><span>&nbsp; </span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">description</span><span class="tag">&gt;</span><span>DB Connection</span><span class="tag">&lt;/</span><span class="tag-name">description</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-ref-name</span><span class="tag">&gt;</span><span>jdbc/mysql</span><span class="tag">&lt;/</span><span class="tag-name">res-ref-name</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-type</span><span class="tag">&gt;</span><span>javax.sql.DataSource</span><span class="tag">&lt;/</span><span class="tag-name">res-type</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span>&nbsp;&nbsp;&nbsp; <span class="tag">&lt;</span><span class="tag-name">res-auth</span><span class="tag">&gt;</span><span>Container</span><span class="tag">&lt;/</span><span class="tag-name">res-auth</span><span class="tag">&gt;</span><span>&nbsp; </span></span></li><li><span class="tag">&lt;/</span><span class="tag-name">resource-ref</span><span class="tag">&gt;</span><span>&nbsp; </span></li></ol></div><pre style="display: none;" class="xml" title="TOMCAT数据库连接池的配置方法总结（待续）" pre_index="8" source_url="http://www.iteye.com/topic/245596#675831" codeable_id="675831" codeable_type="Post" name="code">  &lt;resource-ref&gt;
      &lt;description&gt;DB Connection&lt;/description&gt;
      &lt;res-ref-name&gt;jdbc/mysql&lt;/res-ref-name&gt;
      &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
      &lt;res-auth&gt;Container&lt;/res-auth&gt;
  &lt;/resource-ref&gt;
</pre><br /><span style="font-size: large;">就是这些了，如果有什么不太清楚的就留言，一起研究下。等以后我在搜集下资料整理出上面用到的XML文件中各个标签的属性及其代表的意思。有兴趣的也可以自己先查下。:-)</span><br /><br />&lt;td&gt;JNDI 查找名称&lt;/td&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;关联的引用&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/env&lt;/td&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;应用程序环境条目&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/env/jdbc&lt;/td&gt; &lt;td&gt;JDBC 数据源资源管理器连接工厂&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/env/ejb&lt;/td&gt;&nbsp; &lt;td&gt;EJB 引用&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/UserTransaction&lt;/td&gt;&lt;td&gt;UserTransaction 引用&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/env/mail&lt;/td&gt; &lt;td&gt;JavaMail 会话连接工厂&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/env/url&lt;/td&gt;&nbsp; &lt;td&gt;URL 连接工厂&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/env/jms&lt;/td&gt;&nbsp; &lt;td&gt;JMS 连接工厂和目标&lt;/td&gt;<br /><br />&lt;td&gt;java:comp/ORB&lt;/td&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;应用程序组件之间共享的 ORB 实例&lt;/td&gt;<br /><a href="http://www.iteye.com/topic/245596">参考如下</a><img src ="http://www.blogjava.net/ZouYonghui/aggbug/384195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2012-07-27 19:29 <a href="http://www.blogjava.net/ZouYonghui/archive/2012/07/27/384195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>增加项目中tomcat内存</title><link>http://www.blogjava.net/ZouYonghui/archive/2012/03/20/372247.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Tue, 20 Mar 2012 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2012/03/20/372247.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/372247.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2012/03/20/372247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/372247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/372247.html</trackback:ping><description><![CDATA[<div>Window-&gt;&gt;Preferences&gt;&gt;JVM Settings在Append to the Parameters文本框中加入要设置的内存大小，比如下面的设置<!--StartFragment -->

<div>-Xms128M&nbsp;-Xmx512M&nbsp;-XX:PermSize=64M&nbsp;-XX:MaxPermSize=128M </div></div> <img src ="http://www.blogjava.net/ZouYonghui/aggbug/372247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2012-03-20 09:55 <a href="http://www.blogjava.net/ZouYonghui/archive/2012/03/20/372247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>方便Eclipse+tomcat开发 eclipse Password required问题解决方法</title><link>http://www.blogjava.net/ZouYonghui/archive/2012/03/15/371973.html</link><dc:creator>Terry Zou</dc:creator><author>Terry Zou</author><pubDate>Thu, 15 Mar 2012 11:46:00 GMT</pubDate><guid>http://www.blogjava.net/ZouYonghui/archive/2012/03/15/371973.html</guid><wfw:comment>http://www.blogjava.net/ZouYonghui/comments/371973.html</wfw:comment><comments>http://www.blogjava.net/ZouYonghui/archive/2012/03/15/371973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ZouYonghui/comments/commentRss/371973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ZouYonghui/services/trackbacks/371973.html</trackback:ping><description><![CDATA[<div>Eclipse中加入Tomcat:<a href="http://wenku.baidu.com/view/784dcf4f2b160b4e767fcf10.html">http://wenku.baidu.com/view/784dcf4f2b160b4e767fcf10.html</a><br />Eclipse j2ee版本中如何配置tomcat是项目到tomcat容器中去：<a href="http://hi.baidu.com/81667/blog/item/c4134d8d2bc9260ab31bba83.html">http://hi.baidu.com/81667/blog/item/c4134d8d2bc9260ab31bba83.html</a><br /><br />
<h3><span class="link_title">eclipse Password required问题解决方法 </span></h3>
<div class="article_manage">由于这个弹窗太烦人，现在将这个简单的解决 方法 贴出，</div>
<div class="article_content" id="article_content">
<p>首先在eclipse 的菜单栏 选择window菜单下的preferences</p>
<p><img alt="" src="http://hi.csdn.net/attachment/201108/22/0_13139821774M94.gif" />选择General 下面的NetworkConnections 将ActiveProvider 改为Direct即可</p>
<p><br /></p>
<p>2.eclipse导入工程</p>
<p>file-&gt;import-&gt;Existing Projects into Workspace</p></div></div> <img src ="http://www.blogjava.net/ZouYonghui/aggbug/371973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ZouYonghui/" target="_blank">Terry Zou</a> 2012-03-15 19:46 <a href="http://www.blogjava.net/ZouYonghui/archive/2012/03/15/371973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>