﻿<?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-chenjinlong</title><link>http://www.blogjava.net/chenjinlong/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 17:59:12 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 17:59:12 GMT</pubDate><ttl>60</ttl><item><title>文件加密解密</title><link>http://www.blogjava.net/chenjinlong/archive/2011/08/26/357338.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Fri, 26 Aug 2011 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2011/08/26/357338.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/357338.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2011/08/26/357338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/357338.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/357338.html</trackback:ping><description><![CDATA[<p>/**加密<br />&nbsp; * <br />&nbsp; */<br />&nbsp;public static String doEncrypt(String xmlStr) {<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;return URLEncoder.encode(xmlStr, "GBK");<br />&nbsp;&nbsp;} catch (UnsupportedEncodingException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return "加密错误";<br />&nbsp;}</p>
<p>&nbsp;/**<br />&nbsp; * 解密<br />&nbsp; * @param saveFile<br />&nbsp; */<br />&nbsp;public static void decrypt(File saveFile) { <br />&nbsp;&nbsp;try { <br />&nbsp;&nbsp;&nbsp;BufferedReader reader = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader = new BufferedReader(new FileReader(saveFile));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String tempString = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str2 =null; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((tempString = reader.readLine()) != null) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;str2=URLDecoder.decode(tempString);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;FileOutputStream fos = new FileOutputStream(saveFile);<br />&nbsp;&nbsp;&nbsp;fos.write(str2.getBytes());<br />&nbsp;&nbsp;&nbsp;fos.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.close();<br />&nbsp;<br />&nbsp;&nbsp;} catch (IOException e) { <br />&nbsp;&nbsp;&nbsp;e.printStackTrace(); <br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;<br />&nbsp;public static void main(String[] args) throws UnsupportedEncodingException {<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;System.out.println(URLDecoder.decode("C:\\Documents and Settings\\chenchangqing\\Desktop\\实物转移_20110824030821.xml", "GBK"));<br />&nbsp;}</p><br /><br /><br />这是把文件内容转换成字符的方式<img src ="http://www.blogjava.net/chenjinlong/aggbug/357338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2011-08-26 11:49 <a href="http://www.blogjava.net/chenjinlong/archive/2011/08/26/357338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>smartupload.jar 实现文件上传下载</title><link>http://www.blogjava.net/chenjinlong/archive/2010/11/12/337943.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Fri, 12 Nov 2010 12:44:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/11/12/337943.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/337943.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/11/12/337943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/337943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/337943.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前台：&lt;form&nbsp;action="uploadimage.jsp"&nbsp;method="post"&nbsp;enctype="multipart/form-data"&nbsp;name="form1"&gt;&lt;input&nbsp;type="file"&nbsp;name="file"&gt;&lt;input&nbsp;type="submit"&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/chenjinlong/archive/2010/11/12/337943.html'>阅读全文</a><img src ="http://www.blogjava.net/chenjinlong/aggbug/337943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-11-12 20:44 <a href="http://www.blogjava.net/chenjinlong/archive/2010/11/12/337943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象 —方法重写、重载……</title><link>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329705.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Mon, 23 Aug 2010 12:10:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329705.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/329705.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/329705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/329705.html</trackback:ping><description><![CDATA[区别方法重写（覆盖）和方法重载？<br />
方法重写：方法名字、参数列表和返回类型必须相同。类中只允许出现一次这样的方法，要接着往子类当中写入。类中的方法覆盖，父类和子类都可以相同。<br />
方法重载：方法名字相同，参数列表必须要不同，返回类型随意。构造器就是典型的方法重载。<br />
<br />
this和super关键字的用法：this表示的本类的方法和成员；super表示父类的方法和成员。this（）和super（）都必须放在一个方法的开头。<br />
如果子类构造器中没有显式地调用父类构造器，也没有使用this关键字调用重载的其他构造器，则系统默认调用父类无参数的构造器，super（）。<br />
<br />
块执行：<br />
在一个类中有初始化块要先执行，然后再是构造器。<br />
如：<br />
public class Test<br />
{<br />
&nbsp;&nbsp;&nbsp; String name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String sex;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public Test()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Test1被调用");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sex ="Male";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("name="+name+" ,age="+age+" ,sex="+sex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public Test(String theName)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Test2被调用");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name = theName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("name="+name+" ,age="+age+" ,sex="+sex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name = "Tony Blair";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age = 50;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sex = "Female";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Test初始化块执行后：name="+name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+" ,age="+age+" ,sex="+sex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String args[])<br />
&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Test t=new Test();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
<img src ="http://www.blogjava.net/chenjinlong/aggbug/329705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-08-23 20:10 <a href="http://www.blogjava.net/chenjinlong/archive/2010/08/23/329705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>static和final关键字 </title><link>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329704.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Mon, 23 Aug 2010 12:09:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329704.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/329704.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/329704.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/329704.html</trackback:ping><description><![CDATA[<p><font color="#000000">static关键字可用在变量、方法和内部类中。<br />
在类的定义体中，方法的外部可包含static语句块，在所属的类被载入时执行一次，用于初始化static属性，但不能初始化非静态变量，类变量在整个类中共享。<br />
如：<br />
public class Count {<br />
&nbsp; private int serialNumber;<br />
&nbsp; public static int counter;</font> </p>
<p><font color="#000000">&nbsp; static {<br />
&nbsp;&nbsp;&nbsp; System.out.println("static自由块被执行");&nbsp;&nbsp; //先执行静态块<br />
&nbsp;&nbsp;&nbsp; counter = 1;<br />
&nbsp; }</font> </p>
<p><font color="#000000">&nbsp; public static int getTotalCount() {<br />
&nbsp;&nbsp;&nbsp; return counter;<br />
&nbsp; }<br />
&nbsp; public Count() {<br />
&nbsp;&nbsp;&nbsp; counter++;<br />
&nbsp;&nbsp;&nbsp; serialNumber=counter;<br />
&nbsp; }<br />
&nbsp; public static void main(String[] args)<br />
&nbsp; {<br />
&nbsp; &nbsp;System.out.println("main() invoked");<br />
&nbsp; &nbsp;System.out.println("counter = "+Count.counter);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Count t=new Count();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("counter = "+Count.counter+" "+t.serialNumber);<br />
&nbsp; }<br />
} <br />
<br />
java.lang.Math是一个final类，不可被继承，final变量是引用变量，则不可以改变它的引用对象，但可以改变对象的数据，final方法不可以被覆盖，但可以被重载。<br />
如：<br />
class Aclass<br />
{<br />
&nbsp;int a;<br />
&nbsp;//构造器<br />
&nbsp;public Aclass()<br />
&nbsp;{<br />
&nbsp;&nbsp;a = 100;<br />
&nbsp;}<br />
&nbsp;final public void paint(){<br />
&nbsp;&nbsp;System.out.println("55555555");<br />
&nbsp;}<br />
&nbsp;final public void paint(int i){<br />
&nbsp;&nbsp;System.out.println(i);<br />
&nbsp;}<br />
&nbsp;public void setA(int theA)<br />
&nbsp;{<br />
&nbsp;&nbsp;a = theA;<br />
&nbsp;}<br />
&nbsp;public int getA()<br />
&nbsp;{<br />
&nbsp;&nbsp;return a;<br />
&nbsp;}<br />
}</font> </p>
<p><font color="#000000">//定义一个类来测试<br />
public class TestFinal<br />
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果final变量是引用变量，则不可以改变它的引用对象，但可以改变对象的数据<br />
&nbsp;final Aclass REF_VAR=new Aclass();<br />
&nbsp;public static void main(String[] args)<br />
&nbsp;{<br />
&nbsp;&nbsp;TestFinal tf = new TestFinal();<br />
&nbsp;&nbsp;tf.REF_VAR.setA(1);<br />
&nbsp;&nbsp;System.out.println(tf.REF_VAR.getA());<br />
&nbsp;&nbsp;tf.REF_VAR.paint();<br />
&nbsp;&nbsp;tf.REF_VAR.paint(1);<br />
&nbsp;}<br />
}</font> </p>
<img src ="http://www.blogjava.net/chenjinlong/aggbug/329704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-08-23 20:09 <a href="http://www.blogjava.net/chenjinlong/archive/2010/08/23/329704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>abstract和interface关键字 </title><link>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329703.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Mon, 23 Aug 2010 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329703.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/329703.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/329703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/329703.html</trackback:ping><description><![CDATA[abstract用在方法或类前。抽象类必须继承，抽象方法必须重写。什么时候用呢？&nbsp; 当两个类分别有一个公共方法，然后分别继承公共类并完善抽象方法，这样实现一种框架对类起到一个管理的作用。<br />
<br />
interface声明方法和变量，特殊抽象类，和类不同的是，一个接口可以继承多个父类接口，多个无关的类可以实现同一个接口，一个类可以实现多个无关的接口。 
<img src ="http://www.blogjava.net/chenjinlong/aggbug/329703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-08-23 20:08 <a href="http://www.blogjava.net/chenjinlong/archive/2010/08/23/329703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于jsp页面间,通过url传递参数,出现乱码的问题. </title><link>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329702.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Mon, 23 Aug 2010 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329702.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/329702.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/329702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/329702.html</trackback:ping><description><![CDATA[1 . request.setCharacterEncoding("utf-8");<br />
只适合Post方法提交的数据，<br />
<br />
2 . 适合用Get方法提交的数据<br />
String name = request.getParameter("name");<br />
name=new String(name.getBytes(&#8220;ISO8859_1&#8221;),&#8220;UTF-8&#8221;);<br />
<br />
3 . <br />
针对Tomcat服务器，修改server.xml<br />
&lt;Connector port="8083" protocol="HTTP/1.1" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirectPort="8443" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URIEncoding="UTF-8" /&gt;<br />
这个只使用GET方法，不适合Post方法 
<img src ="http://www.blogjava.net/chenjinlong/aggbug/329702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-08-23 20:04 <a href="http://www.blogjava.net/chenjinlong/archive/2010/08/23/329702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用JDBC连接SQL SERVER 2008的方法 </title><link>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329701.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Mon, 23 Aug 2010 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329701.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/329701.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/329701.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/329701.html</trackback:ping><description><![CDATA[<p>使用JDBC连接SQL SERVER 2008，很多人都在问，我自己也测试几次，发现按照以前的方法连接会出现一点小问题。原因在于，SQL SERVER 2008采用了动态端口的机制，按照以前的方法连接会报告连接不了，其实端口写对了完全没有问题。连接方法如下：</p>
<p>1，微软目前没有发布针对SQL Server 2008专用的JDBC驱动程序，使用SQL Server 2005 的就可以了，但是，需要注意： SQL Server 2008的新功能无法使用，这个必须等专用的JDBC发布之后才能使用。下载地址： </p>
<p>Microsoft SQL Server 2005 JDBC Driver 1.2</p>
<p>http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba</p>
<p>2，设置端口为固定端口：</p>
<p>SQL Server 配置管理器，按图设置即可</p>
<p>&nbsp;<img height="622" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/net_lover/EntryImages/20090204/sqlserver2008.gif" width="419" /></p>
<p><br />
注意：动态端口设为空，即可禁用动态端口</p>
<p>连接的写法：</p>
<p><br />
jdbc:sqlserver://192.168.3.6:1368;databaseName=数据库名称;user=用户名;password=密码</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/chenjinlong/aggbug/329701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-08-23 20:03 <a href="http://www.blogjava.net/chenjinlong/archive/2010/08/23/329701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库连接池DBCP </title><link>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329700.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Mon, 23 Aug 2010 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329700.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/329700.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/08/23/329700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/329700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/329700.html</trackback:ping><description><![CDATA[<p>概念：数据库连接池负责分配、管理和释放数据库连接，它允许应用程序重复使用一个现有的数据库连接，而不再是重新建立一个连接；释放空闲时间超过最大空闲时间的数据库连接，以避免因为没有释放数据库连接而引起的数据库连接遗漏。</p>
<p>需要注意：<br />
1. 最小连接数是连接池一直保持的数据库连接，所以如果应用程序对数据库连接的使用量不大，将会有大量数据库连接资源被浪费。<br />
2. 最大连接数是连接池能申请的最大连接数，如果数据库连接请求超过此数，后面的数据库连接请求将被加入到等待队列中，这会影响之后的数据库操作。</p>
<p>数据库连接池的两个任务：<br />
1. 限制每个应用或系统可以拥有的最大资源，也就是确定连接池的大小（PoolSize）。<br />
2. 在连接池的大小（PoolSize）范围内、最大限度地使用资源，缩短数据库访问的使用周期。</p>
<p>例如： 物理连接数200个，每个连接提供250个Statemet，那么并发的Statement总数为200*250=50000个。</p>
<p>Java开源连接池：<br />
Jakarta DBCP 可直接在应用程序中使用。（比较常用，集成在Tomcat和Struts中）<br />
C3P0是Hibernate的默认数据库连接池。（常用，Hibernate）<br />
其他的还有Proxool、DDConnectionBroker、DBPool、XAPool、Primrose、SmartPool、MiniConnectionPoolManager。</p>
<p><br />
DBCP代码实现：<br />
//创建数据源<br />
public static DataSource setupDataSource(String connectURI) {<br />
&nbsp;&nbsp;&nbsp; BasicDataSource ds = new BasicDataSource();<br />
&nbsp;&nbsp;&nbsp; ds.setDriverClassName(org.gjt.mm.mysql.Driver);<br />
&nbsp;&nbsp;&nbsp; ds.setUsername("username");<br />
&nbsp;&nbsp;&nbsp; ds.setPassword("password");<br />
&nbsp;&nbsp;&nbsp; ds.setUrl(connectURI);<br />
&nbsp;&nbsp;&nbsp; return ds;&nbsp;&nbsp;&nbsp; <br />
}</p>
<p>//关闭数据源<br />
public static void shutdownDataSource(DataSource ds) throws SQLException {<br />
&nbsp;&nbsp;&nbsp; BasicDataSource bds = (BasicDataSource)ds;<br />
&nbsp;&nbsp;&nbsp; bds.close();<br />
}<br />
<br />
//数据源的使用<br />
</p>
<p>DataSource dataSource = getDataSource();<br />
&nbsp;&nbsp;Connection conn = null;<br />
&nbsp;&nbsp;PreparedStatement pstmt = null;<br />
&nbsp;&nbsp;ResultSet rs = null;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;conn = dataSource.getConnection();<br />
&nbsp;&nbsp;&nbsp;pstmt = conn.prepareStatement("select * from users");<br />
&nbsp;&nbsp;&nbsp;rs = pstmt.executeQuery();<br />
&nbsp;&nbsp;&nbsp;while(rs.next()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(rs.getInt("id"));<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;} catch(Exception e) {<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;} finally {<br />
&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;pstmt.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br />
&nbsp;&nbsp;&nbsp;} catch(Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}&nbsp;<br />
<br />
<br />
<br />
<br />
在Tomcat中配置数据库连接池：<br />
</p>
<p>我们使用Tomcat中lib文件夹下的tomcat-dbcp.jar。<br />
1.&nbsp;修改server.xml文件在&lt;Service&gt;中写入以下代码:<br />
&lt;Context path="/WebProject" docBase="WebProject" reloadable="true" crossContext="true"&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;Resource auth="Container" name="jdbc/CompanyDB" type="javax.sql.DataSource" <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; url="jdbc:sqlserver://localhost:1433;DataBaseName=Company"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; username="sa"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;password="root"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxActive="100"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;maxIdle="30"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxWait="10000"&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; removeAbandoned=&#8220;true&#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; removeAbandonedTimeOut="10"&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;logAbandoned="true"/&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;/Context&gt;<br />
<br />
<br />
path：工程路径。<br />
docBase：工程名字。<br />
name：JNDI的名字。<br />
type：数据源的类。<br />
factory：指定生成的DataReource的factory类名；默认DBCP工厂类。<br />
driverClassName：数据库驱动名。<br />
url：数据库连接的URL。<br />
username：数据库用户名。<br />
password：数据库密码。<br />
maxActive：最大连接数据库数，设为0表示没有限制。<br />
maxIdle：最大等待数量，设为0表示没有限制。<br />
maxWait：最大等待秒数，单位为ms。<br />
removeAbandoned：是否自我中断，默认为false。<br />
removeAbandonedTimeOut：几秒后会自我中断，removeAbandoned必须为true。<br />
logAbandoned：是否记录中断事件，默认为false。</p>
<br />
<br />
2. 修改web.xml文件，增加一个标签，输入以下代码：<br />
&lt;resource-ref&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;description&gt;Company Connection&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;res-ref-name&gt;jdbc/CompanyDB&lt;/res-ref-name&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;res-auth&gt;Container&lt;/res-auth&gt;<br />
&lt;/resource-ref&gt;<br />
<br />
res-ref-name：指定JNDI的名字。<br />
res-type：指定资源类名。<br />
res-auth：指定资源的Manager。<br />
<br />
3. 代码中使用JNDI代码进行获取：<br />
Context ctx = new InitalContext()；<br />
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/CompanyDB");<br />
Connection conn = ds.getConnection();<br />
<br />
<br />
<span style="color: red">注意：java:comp/env/ 是java中JNDI固定写法。</span> <br />
<br />
<br />
<span style="color: red">注意：如果该配置出现错误，采用另一种方式进行配置</span><br />
<br />
在tomcat中的server.xml不进行配置，而在context.xml中进行设置<br />
代码如下：<br />
&lt;Resource name="jdbc/CompanyDB" type="javax.sql.DataSource" password="root" <br />
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" maxIdle="2" maxWait="5000" username="sa" url="jdbc:sqlserver://localhost:1433;DataBaseName=Company" maxActive="100"/&gt;<br />
<br />
<br />
web.xml的设置同上一个配置一样。<br />
<img src ="http://www.blogjava.net/chenjinlong/aggbug/329700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-08-23 20:01 <a href="http://www.blogjava.net/chenjinlong/archive/2010/08/23/329700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于JSP几个内置对象的用法</title><link>http://www.blogjava.net/chenjinlong/archive/2010/05/27/322083.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Thu, 27 May 2010 12:54:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/05/27/322083.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/322083.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/05/27/322083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/322083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/322083.html</trackback:ping><description><![CDATA[<p>JSp的session内置对象取值方法<br />
//创建session对象<br />
HttpSession session =requst.getSession();<br />
//设置session 对象的属性值<br />
session.setAttribute("属性名",值);<br />
取值<br />
Object object=session.getAttibute("属性名")<br />
设置方法<br />
//设置响应回去的类型<br />
response.setContentType("text/html");<br />
//设置响应的字符编码格式<br />
response.setCharacterEncoding("UTF-8");</p>
<p>request(请求)<br />
//获取请求属性的值<br />
request.getParameter("属性名");<br />
多用于表单提交和URL参数的传递的取值</p>
<p>&nbsp;JSp内置对象生命周期：<br />
&nbsp;<br />
out 只在本jsp页面使用&nbsp; 无生命周期<br />
request&nbsp; 生命周期 一次请求 <br />
response 生命周期 一次响应<br />
session&nbsp; 生命周期&nbsp; 项目浏览器关闭时，生全周期结束，默认不操作项目超过30分钟生命周期结束<br />
application 生命周期&nbsp;&nbsp; 当开启Tomcat服务器时创建，关闭Tomcat服务器时结束生命周期&nbsp; (作用：统计服务器访问人数或流量)<br />
</p>
<p>&nbsp;<br />
</p>
<p>页面跳转:<br />
response.sendRedirect("admin/one.jsp")&nbsp; 重定向<br />
RequestDispatcher 请求跳转<br />
两者实现的效果相同<br />
二者的区别：<br />
1、<br />
URL 地址的变化用response.sendRedirect时，RequestDi.spatcher不会使URL地址进行变化。<br />
RepuestDispatcher 是服务器端请求机制的跳转<br />
response.sendRedirect 是客户端请求机制的重定向<br />
2、<br />
RequestDispatcher传值通过JSP-Servlet-JSp形式直接传入到下一个JSp页面<br />
response.sendRedirect 传值通过JSP-Servlet-JSP形式，只能够传递到请求机制重定向这之前<br />
3、<br />
如果项目要跳转到另外一个服务器的页面时，用response.sendRedirect进行重定向<br />
4、<br />
我们尽量使用RequestDispatcher方式，因为是服务器响应，所以在web容器执行效率较高</p>
<p><br />
RequestDispatcher什么时候使用呢？<br />
项目中不进行页面的交互跳转的时候，例如一个界面的增、删、改、查，或者相关联同类型模块之间的跳转</p>
<p>response.sendRedirect重定向什么时候使用呢？<br />
无关联的不同模块间跳转使用，例如，用户界面模块跳转到产品信息界面模块</p>
<p>5、<br />
RequestDispatcher基本上认定使用在Servlet里面<br />
response.sendRedirect 用在Servlet和JSP页面较多</p>
<br />
<p>重定向传值 只影响request，不影响session的传值</p>
<p>session何时使用?<br />
传值时尽量不要使用session<br />
购物车的实现必须使用session对象</p>
<p>session.removeAttribute("name") 全部删除物品<br />
如果选择性删除？<br />
传入要删除的购物信息主键id值，根据id值支查找集合中的对应信息，然后做集合中的删除操作<br />
for(Product product : list){</p>
<p>&nbsp;&nbsp;&nbsp; if(deleteid==product.getid()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.remove(product);<br />
}<br />
}<br />
session.setAttribute("gouwu",list)</p>
<br />
<br />
两种提交方式的乱码处理：<br />
<p>post提交方式乱码处理<br />
中文乱码问题<br />
request.setcharacterEncoding("UTF-8");</p>
<p>处理get方式提交的乱码方式处理<br />
String names=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")<br />
</p>
<img src ="http://www.blogjava.net/chenjinlong/aggbug/322083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-05-27 20:54 <a href="http://www.blogjava.net/chenjinlong/archive/2010/05/27/322083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>5月7日收获（DAO）</title><link>http://www.blogjava.net/chenjinlong/archive/2010/05/07/320304.html</link><dc:creator>chenjinlong</dc:creator><author>chenjinlong</author><pubDate>Fri, 07 May 2010 09:48:00 GMT</pubDate><guid>http://www.blogjava.net/chenjinlong/archive/2010/05/07/320304.html</guid><wfw:comment>http://www.blogjava.net/chenjinlong/comments/320304.html</wfw:comment><comments>http://www.blogjava.net/chenjinlong/archive/2010/05/07/320304.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/chenjinlong/comments/commentRss/320304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenjinlong/services/trackbacks/320304.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DAO程序设计<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在用DAO设计模式编写程序时，根据以下几个步骤：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、定义接口；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、定义底层JavaBean；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、数据库连接；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、实现接口；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、工厂；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、主函数；<br />
根据你的项目，在不同的包里面写相应的代码！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面是一个简单的例子：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
1、定义接口：&nbsp;
<p>package com.qhit.s2.t13.dao;</p>
<p>import java.util.List;</p>
<p>import com.qhit.s2.t13.javaben.User;</p>
<p>public interface IUserDAO {<br />
&nbsp;<br />
&nbsp;public List&lt;User&gt; findAll();</p>
<p>}<br />
2、JavaBean：<br />
</p>
<p>package com.qhit.s2.t13.javaben;</p>
<p>public class User {<br />
&nbsp;<br />
&nbsp;private Integer id;<br />
&nbsp;private String username;<br />
&nbsp;private String password;<br />
&nbsp;public User() {<br />
&nbsp;&nbsp;super();<br />
&nbsp;}<br />
&nbsp;public User(Integer id, String username, String password) {<br />
&nbsp;&nbsp;super();<br />
&nbsp;&nbsp;this.id = id;<br />
&nbsp;&nbsp;this.username = username;<br />
&nbsp;&nbsp;this.password = password;<br />
&nbsp;}<br />
&nbsp;public Integer getId() {<br />
&nbsp;&nbsp;return id;<br />
&nbsp;}<br />
&nbsp;public void setId(Integer 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 getPassword() {<br />
&nbsp;&nbsp;return password;<br />
&nbsp;}<br />
&nbsp;public void setPassword(String password) {<br />
&nbsp;&nbsp;this.password = password;<br />
&nbsp;}</p>
<p>}<br />
<br />
3、数据库连接：</p>
<p>package com.qhit.s2.t13.dao.impl;</p>
<p>import java.sql.DriverManager;<br />
import java.sql.SQLException;</p>
<p>public class DBConnection {<br />
&nbsp;<br />
&nbsp;private java.sql.Connection conn = null;<br />
&nbsp;<br />
//&nbsp;public final static String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";<br />
//&nbsp;public final static String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=Company";<br />
//&nbsp;public final static String DBUSER = "sa";<br />
//&nbsp;public final static String DBPASS = "root";<br />
&nbsp;<br />
&nbsp;public java.sql.Connection getConnection() {<br />
&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");<br />
&nbsp;&nbsp;&nbsp;conn = DriverManager.getConnection(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"jdbc:sqlserver://localhost:1433;DataBaseName=Company",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"sa", "root");<br />
&nbsp;&nbsp;&nbsp;return conn;<br />
&nbsp;&nbsp;} catch(Exception e) {<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return null;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;public void closeConnection() {<br />
&nbsp;&nbsp;if(conn != null) {<br />
&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br />
&nbsp;&nbsp;&nbsp;} catch (SQLException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>}<br />
<br />
4、实现接口：<br />
</p>
<p>package com.qhit.s2.t13.dao.impl;</p>
<p>import java.sql.PreparedStatement;<br />
import java.sql.ResultSet;<br />
import java.sql.SQLException;<br />
import java.util.ArrayList;<br />
import java.util.List;</p>
<p>import com.qhit.s2.t13.dao.IUserDAO;<br />
import com.qhit.s2.t13.javaben.User;</p>
<p>public class UserDAOImpl implements IUserDAO {</p>
<p>&nbsp;public List&lt;User&gt; findAll() {<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;List&lt;User&gt; userList = new ArrayList&lt;User&gt;();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;String sql = "select * from users";<br />
&nbsp;&nbsp;DBConnection db = new DBConnection();<br />
&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;<br />
//&nbsp;&nbsp;&nbsp;System.out.println(db.getConnection());<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;PreparedStatement ps = db.getConnection().prepareStatement(sql);<br />
&nbsp;&nbsp;&nbsp;ResultSet rs = ps.executeQuery();<br />
&nbsp;&nbsp;&nbsp;if(rs != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;while(rs.next()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User user = new User();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setId(rs.getInt("id"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setUsername(rs.getString("userName"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setPassword(rs.getString("password"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userList.add(user);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;rs.close();<br />
&nbsp;&nbsp;&nbsp;ps.close();<br />
&nbsp;&nbsp;&nbsp;db.closeConnection();<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;return userList;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;} catch (SQLException e) {<br />
&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;return null;<br />
&nbsp;&nbsp;} <br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;}</p>
<p>}<br />
<br />
5、工厂</p>
<p>package com.qhit.s2.t13.dao.impl;</p>
<p>import com.qhit.s2.t13.dao.IUserDAO;</p>
<p>public class DAOFactory {<br />
&nbsp;<br />
&nbsp;public static IUserDAO getUserDAO() {<br />
&nbsp;&nbsp;return new UserDAOImpl();<br />
&nbsp;}</p>
<p>}<br />
<br />
</p>
<p>6、主函数：</p>
<p>package main;</p>
<p>import java.util.List;</p>
<p>import com.qhit.s2.t13.dao.impl.DAOFactory;<br />
import com.qhit.s2.t13.javaben.User;</p>
<p>public class TestMain {<br />
<br />
&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;// TODO Auto-generated method stub<br />
&nbsp;&nbsp;List&lt;User&gt; list = DAOFactory.getUserDAO().findAll();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;if(list != null) {<br />
&nbsp;&nbsp;&nbsp;System.out.println("chenggong");<br />
&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;System.out.println("shipai");<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;}</p>
<p>}<br />
</p>
<p><br />
&nbsp;</p>
<p><br />
</p>
<p><br />
&nbsp;</p>
<p><br />
</p>
<img src ="http://www.blogjava.net/chenjinlong/aggbug/320304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenjinlong/" target="_blank">chenjinlong</a> 2010-05-07 17:48 <a href="http://www.blogjava.net/chenjinlong/archive/2010/05/07/320304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>