??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成人1区,3dmax动漫人物在线看,99国产在线视频http://www.aygfsteel.com/ZouYonghui/category/51174.htmlzh-cnFri, 13 Jun 2014 10:23:11 GMTFri, 13 Jun 2014 10:23:11 GMT60Servlet日志输出Log4j配置http://www.aygfsteel.com/ZouYonghui/archive/2014/05/26/414102.htmlTerry ZouTerry ZouMon, 26 May 2014 03:13:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2014/05/26/414102.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/414102.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2014/05/26/414102.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/414102.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/414102.html阅读全文

Terry Zou 2014-05-26 11:13 发表评论
]]>
如何使用log4j打印日志q保存日?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/ZouYonghui/archive/2014/03/21/411346.html</guid><wfw:comment>http://www.aygfsteel.com/ZouYonghui/comments/411346.html</wfw:comment><comments>http://www.aygfsteel.com/ZouYonghui/archive/2014/03/21/411346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ZouYonghui/comments/commentRss/411346.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ZouYonghui/services/trackbacks/411346.html</trackback:ping><description><![CDATA[<div>1.新徏目<br />2.导入jar包(例如Qlog4j-1.2.15<a></a>.jar,slf4j-api-1.5.2.jar,slf4j-log4j12-1.5.0.jarQ见附gQ?a href="/Files/ZouYonghui/log4j.rar">/Files/ZouYonghui/log4j.rar</a><br />3.在src目录下编写log.properties文gQ里面包含日志所在位|,如下所C:(x) <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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">#Created by JInto </span><span style="color: #000000">-</span><span style="color: #000000"> www.guh</span><span style="color: #000000">-</span><span style="color: #000000">software.de<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />#Mon May </span><span style="color: #000000">27</span><span style="color: #000000"> </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"> CST </span><span style="color: #000000">2013</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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] </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_285_312_Open_Text"><span style="color: #000000">{dd MMM hh\:mm\:ss.SSS aa}</span></span><span style="color: #000000"> </span><span style="color: #000000">%</span><span style="color: #000000">t  </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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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] </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_678_705_Open_Text"><span style="color: #000000">{dd MMM hh\:mm\:ss.SSS aa}</span></span><span style="color: #000000"> </span><span style="color: #000000">%</span><span style="color: #000000">t </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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/None.gif" /></span></div>4.在项目中初始化:(x)<br />PropertyConfigurator.configure("log4j.properties");<br />5.使用<br />如:(x)<br />private static final Logger log = LoggerFactory.getLogger(HelloWorld.class);<br />。。。。。?br />log.debug("hello");<br /></div><img src ="http://www.aygfsteel.com/ZouYonghui/aggbug/411346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ZouYonghui/" target="_blank">Terry Zou</a> 2014-03-21 16:50 <a href="http://www.aygfsteel.com/ZouYonghui/archive/2014/03/21/411346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate参数一览表http://www.aygfsteel.com/ZouYonghui/archive/2014/01/22/409206.htmlTerry ZouTerry ZouWed, 22 Jan 2014 02:18:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/22/409206.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/409206.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/22/409206.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/409206.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/409206.html阅读全文

Terry Zou 2014-01-22 10:18 发表评论
]]>
Multiple markers at this line http://www.aygfsteel.com/ZouYonghui/archive/2014/01/21/409173.htmlTerry ZouTerry ZouTue, 21 Jan 2014 07:21:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/21/409173.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/409173.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/21/409173.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/409173.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/409173.htmlMultiple markers at this line    
    原因1Q这中情冉|时候是jar包中~少需要的c,没把需要的cLq去
    原因2Q?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文g
       从其他工E拷贝一个过?/span>
    原因3Q?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包,没有资源文g

       工程右键 -> Properties ->android ->选择一个android的版本,Q如果已l选择好了Q还是有问题Q就先选择另一个,之后再换回来Q?/span>



Terry Zou 2014-01-21 15:21 发表评论
]]>
hibernate常见异常http://www.aygfsteel.com/ZouYonghui/archive/2014/01/15/408969.htmlTerry ZouTerry ZouWed, 15 Jan 2014 02:44:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/15/408969.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/408969.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/15/408969.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/408969.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/408969.html1.~少包commons-collections-3.1.jar
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/LRUMap
 at org.hibernate.util.SimpleMRUCache.init(SimpleMRUCache.java:71)
 at org.hibernate.util.SimpleMRUCache.<init>(SimpleMRUCache.java:55)
 at org.hibernate.engine.query.QueryPlanCache.<init>(QueryPlanCache.java:76)
 at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:239)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
 at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
 at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
 at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
 at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
 at com.rfcyber.rfcepayment.util.jpa.JPAHelper.init(Unknown Source)
 at test.TestDataPreparation.setUp(TestDataPreparation.java:52)
 at junit.framework.TestCase.runBare(TestCase.java:128)
 at junit.framework.TestResult$1.protect(TestResult.java:106)
 at junit.framework.TestResult.runProtected(TestResult.java:124)
 at junit.framework.TestResult.run(TestResult.java:109)
 at junit.framework.TestCase.run(TestCase.java:120)
 at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.LRUMap
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
 ... 22 more

2.~jta.jar

java.lang.NoClassDefFoundError: javax/transaction/SystemException
 at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:112)
 at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:107)
 at com.rfcyber.rfcepayment.util.jpa.JPAHelper.getEntityManager(Unknown Source)
 at com.rfcyber.rfcepayment.util.jpa.JPADAO.findByJPQL(Unknown Source)
 at com.richhouse.personal.service.DPZYTService.searchNextAvaiable(Unknown Source)
 at com.richhouse.personal.util.ZYTDPHandler.searchNextAvaiable(Unknown Source)
 at com.richhouse.personal.util.ZYTDataPreparation.prepareStoreData(Unknown Source)
 at test.TestDataPreparation.testOracleSearchNext(TestDataPreparation.java:91)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at junit.framework.TestCase.runTest(TestCase.java:164)
 at junit.framework.TestCase.runBare(TestCase.java:130)
 at junit.framework.TestResult$1.protect(TestResult.java:106)
 at junit.framework.TestResult.runProtected(TestResult.java:124)
 at junit.framework.TestResult.run(TestResult.java:109)
 at junit.framework.TestCase.run(TestCase.java:120)
 at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: javax.transaction.SystemException
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
 ... 24 more 



Terry Zou 2014-01-15 10:44 发表评论
]]>
oracle中imp命o(h)详解http://www.aygfsteel.com/ZouYonghui/archive/2014/01/13/408876.htmlTerry ZouTerry ZouMon, 13 Jan 2014 12:04:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/13/408876.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/408876.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2014/01/13/408876.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/408876.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/408876.html阅读全文

Terry Zou 2014-01-13 20:04 发表评论
]]>
字节数组的相x?取反Q查找位|,转ؓ(f)16q制)http://www.aygfsteel.com/ZouYonghui/archive/2013/12/25/408007.htmlTerry ZouTerry ZouWed, 25 Dec 2013 03:32:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2013/12/25/408007.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/408007.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2013/12/25/408007.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/408007.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/408007.htmlpublic static byte[] backByte(byte[] buff){
  
