﻿<?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-Anti</title><link>http://www.blogjava.net/pzhwfl/</link><description>Anti's BlogJava</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 10:58:00 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 10:58:00 GMT</pubDate><ttl>60</ttl><item><title>包含文件上传的form在servlet中获取字段的总结</title><link>http://www.blogjava.net/pzhwfl/archive/2012/02/14/369915.html</link><dc:creator>Anti</dc:creator><author>Anti</author><pubDate>Tue, 14 Feb 2012 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/pzhwfl/archive/2012/02/14/369915.html</guid><wfw:comment>http://www.blogjava.net/pzhwfl/comments/369915.html</wfw:comment><comments>http://www.blogjava.net/pzhwfl/archive/2012/02/14/369915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pzhwfl/comments/commentRss/369915.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pzhwfl/services/trackbacks/369915.html</trackback:ping><description><![CDATA[项目中的一个form包含&lt;input type="file" .. /&gt; , 同时还要获取form中其他input字段的value，在网上搜索了一下，有收获<br />
转自<a href="http://linjiacheng.iteye.com/blog/225777">http://linjiacheng.iteye.com/blog/225777</a>&nbsp;<br />
<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: 10pt; color: #3366ff; ">"在做项目的时候，常常碰到要上传一些附件，处理方法是在页面中添加&lt;input type="file"&gt;控件，并且在对应的表单中添加enctype="multipart/form-data"属性,但是我们为表单添加该属性的时候页面就会以另外一种方式（具体怎么变化还有待于调查）提交，导致在服务器端用request.getParameter(name)无法正常的获取信息，一般得到的都为null。为了解决该问题，有时候我们会把参数设置到URI中，这样服务器端用request.getParameter（name）也是可以正常获取，不过如果要获取的信息量比较大、比较多，这样就比较麻烦。还好有一种新的解决办法，大致的代码如下：</span><span style="font-size: 10pt; color: #3366ff; ">&nbsp;"</span><br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&nbsp; &nbsp; &nbsp; &nbsp;String&nbsp;tmpDir&nbsp;=&nbsp;"D:\"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isCSVQeury&nbsp;=&nbsp;request.getParameter("iscsv")&nbsp;!=&nbsp;null&nbsp;&amp;&amp;&nbsp;"true".equals(request.getParameter("iscsv"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DiskFileItemFactory&nbsp;dfi&nbsp;=&nbsp;new&nbsp;DiskFileItemFactory();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfi.setRepository(new&nbsp;File(tmpDir));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletFileUpload&nbsp;fu&nbsp;=&nbsp;new&nbsp;ServletFileUpload(dfi);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fu.setHeaderEncoding("UTF-8");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fu.setSizeMax(-1);&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;fileItems&nbsp;=&nbsp;null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileItems&nbsp;=&nbsp;fu.parseRequest(request);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;paramsMap&nbsp;=&nbsp;new&nbsp;Hashtable();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file&nbsp;=&nbsp;null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;i&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">&nbsp;fileItems</span><span style="color: #FF0000; ">.size();i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileItem&nbsp;fItem&nbsp;</span><span style="color: #0000FF; ">=&nbsp;(FileItem)fileItems.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">if(fItem.isFormField()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SearchConditionBuilder.OFFICIAL_ITEM_TYPE_ATTR.equals(fItem.getFieldName())){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;checkboxList&nbsp;</span><span style="color: #0000FF; ">=&nbsp;null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">if(paramsMap.containsKey(SearchConditionBuilder.OFFICIAL_ITEM_TYPE_ATTR)){<br />
&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;checkboxList&nbsp;</span><span style="color: #0000FF; ">=&nbsp;(List)paramsMap.get(SearchConditionBuilder.OFFICIAL_ITEM_TYPE_ATTR);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">}else{<br />
&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;checkboxList&nbsp;</span><span style="color: #0000FF; ">=&nbsp;new&nbsp;</span><span style="color: #FF0000; ">ArrayList();<br />
&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;paramsMap.put(SearchConditionBuilder.OFFICIAL_ITEM_TYPE_ATTR,&nbsp;checkboxList);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkboxList.add(fItem.getString("UTF-8"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paramsMap.put(fItem.getFieldName(),&nbsp;fItem.getString("UTF-8"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if(isCSVQeury){<br />
&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;String&nbsp;fileName&nbsp;</span><span style="color: #0000FF; ">=&nbsp;fItem.getName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">if(fileName&nbsp;</span><span style="color: #0000FF; ">==&nbsp;</span><span style="color: #FF0000; ">null&nbsp;||&nbsp;fileName.length()&nbsp;</span><span style="color: #0000FF; ">==&nbsp;</span><span style="color: #FF0000; ">0)&nbsp;continue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;fileName&nbsp;</span><span style="color: #0000FF; ">=&nbsp;RequestHelper.getFileName(fileName,&nbsp;</span><span style="color: #FF0000; ">request);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;file&nbsp;</span><span style="color: #0000FF; ">=&nbsp;new&nbsp;</span><span style="color: #FF0000; ">File(tmpDir,&nbsp;HashEngine.getSequence());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fItem.write(file);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div><br /><br />我自己也添加了一些元素。<br />作者提交添加到url当中在信息量较少的时候比较实用，经过试验，原来还可以这样写，以前不知道。。。<br />&lt;form action="ServletTest?url=xxxxx" ... /&gt;<br />然后在servlet中可以直接request.getParameter("url") 来取值。<br />例如，我在这个JSP页面中获取上个页面中URL的值，然后放到action当中再传递给servlet<br /><div>&lt;form action="uploadServlet?hostName=${param.hostName } &nbsp;... &nbsp;/&gt;<br />servlet中<br />String hostName = request.getParameter("hostName");<br />经测试，能够正确得到hostName的值。<br />之前在包含&lt;input type="file" .. /&gt;的情况下，用request.getParameter接受&lt;input type="hidden" value="${param.hostName}" /&gt;得到的是null</div><img src ="http://www.blogjava.net/pzhwfl/aggbug/369915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pzhwfl/" target="_blank">Anti</a> 2012-02-14 10:15 <a href="http://www.blogjava.net/pzhwfl/archive/2012/02/14/369915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dissecting Spring's MVC Project POM</title><link>http://www.blogjava.net/pzhwfl/archive/2012/02/03/369306.html</link><dc:creator>Anti</dc:creator><author>Anti</author><pubDate>Fri, 03 Feb 2012 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/pzhwfl/archive/2012/02/03/369306.html</guid><wfw:comment>http://www.blogjava.net/pzhwfl/comments/369306.html</wfw:comment><comments>http://www.blogjava.net/pzhwfl/archive/2012/02/03/369306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pzhwfl/comments/commentRss/369306.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pzhwfl/services/trackbacks/369306.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: From&nbsp;http://java.dzone.com/articles/dissecting-springs-mvc-projectSubmitted by Roger Hughes on Mon, 2011/09/26comments:IMHO this example is not a working example of a real project.Every project i...&nbsp;&nbsp;<a href='http://www.blogjava.net/pzhwfl/archive/2012/02/03/369306.html'>阅读全文</a><img src ="http://www.blogjava.net/pzhwfl/aggbug/369306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pzhwfl/" target="_blank">Anti</a> 2012-02-03 10:20 <a href="http://www.blogjava.net/pzhwfl/archive/2012/02/03/369306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POM.XML的例子</title><link>http://www.blogjava.net/pzhwfl/archive/2012/02/02/369219.html</link><dc:creator>Anti</dc:creator><author>Anti</author><pubDate>Thu, 02 Feb 2012 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/pzhwfl/archive/2012/02/02/369219.html</guid><wfw:comment>http://www.blogjava.net/pzhwfl/comments/369219.html</wfw:comment><comments>http://www.blogjava.net/pzhwfl/archive/2012/02/02/369219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pzhwfl/comments/commentRss/369219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pzhwfl/services/trackbacks/369219.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">project<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF0000; ">xsi:schemaLocation</span><span style="color: #0000FF; ">="http://maven.apache.org/POM/4.0.0&nbsp;http://maven.apache.org/xsd/maven-4.0.0.xsd"</span><span style="color: #FF0000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns</span><span style="color: #0000FF; ">="http://maven.apache.org/POM/4.0.0"</span><span style="color: #FF0000; ">&nbsp;xmlns:xsi</span><span style="color: #0000FF; ">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span>4.0.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp; &nbsp; ...<br />
<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span></div><div><strong>1 表框架&nbsp;</strong></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;The&nbsp;Basics&nbsp;</span><span style="color: #008000; ">--&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">packaging</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">packaging</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependencies</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependencies</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">parent</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">parent</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependencyManagement</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependencyManagement</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">modules</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">modules</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">properties</span><span style="color: #0000FF; ">&gt;</span><img src="http://www.blogjava.net/Images/dot.gif" alt="" /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">properties</span><span style="color: #0000FF; ">&gt;</span></div><strong>2 基本内容：</strong> POM包含了所有项目信息。<br />&nbsp; groupId: 项目或组织的唯一标示，路径由此生成。<br />&nbsp; artifactId: 项目通用名称<br />&nbsp; version: 项目版本<br />&nbsp; packaging: 打包机制，pom, jar, maven-plugin, ejb, war, ear, rar, par&nbsp;<br />&nbsp; classifier: 分类<br /><br /><strong>3 POM关系：依赖，继承，合成</strong><br />-3.1 依赖关系：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependencies</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>junit<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>junit<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>4.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">type</span><span style="color: #0000FF; ">&gt;</span>jar<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">type</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">scope</span><span style="color: #0000FF; ">&gt;</span>test<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">scope</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">optional</span><span style="color: #0000FF; ">&gt;</span>true<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">optional</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependencies</span><span style="color: #0000FF; ">&gt;</span></div>&nbsp; groupId, artifactId, version: 依赖的唯一标示<br />&nbsp; type: 相应的依赖产品的形式，如jar, war<br />&nbsp; scope: 限制依赖范围，包括<br />&nbsp; &nbsp; &nbsp;<span style="font-size: 8pt; ">compile: 默认，用于编译</span><br /><span style="font-size: 8pt; ">&nbsp; &nbsp; &nbsp; provided: 类似于编译，但支持你期待的jdk或容器提供，类似classpath</span><br /><span style="font-size: 8pt; ">&nbsp; &nbsp; &nbsp; runtime: 在执行时需要使用</span><br /><span style="font-size: 8pt; ">&nbsp; &nbsp; &nbsp; test: 用于test任务时使用</span><br /><span style="font-size: 8pt; ">&nbsp; &nbsp; &nbsp; system: 需要外在提供相应元素，通过systemPath获取</span><br />&nbsp; systemPath: 标注&lt;scope&gt;system&lt;/scope&gt;的路径<br />&nbsp; optional: 标注可选，当项目自身也是依赖时，用于连续依赖时使用<br /><br />-3.2 独占性<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.springframework<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>spring-hibernate3<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>2.0.8<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">exclusions</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">exclusion</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>jta<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>javax.transaction<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">exclusion</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">exclusions</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000ff; ">&gt;</span></div>告诉maven只包括指定项目，不包括相关依赖。主要用于解决版本冲突。<br />eg中表示项目spring-hibernate3需要项目jta，但是我们不想引用jta。<br /><br />-3.3继承关系<br />&nbsp; 父项目<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span>4.0.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.codehaus.mojo<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>my-parent<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>2.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">packaging</span><span style="color: #0000FF; ">&gt;</span>pom<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">packaging</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span></div>&nbsp; 子项目<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span>4.0.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">parent</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.codehaus.mojo<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>my-parent<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>2.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">relativePath</span><span style="color: #0000FF; ">&gt;</span>../my-parent<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">relativePath</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">parent</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>my-project<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span></div>relativePath可以不需要，但是用于指明parent的目录，用于快速查找。<br /><br />4 合成（多模块）<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span>4.0.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">modelVersion</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.codehaus.mojo<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>my-parent<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>2.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">modules</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">module</span><span style="color: #0000FF; ">&gt;</span>my-project1<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">module</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">module</span><span style="color: #0000FF; ">&gt;</span>my-project2<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">module</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">modules</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span></div><br /><strong>5 for more information, get this.</strong><br /><div><a href="http://www.blogjava.net/zyl/archive/2006/12/30/91055.html">http://www.blogjava.net/zyl/archive/2006/12/30/91055.html</a></div><img src ="http://www.blogjava.net/pzhwfl/aggbug/369219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pzhwfl/" target="_blank">Anti</a> 2012-02-02 14:22 <a href="http://www.blogjava.net/pzhwfl/archive/2012/02/02/369219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Class.forName()在数据库开发中的一二</title><link>http://www.blogjava.net/pzhwfl/articles/368708.html</link><dc:creator>Anti</dc:creator><author>Anti</author><pubDate>Wed, 18 Jan 2012 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/pzhwfl/articles/368708.html</guid><wfw:comment>http://www.blogjava.net/pzhwfl/comments/368708.html</wfw:comment><comments>http://www.blogjava.net/pzhwfl/articles/368708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pzhwfl/comments/commentRss/368708.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pzhwfl/services/trackbacks/368708.html</trackback:ping><description><![CDATA[<div>
<div>
<div><span style="font-size: 12px; line-height: 18px; color: #339966; ">来自: http://hi.baidu.com/zxf1986518/blog/item/c5fac9cebbc33b32b600c849.html</span></div>
<div><span style="font-size: 12px; line-height: 18px;"><br />
</span></div>
<div><span style="font-size: 12px; line-height: 18px;">终于明白为什么加载数据库驱动只用Class.forName（）了！！困扰了我2个小时！！希望我写的这个东西对各位有所帮助。&nbsp;</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp;</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp; &nbsp; 在Java开发特别是数据库开发中，经常会用到Class.forName( )这个方法。通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。在加载完成后，一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此，单单使用Class.forName( )是动态加载类是没有用的，其最终目的是为了实例化对象。&nbsp;</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp; &nbsp; 这里有必要提一下就是Class下的newInstance()和new有什么区别？，首先，newInstance( )是一个方法，而new是一个关键字，其次，Class下的newInstance()的使用有局限，因为它生成对象只能调用无参的构造函数，而使用 new关键字生成对象没有这个限制。&nbsp;<br />
<br />
</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp; &nbsp; 好，到此为止，我们总结如下：&nbsp;</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp; &nbsp;</span><span style="font-size: 12px; line-height: 18px; color: #333333; ">Class.forName("")</span><span style="font-size: 12px; line-height: 18px;">返回的是类&nbsp;</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp; &nbsp;</span><span style="font-size: 12px; line-height: 18px; color: #333333; ">Class.forName("").newInstance()</span><span style="font-size: 12px; line-height: 18px;">返回的是object&nbsp;</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp; &nbsp;有数据库开发经验朋友会发现，为什么在我们加载数据库驱动包的时候有的却没有调用newInstance( )方法呢？即有的jdbc连接数据库的写法里是Class.forName(xxx.xx.xx);而有一 些：Class.forName(xxx.xx.xx).newInstance()，为什么会有这两种写法呢？</span></div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp; &nbsp; &nbsp;刚才提到，Class.forName("");的作用是要求JVM查找并加载指定的类，如果在类中有静态初始化器的话，JVM必然会执行该类的静态代码 段。而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己，即任何一个JDBC Driver的 Driver类的代码都必须类似如下：</span></div>
<div><span style="font-size: 12px; line-height: 18px; color: #666699; ">&nbsp; &nbsp;&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">public</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">class</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;MyJDBCDriver&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">implements</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;Driver&nbsp;{</span></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all">&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DriverManager.registerDriver(<span style="color: #0000FF; ">new</span>&nbsp;MyJDBCDriver());<br />&nbsp;&nbsp;}<br />}</div>
<div><span style="font-size: 12px; line-height: 18px;">&nbsp;既然在静态初始化器的中已经进行了注册，所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了。</span></div>
<div><span style="font-size: 12px; line-height: 18px;"><br />
</span></div>
<div><span style="font-size: 12px; line-height: 18px;">相关 英文参考文献如下：</span></div>
<div><span style="font-size: 12px; line-height: 18px; color: #808080; ">we just want to load the driver to jvm only, but not need to user the instance of driver, so call Class.forName(xxx.xx.xx) is enough, if you call Class.forName(xxx.xx.xx).newInstance(), the result will same as calling Class.forName(xxx.xx.xx), because Class.forName(xxx.xx.xx).newInstance() will load driver first, and then create instance, but the instacne you will never use in usual, so you need not to create it.</span></div>
</div>
</div><img src ="http://www.blogjava.net/pzhwfl/aggbug/368708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pzhwfl/" target="_blank">Anti</a> 2012-01-18 14:39 <a href="http://www.blogjava.net/pzhwfl/articles/368708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>