for (int i=0;i<buff.length;i++){
            
int b=0;
            
for (int j=0;j<8;j++){
                
int bit = (buff[i]>>j&1)==0?1:0;
                b 
+= (1<<j)*bit;
            }

            buff[i]
=(byte)b;
        }

  
return buff;
 }
 
2.查找字节数组中字数组的位|?br />
public static int indexOf(byte[] src,int offset,byte[] needFind){
        
for(int i=offset;i<src.length-offset-needFind.length;i++){
            
boolean isValid=true;
            
for(int j=0;j<needFind.length;j++){
                
if(src[i+j]!=needFind[j]){
                    isValid
=false;
                    
break;
                }

            }

            
if(isValid){
                
return i;
            }

        }

        
return -1;
    }



3.字节数组转换?6q制

private static final byte[] HEX_CHAR_TABLE = { (byte) '0', (byte) '1',
(
byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6',
(
byte) '7', (byte) '8', (byte) '9', (byte) 'A', (byte) 'B',
(
byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F' }
;

public static String getHexString(byte[] raw, int len) {
byte[] hex = new byte[2 * len];
int index = 0;
int pos = 0;
for (byte b : raw) {
if (pos >= len)
break;
pos
++;
int v = b & 0xFF;
hex[index
++] = HEX_CHAR_TABLE[v >>> 4];
hex[index
++] = HEX_CHAR_TABLE[v & 0xF];
}


return new String(hex);
}





Terry Zou 2013-12-25 11:32 发表评论
]]>
Web目Spring+hibernate+Spring mvc单的dҎ(gu)http://www.aygfsteel.com/ZouYonghui/archive/2013/06/01/400051.htmlTerry ZouTerry ZouSat, 01 Jun 2013 02:49:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2013/06/01/400051.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/400051.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2013/06/01/400051.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/400051.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/400051.html----------------------------------------------一.WEB目的执行流E?--------------------------------
1.web目的运行流E大致如下:(x)    
    启动tomcatQ先到web.xml里面查看<context-param><listener><filter><servlet>{等几个tagQ查看里面的配置Q查扄应的配置文g?br />如下列文件所C:(x)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="  <display-name>SpringMVC12</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:config/springAnnotation-*.xml</param-value>
  </context-param>
 
 
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 
  <servlet>
   <servlet-name>springMVC</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath*:config/springAnnotation-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
   <param-name>forceEncoding</param-name>
   <param-value>true</param-value>
  </init-param>
 </filter>
 <!-- encoding filter for jsp page -->
 <filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 
  <servlet-mapping>
   <servlet-name>springMVC</servlet-name>
   <url-pattern>/</url-pattern>
  </servlet-mapping>
 
  <filter>
    <filter-name>openSession</filter-name>
    <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
  </filter>
 
  <filter-mapping>
   <filter-name>openSession</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

首先查看那几个标{,扑ֈ对应的配|文Ӟ?lt;context-param>中配|的classpath*:config/springAnnotation-*.xml?br />

---------------------------------------2.到配|文件查看相关信?---------------------------------------------
Q?Q?lt;context-param>里的classpath*:config/springAnnotation-*.xmlQ即在config目录下匹配springAnnotation-*.xml的文?br />


Q?.1Q查看springAnnotation-core.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>
 
 <import resource="classpath*:com/zyh/web/controller/spring/springAnnotation-import.xml"/>
</beans>

对应的\径如下com/zyh/web/controller/spring/springAnnotation-import.xml
Q?.2Q查看springAnnotation-import.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>
 <bean id="userDao" class="com.zyh.web.controller.dao.UserDAO">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 
 <bean id="userManagerBase" class="com.zyh.web.controller.service.UserManager">
  <property name="userDao" ref="userDao"></property>
 </bean>
 
 <bean id="userManager" parent="transactionBese">
  <property name="target" ref="userManagerBase"></property>
 </bean>
 
</beans>

对应关于已l配|在容器里面了?br />Q?.1Q查看springAnnotation-hibernate.xmlQ配|数据源QsessionFactoryQ和事物Q?br />

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://localhost/test1?useUnicode=true"/>
  <property name="username" value="root"/>
  <property name="password" value="root"/>
 </bean>
 
 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hiberante.format_sql">true</prop>
   </props>
  </property>
  <property name="configLocations">
   <list>
    <value>
     classpath*:com/zyh/web/controller/hibernate/hibernate.cfg.test.xml
    </value>
   </list>
  </property>
 </bean>
 
 <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 
 <bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
  <property name="transactionManager" ref="transactionManager"></property>
  <property name="transactionAttributes">
   <props>
    <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="get*">PROPAGATION_NEVER</prop>
   </props>
  </property>
 </bean>
</beans>

 配置的对应的 classpath*:com/zyh/web/controller/hibernate/hibernate.cfg.test.xml
    

Q?QspringAnnotation-servlet.xmlQ内容如?br />

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
 xmlns:context=" xmlns:p=" xmlns:mvc=" xmlns:xsi=" xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context.xsd 
      http://www.springframework.org/schema/mvc 
           <!-- 注解扫描?-->
 <context:component-scan base-package="com.zyh.web.controller" />
 <!-- 开启注?-->
 
 <mvc:annotation-driven/>
 
 <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean> -->
 <!-- 静态资源访?-->
  <mvc:resources location="/img/" mapping="/img/**"/> 
  <mvc:resources location="/js/" mapping="/js/**"/>  
 

 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>
 
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8" />
       <property name="maxUploadSize" value="10485760000" />
       <property name="maxInMemorySize" value="40960" />
 </bean>
 </beans> 



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
xmlns:context=" xmlns:p=" xmlns:mvc=" xmlns:xsi=" xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context.xsd 
      http://www.springframework.org/schema/mvc 
           <!-- 注解扫描?-->
<context:component-scan base-package="com.zyh.web.controller" />
<!-- 开启注?-->

<mvc:annotation-driven/>

<!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean> -->
<!-- 静态资源访?-->
  <mvc:resources location="/img/" mapping="/img/**"/> 
  <mvc:resources location="/js/" mapping="/js/**"/>  

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/"></property>
  <property name="suffix" value=".jsp"></property>
</bean>

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8" />
       <property name="maxUploadSize" value="10485760000" />
       <property name="maxInMemorySize" value="40960" />
</bean>
</beans> 


springAnnotation-hibernate.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://localhost/test1?useUnicode=true"/>
  <property name="username" value="root"/>
  <property name="password" value="root"/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hiberante.format_sql">true</prop>
   </props>
  </property>
  <property name="configLocations">
   <list>
    <value>
     classpath*:com/zyh/web/controller/hibernate/hibernate.cfg.test.xml
    </value>
   </list>
  </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
  <property name="transactionManager" ref="transactionManager"></property>
  <property name="transactionAttributes">
   <props>
    <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
    <prop key="get*">PROPAGATION_NEVER</prop>
   </props>
  </property>
</bean>
</beans>

q个写的有点乱,理清思\Q其实很单,是配置spring容器,里面扫描了所有的bean?qing)一些依赖关p,hibernate配置数据源徏立数据库q接QSessionFactory用于理数据库,q有是Springmvc用于控制视图与后C间的面转向Q传递数据,发送请求?br />配置工作到此结束,然后是写bean,dao,service,control与联p配|文件的对应关系Q实际开发中当然不会(x)把配|文仉写好才来写java代码。我的做法是同时q行Q漏了就相应的加上?br />
-----------------------------------------------------------3对应的实?-------------------------------------
3.1 Z单,我们建立一个单表的dҎ(gu)Q就一个对象吧UserQ对应的表T_User,里面有userName和age两个属性,当然q要建立一个主键id,如下列代码所C?
com.zyh.web.controller.entity.User

package com.zyh.web.controller.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="T_USER")
public class User {

 @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(length=32)
 @Id
 private String id;
 
 @Column(length=32)
 private String userName;
 
 @Column(length=32)
 private String age;
 
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }

}
3.2 dao层结构如下:(x)接口IUserDAO与实现类UserDAOQ我们实现添删改查,查询包括一个User和所以User
com.zyh.web.controller.dao.IUserDAO

package com.zyh.web.controller.dao;

import java.util.List;

import com.zyh.web.controller.entity.User;

public interface IUserDAO {

 public void addUser(User user);
 
 public List<User> getAllUser();
 
 public User getUser(String id);
 
 public boolean delUser(String id);
 
 public boolean updateUser(User user);
}
实现cUserDAO:

package com.zyh.web.controller.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

import com.zyh.web.controller.entity.User;

public class UserDAO implements IUserDAO {

 private SessionFactory sessionFactory;
 public void setSessionFactory(SessionFactory sessionFactory) {
  this.sessionFactory = sessionFactory;
 }

 @Override
 public void addUser(User user) {
  // TODO Auto-generated method stub
  sessionFactory.getCurrentSession().save(user);
 }

 @Override
 public List<User> getAllUser() {
  // TODO Auto-generated method stub
  String hql = "from User";
  Query query =  sessionFactory.getCurrentSession().createQuery(hql);
  return query.list();
 }

 @Override
 public User getUser(String id) {
  // TODO Auto-generated method stub
  String hql = "from User u where u.id=?";
  Query query = sessionFactory.getCurrentSession().createQuery(hql);
  query.setString(0, id);
  return (User) query.uniqueResult();
 }

 @Override
 public boolean delUser(String id) {
  // TODO Auto-generated method stub
  String hql = "delete User u where u.id=?";
  Query query = sessionFactory.getCurrentSession().createQuery(hql);
  query.setString(0, id);
  return (query.executeUpdate()>0);
 }

 @Override
 public boolean updateUser(User user) {
  // TODO Auto-generated method stub
  String hql = "update User u set u.userName=?,u.age=? where u.id=?";
  Query query = sessionFactory.getCurrentSession().createQuery(hql);
  query.setString(0, user.getUserName());
  query.setString(1, user.getAge());
  query.setString(2, user.getId());
  return (query.executeUpdate()>0);
 }

}

3.3 service层结构如下:(x)接口IUserManager与实现类UserManagerQ我们实现添删改查,查询包括一个User和所以User
com.zyh.web.controller.service.IUserManager

package com.zyh.web.controller.service;

import java.util.List;

import com.zyh.web.controller.entity.User;

public interface IUserManager {
 
 public void addUser(User user);
 
 public List<User> getAllUser();
 
 public boolean delUser(String id);
 
 public User getUser(String id);
 
 public boolean updateUser(User user);
}
实现cUserManager.java

package com.zyh.web.controller.service;

import java.util.List;

import com.zyh.web.controller.dao.IUserDAO;
import com.zyh.web.controller.entity.User;

public class UserManager implements IUserManager {
 
 private IUserDAO userDao;
 
 public void setUserDao(IUserDAO userDao) {
  this.userDao = userDao;
 }

 @Override
 public void addUser(User user) {
  // TODO Auto-generated method stub
  userDao.addUser(user);
 }

 @Override
 public List<User> getAllUser() {
  // TODO Auto-generated method stub
  return userDao.getAllUser();
 }

 @Override
 public boolean delUser(String id) {
  // TODO Auto-generated method stub
  return userDao.delUser(id);
 }

 @Override
 public User getUser(String id) {
  // TODO Auto-generated method stub
  return userDao.getUser(id);
 }

 @Override
 public boolean updateUser(User user) {
  // TODO Auto-generated method stub
  return userDao.updateUser(user);
 }

}

4.Control层结构如下:(x)实现cUserController.javaQ代码如下:(x)

package com.zyh.web.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.zyh.web.controller.entity.User;
import com.zyh.web.controller.service.IUserManager;

@Controller
@RequestMapping("/user")
public class UserController {
 @Resource(name="userManager")
 private IUserManager userManager;
 
 @RequestMapping("/toAddUser")
 public String toAddUser(){
  return "/addUser";
 }
 
 @RequestMapping("/addUser")
 public String addUser(User user){
  userManager.addUser(user);
  return "redirect:/user/getAllUser";
 }
 
 @RequestMapping("/getAllUser")
 public String getAllUser(HttpServletRequest request){
  List<User> user = userManager.getAllUser();
  request.setAttribute("user", user);
  return "/userManager";
 }
 
 @RequestMapping("/delUser")
 public void delUser(String id,HttpServletResponse response){
  String result = "{\"result\":\"error\"}";
  if(userManager.delUser(id)){
   result = "{\"result\":\"success\"}";
  }
  response.setContentType("application/json");
  PrintWriter pw;
  try {
   pw = response.getWriter();
   pw.write(result);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 @RequestMapping("/getUser")
 public String getUser(String id,HttpServletRequest request){
  User user = userManager.getUser(id);
  request.setAttribute("user", user);
  return "editUser";
 }
 
 @RequestMapping("/updateUser")
 public String updateUser(User user,HttpServletRequest request){
  if(userManager.updateUser(user)){
   userManager.getUser(user.getId());
   request.setAttribute("user", user);
   return "/editUser";
  }else{
   return "/error";
  }
 }
}

--

 
--

package com.zyh.web.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.zyh.web.controller.entity.User;
import com.zyh.web.controller.service.IUserManager;

@Controller
@RequestMapping("/user")
public class UserController {
 @Resource(name="userManager")
 private IUserManager userManager;
 
 @RequestMapping("/toAddUser")
 public String toAddUser(){
  return "/addUser";
 }
 
 @RequestMapping("/addUser")
 public String addUser(User user){
  userManager.addUser(user);
  return "redirect:/user/getAllUser";
 }
 
 @RequestMapping("/getAllUser")
 public String getAllUser(HttpServletRequest request){
  List<User> user = userManager.getAllUser();
  request.setAttribute("user", user);
  return "/userManager";
 }
 
 @RequestMapping("/delUser")
 public void delUser(String id,HttpServletResponse response){
  String result = "{\"result\":\"error\"}";
  if(userManager.delUser(id)){
   result = "{\"result\":\"success\"}";
  }
  response.setContentType("application/json");
  PrintWriter pw;
  try {
   pw = response.getWriter();
   pw.write(result);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 @RequestMapping("/getUser")
 public String getUser(String id,HttpServletRequest request){
  User user = userManager.getUser(id);
  request.setAttribute("user", user);
  return "editUser";
 }
 
 @RequestMapping("/updateUser")
 public String updateUser(User user,HttpServletRequest request){
  if(userManager.updateUser(user)){
   userManager.getUser(user.getId());
   request.setAttribute("user", user);
   return "/editUser";
  }else{
   return "/error";
  }
 }
}

 

 

 

 



 

package com.zyh.web.controller.service;

import java.util.List;

import com.zyh.web.controller.dao.IUserDAO;
import com.zyh.web.controller.entity.User;

public class UserManager implements IUserManager {
 
 private IUserDAO userDao;
 
 public void setUserDao(IUserDAO userDao) {
  this.userDao = userDao;
 }

 @Override
 public void addUser(User user) {
  // TODO Auto-generated method stub
  userDao.addUser(user);
 }

 @Override
 public List<User> getAllUser() {
  // TODO Auto-generated method stub
  return userDao.getAllUser();
 }

 @Override
 public boolean delUser(String id) {
  // TODO Auto-generated method stub
  return userDao.delUser(id);
 }

 @Override
 public User getUser(String id) {
  // TODO Auto-generated method stub
  return userDao.getUser(id);
 }

 @Override
 public boolean updateUser(User user) {
  // TODO Auto-generated method stub
  return userDao.updateUser(user);
 }

}

--

package com.zyh.web.controller.service;

import java.util.List;

import com.zyh.web.controller.entity.User;

public interface IUserManager {
 
 public void addUser(User user);
 
 public List<User> getAllUser();
 
 public boolean delUser(String id);
 
 public User getUser(String id);
 
 public boolean updateUser(User user);
}

 

--
3.2 dao层结构如下:(x)接口IUserDAO与实现类UserDAOQ我们实现添删改查,查询包括一个User和所以User
com.zyh.web.controller.dao.IUserDAO
--

package com.zyh.web.controller.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

import com.zyh.web.controller.entity.User;

public class UserDAO implements IUserDAO {

 private SessionFactory sessionFactory;
 public void setSessionFactory(SessionFactory sessionFactory) {
  this.sessionFactory = sessionFactory;
 }

 @Override
 public void addUser(User user) {
  // TODO Auto-generated method stub
  sessionFactory.getCurrentSession().save(user);
 }

 @Override
 public List<User> getAllUser() {
  // TODO Auto-generated method stub
  String hql = "from User";
  Query query =  sessionFactory.getCurrentSession().createQuery(hql);
  return query.list();
 }

 @Override
 public User getUser(String id) {
  // TODO Auto-generated method stub
  String hql = "from User u where u.id=?";
  Query query = sessionFactory.getCurrentSession().createQuery(hql);
  query.setString(0, id);
  return (User) query.uniqueResult();
 }

 @Override
 public boolean delUser(String id) {
  // TODO Auto-generated method stub
  String hql = "delete User u where u.id=?";
  Query query = sessionFactory.getCurrentSession().createQuery(hql);
  query.setString(0, id);
  return (query.executeUpdate()>0);
 }

 @Override
 public boolean updateUser(User user) {
  // TODO Auto-generated method stub
  String hql = "update User u set u.userName=?,u.age=? where u.id=?";
  Query query = sessionFactory.getCurrentSession().createQuery(hql);
  query.setString(0, user.getUserName());
  query.setString(1, user.getAge());
  query.setString(2, user.getId());
  return (query.executeUpdate()>0);
 }

}

 

 

 




 

package com.zyh.web.controller.dao;

import java.util.List;

import com.zyh.web.controller.entity.User;

public interface IUserDAO {

 public void addUser(User user);
 
 public List<User> getAllUser();
 
 public User getUser(String id);
 
 public boolean delUser(String id);
 
 public boolean updateUser(User user);
}

--

package com.zyh.web.controller.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="T_USER")
public class User {

 @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(length=32)
 @Id
 private String id;
 
 @Column(length=32)
 private String userName;
 
 @Column(length=32)
 private String age;
 
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }

}

--


 

 

 

 

 

 


 



Terry Zou 2013-06-01 10:49 发表评论
]]>
字节数l{换ؓ(f)ImageView可调用的Bitmap对象http://www.aygfsteel.com/ZouYonghui/archive/2013/05/29/399913.htmlTerry ZouTerry ZouWed, 29 May 2013 03:36:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2013/05/29/399913.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/399913.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2013/05/29/399913.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/399913.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/399913.html/**
* @param 字节数l{换ؓ(f)ImageView可调用的Bitmap对象

 * @param bytes

 * @param opts

 * @return Bitmap

 */

 public static Bitmap getPicFromBytes(byte[] bytes, BitmapFactory.Options opts) {

     if (bytes != null)

        if (opts != null
             return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,  opts); 
        else

            return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
     return null;

}

q里我们主要来介l一个BitmapFactory.Optionsq个c?br />    

BitmapFactory.Optionsq个cȝ详解如下Q?/span>

public Bitmap

inBitmap

If set, decode methods that take the Options object will attempt to reuse this bitmap when loading content.

public int

inDensity

The pixel density to use for the bitmap.

public boolean

inDither

If dither is true, the decoder will attempt to dither the decoded image.

public boolean

inInputShareable

This field works in conjuction with inPurgeable.

public boolean

inJustDecodeBounds

If set to true, the decoder will return null (no bitmap), but the out…

public boolean

inMutable

If set, decode methods will always return a mutable Bitmap instead of an immutable one.

public boolean

inPreferQualityOverSpeed

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.

publicBitmap.Config

inPreferredConfig

If this is non-null, the decoder will try to decode into this internal configuration.

public boolean

inPurgeable

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.

public int

inSampleSize

If set to a value > 1, requests the decoder to subsample the original image, returning a smaller image to save memory.

public boolean

inScaled

When this flag is set, if inDensity and inTargetDensity are not 0, the bitmap will be scaled to match inTargetDensity when loaded, rather than relying on the graphics system scaling it each time it is drawn to a Canvas.

public int

inScreenDensity

The pixel density of the actual screen that is being used.

public int

inTargetDensity

The pixel density of the destination this bitmap will be drawn to.

public byte[]

inTempStorage

Temp storage to use for decoding.

public boolean

mCancel

Flag to indicate that cancel has been called on this object.

public int

outHeight

The resulting height of the bitmap, set independent of the state of inJustDecodeBounds.

public String

outMimeType

If known, this string is set to the mimetype of the decoded image.

public int

outWidth

The resulting width of the bitmap, set independent of the state of inJustDecodeBounds.

q个表格是从android sdk文档里摘出来的,单看一下说明就明白是什么意思了?br />下面我们回到我们的主题上来:(x)怎样获取囄的大?
思\很简单:(x)
首先我们把这个图片{成BitmapQ然后再利用Bitmap的getWidth()和getHeight()Ҏ(gu)可以取到图片的宽高了?br />新问题又来了Q在通过BitmapFactory.decodeFile(String path)Ҏ(gu)突破{成BitmapӞ遇到大一些的囄Q我们经怼(x)遇到OOM(Out Of Memory)的问题。怎么避免它呢Q?br />q就用到了我们上面提到的BitmapFactory.Optionsq个cR?/p>

BitmapFactory.Optionsq个c,有一个字D叫?inJustDecodeBounds 。SDK中对q个成员的说明是q样的:(x)
If set to true, the decoder will return null (no bitmap), but the out…
也就是说Q如果我们把它设为trueQ那么BitmapFactory.decodeFile(String path, Options opt)q不?x)真的返回一个Bitmapl你Q它仅仅?x)把它的宽,高取回来l你Q这样就不会(x)占用太多的内存,也就不会(x)那么频繁的发生OOM了?br />CZ代码如下Q?/p>

  1. BitmapFactory.Options options = new BitmapFactory.Options();
  2. options.inJustDecodeBounds = true;
  3. Bitmap bmp = BitmapFactory.decodeFile(path, options);
  4. /* q里q回的bmp是null */

复制代码

q段代码之后Qoptions.outWidth ?options.outHeight是我们惌的宽和高了?/p>

有了宽,高的信息Q我们怎样在图片不变Ş的情况下获取到图片指定大的~略囑֑Q?br />比如我们需要在囄不变形的前提下得到宽度ؓ(f)200的羃略图?br />那么我们需要先计算一下羃放之后,囄的高度是多少

  1. /* 计算得到囄的高?*/
  2. /* q里需要主意,如果你需要更高的_ֺ来保证图片不变Ş的话Q需要自p行一下数学运?*/
  3. int height = options.outHeight * 200 / options.outWidth;
  4. options.outWidth = 200Q?/li>
  5. options.outHeight = height;
  6. /* q样才能真正的返回一个Bitmapl你 */
  7. options.inJustDecodeBounds = false;
  8. Bitmap bmp = BitmapFactory.decodeFile(path, options);
  9. image.setImageBitmap(bmp);

复制代码

q样虽然我们可以得到我们期望大小的ImageView
但是在执行BitmapFactory.decodeFile(path, options);Ӟq没有节U内存?/span>要想节约内存Q还需要用到BitmapFactory.Optionsq个c里?inSampleSize q个成员变量?/span>
我们可以Ҏ(gu)囄实际的宽高和我们期望的宽高来计算得到q个倹{?/span>

  1. inSampleSize = options.outWidth / 200;

另外Qؓ(f)了节U内存我们还可以使用下面的几个字D:(x)

  1. options.inPreferredConfig = Bitmap.Config.ARGB_4444;    // 默认是Bitmap.Config.ARGB_8888
  2. /* 下面两个字段需要组合?*/
  3. options.inPurgeable = true;
  4. options.inInputShareable = true;

    



Terry Zou 2013-05-29 11:36 发表评论
]]>
<context-param>?lt;init-param>的区别与作用http://www.aygfsteel.com/ZouYonghui/archive/2013/05/27/399811.htmlTerry ZouTerry ZouMon, 27 May 2013 03:45:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2013/05/27/399811.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/399811.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2013/05/27/399811.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/399811.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/399811.html<context-param>的作?
web.xml的配|中<context-param>配置作用
1. 启动一个WEB目的时?容器(?Tomcat)?x)去d的配|文件web.xml.M个节? <listener></listener> ?<context-param></context-param>
2.紧接着,容器创徏一个ServletContext(上下?,q个WEB目所有部分都共享这个上下文.
3.容器?lt;context-param></context-param>转化为键值对,q交lServletContext.
4.容器创徏<listener></listener>中的cd?卛_建监?
5.在监听中?x)有contextInitialized(ServletContextEvent args)初始化方?在这个方法中获得ServletContext = ServletContextEvent.getServletContext();
context-param的?= ServletContext.getInitParameter("context-param的键");
6.得到q个context-param的g?你就可以做一些操作了.注意,q个时候你的WEB目q没有完全启动完?q个动作?x)比所有的Servlet都要?
换句话说,q个时?你对<context-param>中的键值做的操?在你的WEB目完全启动之前被执?
7.举例.你可能想在项目启动之前就打开数据?
那么q里可以在<context-param>中设|数据库的连接方?在监听类中初始化数据库的q接.
8.q个监听是自己写的一个类,除了初始化方?它还有销毁方?用于关闭应用前释放资?比如说数据库q接的关?
?
<!-- 加蝲spring的配|文?-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml,/WEB-
INF/jason-servlet.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
又如: --->自定义context-param,且自定义listener来获取这些信?/span>
<context-param>
    <param-name>urlrewrite</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>cluster</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>servletmapping</param-name>
    <param-value>*.bbscs</param-value>
</context-param>
<context-param>
    <param-name>poststoragemode</param-name>
    <param-value>1</param-value>
</context-param>
<listener>
    <listener-class>com.laoer.bbscs.web.servlet.SysListener</listener-class>
</listener>
public class SysListener extends HttpServlet implements ServletContextListener {
private static final Log logger = LogFactory.getLog(SysListener.class);
public void contextDestroyed(ServletContextEvent sce) {
  //用于在容器关闭时,操作
}
//用于在容器开启时,操作
public void contextInitialized(ServletContextEvent sce) {
   String rootpath = sce.getServletContext().getRealPath("/");
   System.out.println("-------------rootPath:"+rootpath);
   if (rootpath != null) {
    rootpath = rootpath.replaceAll("\\\\", "/");
   } else {
    rootpath = "/";
   }
   if (!rootpath.endsWith("/")) {
    rootpath = rootpath + "/";
   }
   Constant.ROOTPATH = rootpath;
   logger.info("Application Run Path:" + rootpath);
   String urlrewrtie = sce.getServletContext().getInitParameter("urlrewrite");
   boolean burlrewrtie = false;
   if (urlrewrtie != null) {
    burlrewrtie = Boolean.parseBoolean(urlrewrtie);
   }
   Constant.USE_URL_REWRITE = burlrewrtie;
   logger.info("Use Urlrewrite:" + burlrewrtie);
   其它略之....
   }
}
   /*最l输?br style="margin: 0px; padding: 0px; line-height: 22px;" />   -------------rootPath:D:\tomcat_bbs\webapps\BBSCS_8_0_3\
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Application Run Path:D:/tomcat_bbs/webapps/BBSCS_8_0_3/
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Use Urlrewrite:true
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Use Cluster:false
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
SERVLET MAPPING:*.bbscs
   2009-06-09 21:51:46,573 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Post Storage Mode:1
   */
context-param和init-param区别
web.xml里面可以定义两种参数Q?br style="margin: 0px; padding: 0px; line-height: 22px;" />(1)application范围内的参数Q存攑֜servletcontext中,在web.xml中配|如下:(x)
<context-param>
           <param-name>context/param</param-name>
           <param-value>avalible during application</param-value>
</context-param>
(2)servlet范围内的参数Q只能在servlet的init()Ҏ(gu)中取得,在web.xml中配|如下:(x)
<servlet>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>com.wes.controller.MainServlet</servlet-class>
    <init-param>
       <param-name>param1</param-name>
       <param-value>avalible in servlet init()</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>
在servlet中可以通过代码分别取用Q?br style="margin: 0px; padding: 0px; line-height: 22px;" />package com.wes.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class MainServlet extends HttpServlet ...{
    public MainServlet() ...{
        super();
     }
    public void init() throws ServletException ...{
         System.out.println("下面的两个参数param1是在servlet中存攄");
         System.out.println(this.getInitParameter("param1"));
         System.out.println("下面的参数是存放在servletcontext中的");
        System.out.println(getServletContext().getInitParameter("context/param"));
      }
}
W一U参数在servlet里面可以通过getServletContext().getInitParameter("context/param")得到
W二U参数只能在servlet的init()Ҏ(gu)中通过this.getInitParameter("param1")取得.


文章来源自:(x)http://www.cnblogs.com/hzj-/articles/1689836.html

Terry Zou 2013-05-27 11:45 发表评论
]]>
回调函数http://www.aygfsteel.com/ZouYonghui/archive/2013/05/27/399805.htmlTerry ZouTerry ZouMon, 27 May 2013 03:13:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2013/05/27/399805.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/399805.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2013/05/27/399805.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/399805.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/399805.htmlW一部分Q定义一个接口用于回调;
如下所C:(x)
public interface CallBackInterface {

     public void doSome();
     public void exectueMethod();
}

W二部分Q在一个类里面把它当做参数q用到该参数
如下所C:(x)

public class MethodB {

     public double getTime(CallBackInterface callBack){
          long start = System.currentTimeMillis();
          callBack.exectueMethod();
          long end = System.currentTimeMillis();
          System.out.println("cost time="+(end-start));
          return end-start;
     }
}

W三部分Q在另外一个类里面调用到getTimeҎ(gu)q实现回调函?br />如下所C?

public class MethodA {

     public static void main(String[] args) {
          MethodB b = new MethodB();
          double d = b.getTime(new CallBackInterface() {
         @Override
           public void exectueMethod() {
                // TODO Auto-generated method stub
                new MethodA().testMethod();
           }
   
           @Override
           public void doSome() {
                // TODO Auto-generated method stub
           }
          });
          System.out.println("d="+d);
     }
     public void testMethod(){
          for(int i=0;i<10000;i++)
           System.out.print("");
     }
}

输出l果Q?/p>

cost time=31
d=31.0

理解“回调函数”

所谓回调,是客户E序CLIENT调用服务E序SERVER中的某个函数SAQ然后SERVER又在某个时候反q来调用CLIENT中的某个函数CBQ对于CLIENT来说Q这个CB便叫做回调函数。例如Win32下的H口q程函数是一个典型的回调函数?
一般说来,CLIENT不会(x)自己调用CBQCLIENT提供CB的目的就是让SERVER来调用它Q而且是CLIENT不得不提供。由于SERVERq不知道CLIENT提供的CB叫甚名谁Q所以SERVER?x)约定CB的接口规范(函数原型Q,然后由CLIENT提前通过SERVER的一个函数R告诉SERVER自己要使用CB函数Q这个过E称为回调函数的注册QRUCؓ(f)注册函数。Web SERVERerviCliente以及(qing)Java的RMI都用到回调机Ӟ可以讉Kq程服务器程序?

下面举个通俗的例子:(x)
某天Q我打电(sh)话向你请教问题,当然是个NQ?)Q你一时想不出解决Ҏ(gu)Q我又不能拿着?sh)话在那里傻{,于是我们U定Q等你想出办法后打手机通知我,q样Q我挂掉电(sh)话办其它事情M。过了XX分钟Q我的手机响了,你兴高采烈的说问题已l搞定,应该如此q般处理。故事到此结束。这个例子说明了“异步Q回?#8221;的编E模式。其中,你后来打手机告诉我结果便是一?#8220;回调”q程Q我的手机号码必d以前告诉你,q便是注册回调函敎ͼ我的手机L(fng)应该有效q且手机能够接收C的呼叫,q是回调函数必须W合接口规范?
通过上面个h感觉到回调函数更多的应用是l合异步。比如:(x)ajax中jServer通过lg和服务器的异步通信?

什么是回调函数

_֦比喻:回调函数q真有点像?zhn)随n带的BP机:(x)告诉别hL(fng)Q在它有事情时Call(zhn)?
回调用于层间协作Q上层将本层函数安装在下层,q个函数是回调Q而下层在一定条件下触发回调Q例如作Z个驱动,是一个底层,他在收到一个数据时Q除了完成本层的处理工作外,q将q行回调Q将q个数据交给上层应用层来做进一步处理,q在分层的数据通信中很普遍?
其实回调和API非常接近Q他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反,他是高层提供l底层的调用Q对于低层他是未知的Q必ȝ高层q行安装Q这个安装函数其实就是一个低层提供的APIQ安装后低层不知道这个回调的名字Q但它通过一个函数指针来保存q个回调Q在需要调用时Q只需引用q个函数指针和相关的参数指针?/span>

其实Q回调就是该函数写在高层Q低层通过一个函数指针保存这个函敎ͼ在某个事件的触发下,低层通过该函数指针调用高层那个函数?/span>
【参考?/span>
http://blog.csdn.net/sweetwxh/article/details/2067139
http://liutiemeng.blog.51cto.com/120361/18874
http://kidult.iteye.com/blog/148982

 

 

 




 

--

public static void main(String[] args) {
  MethodB b = new MethodB();
  double d = b.getTime(new CallBackInterface() {
   
   @Override
   public void exectueMethod() {
    // TODO Auto-generated method stub
    new MethodA().testMethod();
   }
   
   @Override
   public void doSome() {
    // TODO Auto-generated method stub
    
   }
  });
  System.out.println("d="+d);
 }
 public void testMethod(){
  for(int i=0;i<10000;i++)
   System.out.print("");
 }


 




Terry Zou 2013-05-27 11:13 发表评论
]]>
decorators.xml的用?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/ZouYonghui/archive/2013/05/15/399310.html</guid><wfw:comment>http://www.aygfsteel.com/ZouYonghui/comments/399310.html</wfw:comment><comments>http://www.aygfsteel.com/ZouYonghui/archive/2013/05/15/399310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ZouYonghui/comments/commentRss/399310.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ZouYonghui/services/trackbacks/399310.html</trackback:ping><description><![CDATA[ <div>源文件ؓ(f)Q?a >http://wenku.baidu.com/view/433b1585d4d8d15abe234e3a.html</a><br />下面我简单写下这个例子:(x)<br />W一Q首先配|环境:(x)<br />(1)djar包,如:(x)sitemesh-2.4.1.jar攑֜lib?br />在web.xmld配置<br /><filter><br />  <filter-name>sitemesh</filter-name><br />  <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class><br /> </filter><br /> <br /> <filter-mapping><br />  <filter-name>sitemesh</filter-name><br />  <url-pattern>/*</url-pattern><br />  <dispatcher>REQUEST</dispatcher><br />  <dispatcher>FORWARD</dispatcher><br /> </filter-mapping><br />W二步:(x)<br />在WEB-INF下新建decorators.xml文g<br />内容如下Q?br /><decorators defaultdir="/decorators"><br /> <decorator name="main" page="main.jsp"><br />  <pattern>/*</pattern><br /> </decorator><br /></decorators><br />W三步:(x)<br />Ҏ(gu)decorators.xml文g里面的属性defaultdir在webroot下创Z个目录decoratorsQ在该目录下创徏一个main.jsp文g<br />内容如下Q?br /><%@ page contentType="text/html; charset=GBK"%> <br /><%@ include file="/includes/taglibs.jsp"%><br />  <html> <br />       <head> <br />        <meta http-equiv="Content-Type" content="text/html; charset=gbk"><br />           <title><decorator:title default="装饰器页?.." /></title> <br />           <decorator:head /> <br />       </head> <br />      <body> <br />        <div id="page"><br />         <div id="header"><br />             <jsp:include page="/includes/header.jsp"/><br />         </div><br />         <div id="content"><br />           <decorator:body /> <br />         </div><br />         <div id="footer"><br />             <jsp:include page="/includes/footer.jsp"/><br />         </div> <br />     </body> <br /> </html> <br />W四?br /><jsp:include page="/includes/header.jsp"/>为includes目录下的一个共同用的内容<br /><jsp:include page="/includes/footer.jsp"/>为includes目录下的一个共同用的内容<br /><decorator:head /> 为每个要讉K文g的内?br />如下所C问index.jsp<br />index.jsp内容为:(x)<br /><%@ page contentType="text/html; charset=GBK"%> <br /><%@ include file="/includes/taglibs.jsp"%><br /> <html> <br />      <head> <br />        <title>Agent Test</title> <br />      </head> <br />      <body> <br />        <p>本页只有是本句.</p> <br />      </body> <br /> </html> <br /><br />/includes/header.jsp内容为:(x)<br /><p><%@ page language="java" contentType="text/html; charset=gbk"<br />    pageEncoding="gbk"%><br /><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a ><br /><html>  <br /><head><br /><meta http-equiv="Content-Type" content="text/html; charset=gbk"><br /></head></p><p>      <body> <br />          sitemesh的例<hr><br />     </body> <br /></html> </p>/includes/footer.jsp内容为:(x)<br /><%@ page language="java" contentType="text/html; charset=ISO-8859-1"<br />    pageEncoding="gbk"%><br /><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a ><br /><html><br /><head><br /><meta http-equiv="Content-Type" content="text/html; charset=gbk"><br /><title>Insert title here</title><br /></head><br /><body><br /> <hr>chen56@msn.com<br /></body><br /></html><br /><br />讉K得到内容如下Q?br />sitemesh的例<br /><hr /><br /> <br /><div class="wmqeeuq" id="content"><br /><p>本页只有是本句.</p></div><br /><div class="wmqeeuq" id="footer"><br /><hr /><br />chen56@msn.com </div><br />当然q里最主要的是要记住引?include/taglibs.jsp<br />内容如下Q?br /><%@ taglib uri="<a prefix="decorator"%><br /><br /></div> <img src ="http://www.aygfsteel.com/ZouYonghui/aggbug/399310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ZouYonghui/" target="_blank">Terry Zou</a> 2013-05-15 16:04 <a href="http://www.aygfsteel.com/ZouYonghui/archive/2013/05/15/399310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置数据?mysql)http://www.aygfsteel.com/ZouYonghui/archive/2012/07/27/384195.htmlTerry ZouTerry ZouFri, 27 Jul 2012 11:29:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2012/07/27/384195.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/384195.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2012/07/27/384195.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/384195.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/384195.htmlq几天在弄个东西,要用到数据库Q以前就听说q数据库q接池这个概念,所以就打算在这个小东西中加入数据库q接池。呵c(din)从|上搜了一些资料。今天就整理一下。我搜到的设|基本上主要有两U方法我们以MySQL+TOMCATZQ?MySQL驱动文g不仅要在工程lib目录下,也要在Tomcat的lib目录下?/span>
1.把DataSource讄到我们的WEB目中,下面详细的介l下Q?/span>
W一步:(x)在我们的WEB目中的META-INF文g夹下建立一?span style="color: red;">context.xml

Xml代码 复制代码 收藏代码
  1. <?xml version='1.0' encoding='utf-8'?> 
  2.  
  3. <Context> 
  4.  
  5.     <Resource name="jdbc/mysql"    
  6.        auth="Container"    
  7.        type="javax.sql.DataSource"    
  8.        driverClassName="com.mysql.jdbc.Driver"    
  9.        url="jdbc:mysql://localhost/bbs"    
  10.        username="root"    
  11.        password="root"    
  12.        maxActive="50"    
  13.        maxIdle="20"    
  14.        maxWait="10000" />    
  15.  
  16. </Context> 

W二步:(x)在我们的WEB目下的WEB-INF文g夹下建立一?span style="color: red;">web.xml(如果存在了就不用了,直接修改p?
(q几天测试了一下,不做q步也可以,O(∩_∩)O哈哈~省事?
Xml代码 复制代码 收藏代码
  1. <resource-ref> 
  2.     <description>DB Connection</description> 
  3.     <res-ref-name>jdbc/mysql</res-ref-name> 
  4.     <res-type>javax.sql.DataSource</res-type> 
  5.     <res-auth>Container</res-auth> 
  6. </resource-ref> 

W三步:(x)我们可以用代码来获?span style="color: red;">Connection对象?br />
Java代码 复制代码 收藏代码
  1. package xushun.util; 
  2.  
  3. import java.sql.*; 
  4. import javax.sql.*; 
  5. import javax.naming.*; 
  6.  
  7. public class DBHelper { 
  8.      
  9.     public static Connection getConnection() throws SQLException,NamingException 
  10.     { 
  11.         // 初始化查扑֑名空?/span> 
  12.         Context initContext = new InitialContext(); 
  13.         Context envContext = (Context)initContext.lookup("java:/comp/env"); 
  14.         // 扑ֈDataSource 
  15.         DataSource ds = (DataSource)envContext.lookup("jdbc/mysql"); 
  16.         return ds.getConnection(); 
  17.     } 

2.把DataSource讄到我们的Tomcat中,下面详细的介l下Q测试用的JAVA代码和上面的一样就不帖ZQ:(x)
q里我查到的讄Ҏ(gu)有了一点区别了。有的h把DataSource讄在Tomcat的server.xml文g的GlobalNamingResources下面Q然后在context.xml中去映射。有的直接就写在context.xml中了
先说下在server.xmldDataSource
W一步:(x)在Tomcat的conf中的server.xml文g中找?div class="dp-highlighter">
Xml代码 复制代码 收藏代码
  1. <GlobalNamingResources> 
  2.   <!-- Editable user database that can also be used by 
  3.        UserDatabaseRealm to authenticate users 
  4.   --> 
  5.   <Resource name="UserDatabase" auth="Container" 
  6.             type="org.apache.catalina.UserDatabase" 
  7.             description="User database that can be updated and saved" 
  8.             factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
  9.             pathname="conf/tomcat-users.xml" /> 
  10. </GlobalNamingResources> 
修改?div class="dp-highlighter">
Xml代码 复制代码 收藏代码
  1. <GlobalNamingResources> 
  2.   <!-- Editable user database that can also be used by 
  3.        UserDatabaseRealm to authenticate users 
  4.   --> 
  5.   <Resource name="UserDatabase" auth="Container" 
  6.             type="org.apache.catalina.UserDatabase" 
  7.             description="User database that can be updated and saved" 
  8.             factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
  9.             pathname="conf/tomcat-users.xml" /> 
  10.   <Resource name="jdbc/bbs"      
  11.          auth="Container" type="javax.sql.DataSource" 
  12.          driverClassName="com.mysql.jdbc.Driver" 
  13.          maxIdle="20" 
  14.          maxWait="5000" 
  15.          username="root" 
  16.          password="admin" 
  17.          url="jdbc:mysql://localhost:3306/bbs"      
  18.          maxActive="100"  
  19.          removeAbandoned="true" 
  20.          removeAbandonedTimeout="60" 
  21.          logAbandoned="true"/> 
  22. </GlobalNamingResources> 

W二步:(x)在Tomcat的conf文g夹下的context.xml中加?br />
Xml代码 复制代码 收藏代码
  1. <ResourceLink name="jdbc/bbs" global="jdbc/bbs" type="javax.sql.DataSource"/> 

W三步:(x)是在WEB目的WEB-INF中的web.xmld
Xml代码 复制代码 收藏代码
  1. <resource-ref> 
  2.     <description>DB Connection</description> 
  3.     <res-ref-name>jdbc/mysql</res-ref-name> 
  4.     <res-type>javax.sql.DataSource</res-type> 
  5.     <res-auth>Container</res-auth> 
  6. </resource-ref> 

q有是在Tomcat文档中提到的Ҏ(gu)Q直接修改context.xml文g?/span>
在Tomcat的conf文g夹下的context.xml中加?div class="dp-highlighter">
Xml代码 复制代码 收藏代码
  1. <Resource name="jdbc/bbs"      
  2.               auth="Container" type="javax.sql.DataSource" 
  3.               driverClassName="com.mysql.jdbc.Driver" 
  4.               maxIdle="20" 
  5.               maxWait="5000" 
  6.               username="root" 
  7.               password="admin" 
  8.               url="jdbc:mysql://localhost:3306/bbs"      
  9.               maxActive="100"  
  10.               removeAbandoned="true" 
  11.               removeAbandonedTimeout="60" 
  12.               logAbandoned="true"/> 
然后是在WEB目的WEB-INF中的web.xmld
Xml代码 复制代码 收藏代码
  1. <resource-ref> 
  2.     <description>DB Connection</description> 
  3.     <res-ref-name>jdbc/mysql</res-ref-name> 
  4.     <res-type>javax.sql.DataSource</res-type> 
  5.     <res-auth>Container</res-auth> 
  6. </resource-ref> 

是q些了,如果有什么不太清楚的qaQ一L(fng)I下。等以后我在搜集下资料整理出上面用到的XML文g中各个标{属性及(qing)其代表的意思。有兴趣的也可以自己先查下?-)

<td>JNDI 查找名称</td>       <td>兌的引?lt;/td>

<td>java:comp/env</td>      <td>应用E序环境条目</td>

<td>java:comp/env/jdbc</td> <td>JDBC 数据源资源管理器q接工厂</td>

<td>java:comp/env/ejb</td>  <td>EJB 引用</td>

<td>java:comp/UserTransaction</td><td>UserTransaction 引用</td>

<td>java:comp/env/mail</td> <td>JavaMail ?x)话q接工厂</td>

<td>java:comp/env/url</td>  <td>URL q接工厂</td>

<td>java:comp/env/jms</td>  <td>JMS q接工厂和目?lt;/td>

<td>java:comp/ORB</td>      <td>应用E序lg之间׃n?ORB 实例</td>
参考如?/a>

Terry Zou 2012-07-27 19:29 发表评论
]]>
增加目中tomcat内存http://www.aygfsteel.com/ZouYonghui/archive/2012/03/20/372247.htmlTerry ZouTerry ZouTue, 20 Mar 2012 01:55:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2012/03/20/372247.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/372247.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2012/03/20/372247.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/372247.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/372247.htmlWindow->>Preferences>>JVM Settings在Append to the Parameters文本框中加入要设|的内存大小Q比如下面的讄
-Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M


Terry Zou 2012-03-20 09:55 发表评论
]]>
方便Eclipse+tomcat开?eclipse Password required问题解决Ҏ(gu)http://www.aygfsteel.com/ZouYonghui/archive/2012/03/15/371973.htmlTerry ZouTerry ZouThu, 15 Mar 2012 11:46:00 GMThttp://www.aygfsteel.com/ZouYonghui/archive/2012/03/15/371973.htmlhttp://www.aygfsteel.com/ZouYonghui/comments/371973.htmlhttp://www.aygfsteel.com/ZouYonghui/archive/2012/03/15/371973.html#Feedback0http://www.aygfsteel.com/ZouYonghui/comments/commentRss/371973.htmlhttp://www.aygfsteel.com/ZouYonghui/services/trackbacks/371973.htmlEclipse中加入Tomcat:http://wenku.baidu.com/view/784dcf4f2b160b4e767fcf10.html
Eclipse j2ee版本中如何配|tomcat是项目到tomcat容器中去Q?a >http://hi.baidu.com/81667/blog/item/c4134d8d2bc9260ab31bba83.html

eclipse Password required问题解决Ҏ(gu)

׃q个弹窗太烦(ch)人,现在这个简单的解决 Ҏ(gu) 贴出Q?/div>

首先在eclipse 的菜单栏 选择window菜单下的preferences

选择General 下面的NetworkConnections ActiveProvider 改ؓ(f)Direct卛_


2.eclipse导入工程

file->import->Existing Projects into Workspace



Terry Zou 2012-03-15 19:46 发表评论
]]>
վ֩ģ壺 ʵ| | | ɽ| | ԭ| ȫ| ƽ| ʷ| | Һ| ij| ¡| ǿ| | | | | | | | | ӽ| »Ȱ| ˮ| | ά| | ˮ| ӳ| ɽʡ| ¡| | | ͨ| 㶫ʡ| ߰| ն| ɽ| ߴ| |