﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-狂虫臭博</title><link>http://www.blogjava.net/warrenwu/</link><description>我是java界的一只臭虫!!!</description><language>zh-cn</language><lastBuildDate>Sat, 02 May 2026 14:10:33 GMT</lastBuildDate><pubDate>Sat, 02 May 2026 14:10:33 GMT</pubDate><ttl>60</ttl><item><title>中國作家是為了什麽而出書？？？</title><link>http://www.blogjava.net/warrenwu/archive/2007/01/24/95760.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Wed, 24 Jan 2007 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2007/01/24/95760.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/95760.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2007/01/24/95760.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/95760.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/95760.html</trackback:ping><description><![CDATA[如題，這點我現在越來越迷茫了，到書店也只是隨手翻翻看看，買書的興趣越來越低了。因爲我真的不知道作家出書的目的。前些日子買的ejb3.0的書在網上查了下，是2006-12-1出版的，譯者儸時飛。在查看最新出版的書籍時，竟然發現作者還有一本《精通spring2.0》出版了，時間是2007-1-1，在相差短短的1個月的時間，作者出書真是迅速的沒得說，現在我們的作家不論你有多麽才智過人，也不會有如此迅速的出書速度吧,我想更多的還是跟商業挂鈎吧.這主要不是針對此書作者，因爲這本書我沒看，我不加評論，但有的作家很是不負責任,為了搶時間,搶市場,東拉西扯的湊了一大堆沒有,甚至可以說是垃圾的東西放到一起竟然也能出書!!!還是希望淨化出書的目的.<br />我真是悲哀啊~~~但不是為我們的作家悲哀,而是為我的錢悲哀~~~<br /><img src ="http://www.blogjava.net/warrenwu/aggbug/95760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2007-01-24 16:36 <a href="http://www.blogjava.net/warrenwu/archive/2007/01/24/95760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>恶心的Date</title><link>http://www.blogjava.net/warrenwu/archive/2006/12/18/88605.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Mon, 18 Dec 2006 10:49:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/12/18/88605.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/88605.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/12/18/88605.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/88605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/88605.html</trackback:ping><description><![CDATA[
		<p>把我费了半个小时解决的垃圾问题写下来.</p>
		<p>用JDBC时,PreparedStatement就会用到set()方法,但set进去的则是java.sql.Date类型,而不是java.util.Date类型,问题就出来了,比如当你set进去一个时间(假设时间<font color="#ff0000">2006-12-18 15:43:23</font>),如下:</p>
		<p>
		</p>
		<table style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; WIDTH: 278px; BORDER-BOTTOM: 1px solid; HEIGHT: 23px" cellspacing="0" cellpadding="0" width="278" border="1">
				<tbody>
						<tr>
								<td> <font color="#008000">java.sql.Date today = new java.sql.Date();</font></td>
						</tr>
				</tbody>
		</table>
		<p>我要查在这个时间以前的数据,可结果却返回了<font color="#ff0000">17号以前的结果</font><font color="#000000">,</font></p>在数据库里查也是没有问题的,但问题出在什么地方呢?后来找到的答案就是:通过这种方式java.sql.Date会省略小时/分/秒,转成的SQL会默认为<font color="#ff0000">2006-12-18 00:00:00</font><font color="#000000">,</font>认为是查<font color="#ff0000">2006-12-18 00:00:00</font><font color="#000000">之前的结果.就这样才造成了这次头痛的事件,而这一代码还不是本人所写,看别人的代码真是累!<br /><br />最后只好在时间上加1天,否则就需要用字符串比较.不知道还有其他方法没?</font><img src ="http://www.blogjava.net/warrenwu/aggbug/88605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-12-18 18:49 <a href="http://www.blogjava.net/warrenwu/archive/2006/12/18/88605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]java数据库连接</title><link>http://www.blogjava.net/warrenwu/archive/2006/10/08/73730.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Sun, 08 Oct 2006 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/10/08/73730.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/73730.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/10/08/73730.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/73730.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/73730.html</trackback:ping><description><![CDATA[
		<p>这是一篇基础性文章，主要介绍了jdbc在流行数据库(sql server,oracle)方面的应用。但是都是个人观点，所以不能保证完全正确，仅供参考，如果有不同意见可以在评论中指出，我会做相应的修改。:) <br />一般情况下,直接用jdbc等东西连数据库时,比较常用连数据库的代码可能是: <br />private Connection conn <br />private String poolURL = ""; <br />private String driverName =""; <br />private String user="" <br />private String pass=""; <br />private DBConnProxy Proxy; //自己写的class,起控制数据库访问作用 <br />public Object getConn() <br />{ <br />try <br />{ <br />Properties prop=new Properties(); <br />prop.setProperty("user",user); <br />prop.setProperty("password",pass); <br />Driver mydriver=(Driver)Class.forName(driverName).newInstance(); <br />conn = mydriver.connect(poolURL,prop);//或者conn = mydriver.connect(poolURL,null);具体什么时候用我还的请教高手。 <br />/* <br />或者: <br />Class.forName(driverName); <br />conn=DriverManager.getConnection(poolURL, user, pass); <br />*/ <br />} <br />catch ( Exception e ) <br />{ <br />System.out.println("打开数据库出错\n" + e.getMessage()); <br />} <br /><br />if(!Proxy.getDB() ){ <br />this.Close() <br />return null; <br />} <br /><br />return conn; <br />} <br />其中的 driverName,poolURL,user,pass都可以通过读取 xml文件或普通属性文件获取。而是连sqlserver还是oracle就只是改改配置就可以了。 <br />它们都可以用 sun.jdbc.odbc.JdbcOdbcDriver 来连。对应poolURL="jdbc:odbc:test",user,pass略 <br />也可以用自己特有的: <br />sqlserver:weblogic.jdbc.mssqlserver4.Driver (网上下) 对应poolURL="jdbc:weblogic:mssqlserver4:ceic@127.0.0.1" //ceic是数据库名，127.0.0.1是数据源位置,可以是远程的数据库,user,pass略 <br />oracle:oracle.jdbc.driver.OracleDriver (class12.zip,装了oracle就应该有了) 对应jdbc:oracle:thin:scott/tiger@10.1.103.234:1521:sp" scott/tiger连接身份的用户名/密码,10.1.103.234,数据源ip,1521:端口(默认是1521). sp指向数据库名user,pass略 <br />如果用的weblogic配的数据库连接，可以通过 <br />Context ctx = new InitialContext(); <br />DataSource ds = (DataSource)ctx.lookup("forceicdatasource"); //forceicdatasource是配的datasource.也可以通过和上面统一的方法来调用。 <br />weblogic:weblogic.jdbc.pool.Driver //driverName <br />对应的poolURL="jdbc:weblogic:pool:poolname" //poolname是在weblogic中配的jdbc类型的connections pool的名字。user,pass是weblogic用户（administrators用户组中的用户）的用户名和密码。(如果不是用DriverManager就用不上，"conn = mydriver.connect(poolURL,null);"就是在这种情况下可以用。我在weblogic 6.1下测试通过) <br />综上说的，可以看出，大多数数据库连接都可以通过配置 属性文件 来灵活的获取。（移植起来很是方便，并且对应用基本没有什么影响，当然也可以夸平台)所以我可以通过动态读取属性文件来解决。 <br />private String javaHome = System.getProperty("java.home"); <br />private final String FS = System.getProperty("file.separator"); <br />private String path = javaHome+FS+"db.properties"; //把db.properties放在系统属性java.home下，一般是jdk目录下的 jre目录里。 <br />public boolean getInfo(){ <br />File file=new java.io.File(path); <br />Properties pro=new Properties(); <br />boolean readsucced; <br />try{ <br />InputStream in=new BufferedInputStream(new FileInputStream(file)); <br />pro.load(in); <br />driverName=pro.getProperty("driverName"); <br />poolURL=pro.getProperty("poolURL") <br />user=pro.getProperty("user") <br />pass=pro.getProperty("pass") <br />//自己把它们trim()掉。我就偷懒不写了。 <br />readsucced=true; <br />}catch(Exception e){System.out.println("读取属性文件出错");readsucced=false;} <br />return readsucced; <br />} <br />不过一般只用读一次就可以了。所以可以把它放在 static{}块里，也可以放在构造器里面(然后和放在静态连接池，如果是单独的应用，应该把getInfo()作为静态类和数据库连接类分开)。 <br />public DBConn() { <br />setDBConnProxy(ProxyFactory.DefaultType );//设定连接proxy,控制数据库连接频率，可能会牺牲效力，不过在防止恶意破坏上有点作用，自己写的毕竟赶不上weblogic的连接池了。所以只好做点小的防范措施.如果是用weblogic配的连接池，可以直接在proxyFactory里面加个什么都不做的proxy. <br />getInfo(); <br />} <br />属性文件db.properties内容如下: <br />driverName=sun.jdbc.odbc.JdbcOdbcDriver <br />poolURL=jdbc:odbc:test <br />user=sa <br />pass=1234Q_Q5678 <br />自己可以耕具实际情况去更改属性文件。 <br />注: getConn()方法返回的是 Object,是不同的数据库连接有不同的扩展应用，比如oracle的就有针对clob,blob的应用（用class12.zip的情况下），普通的connection不能满足,所以可以通过在应用中把getConn()返回的Object转化成OracleConnection来用。（个人观点，不知道有没有更好的解决方法） <br />上面写的这么多，可能只对新手有点用处，在j2ee风行的今天已经很落伍了，还希望高手指出问题一起讨论(还没有有关于mysql的连接办法，没有做过，希望有人能补充上来)。 <br /><br />转载请注明出处与作者 <br /><br />各家JDBC driver的现行版本及使用用法 airskys [收藏] <br />关键字 JDBC <br />出处 <br /><br />有鉴于许多版友对于寻找JDBC driver或者如何使用driver常常发问, <br />在这边我简单整理一下比较代表性的driver跟使用方式. <br /><br />Microsoft SQL Server series (6.5, 7.x and 2000) and Sybase 10 <br /><br />JDBC Name: jTDS <br />URL: <a href="http://jtds.sourceforge.net/"><font color="#002c99">http://jtds.sourceforge.net/</font></a><br />Version: 0.5.1 <br />Download URL: <a href="http://sourceforge.net/project/showfiles.php?group_id=33291"><font color="#002c99">http://sourceforge.net/project/showfiles.php?group_id=33291</font></a><br /><br />语法: <br /><br />Class.forName("net.sourceforge.jtds.jdbc.Driver "); <br />Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password"); <br />or <br />Connection con = DriverManager.getConnection("jdbc:jtds:sybase://host:port/database","user","password"); <br /><br />MySQL <br /><br />JDBC Name: Connector/J 3.0 <br />URL: <a href="http://www.mysql.com/"><font color="#002c99">http://www.mysql.com/</font></a><br />Version: 3.0.8-stable <br />Download URL: <a href="http://www.mysql.com/downloads/api-jdbc-stable.html"><font color="#002c99">http://www.mysql.com/downloads/api-jdbc-stable.html</font></a><br /><br />语法: <br /><br />Class.forName("com.mysql.jdbc.Driver"); <br />Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password"); <br /><br />Oracle <br /><br />JDBC Name: Connector/J 3.0 <br />URL: <a href="http://otn.oracle.com/"><font color="#002c99">http://otn.oracle.com/</font></a><br />Version: 3.0.8-stable <br />Download URL: <a href="http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html"><font color="#002c99">http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html</font></a><br /><br />语法: <br /><br />Class.forName("oracle.jdbc.driver.OracleDriver"); <br />Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:port:databse","user","password"); <br /><br />Sybase <br /><br />Driver: jConnect 4.5/5.5 (JDBC 2.0 请使用5.5) <br /><br />语法: <br /><br />Class.forName("com.sybase.jdbc2.jdbc.SybDriver").newInstance(); <br />DriverManager.getConnection("jdbc:sybase:Tds:IP地址:2638?ServiceName="+数据库名称,"账号","密码"); <br /><br />Postgresql <br /><br />JDBC Name: PostgreSQL JDBC <br />URL: <a href="http://jdbc.postgresql.org/"><font color="#002c99">http://jdbc.postgresql.org/</font></a><br />Version: 7.3.3 build 110 <br />Download URL: <a href="http://jdbc.postgresql.org/download.html"><font color="#002c99">http://jdbc.postgresql.org/download.html</font></a><br /><br />语法: <br /><br />Class.forName("org.postgresql.Driver"); <br />Connection con=DriverManager.getConnection("jdbc:postgresql://host:port/database","user","password"); <br /><br />IBM AS400主机在用的JDBC语法 <br /><br />有装V4R4以上版本的Client Access Express <br />可以在C:\Program Files\IBM\Client Access\jt400\lib <br />找到 driver 档案 jt400.zip，并更改扩展名成为 jt400.jar <br /><br />语法 <br /><br />java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ()); <br />Class.forName("com.ibm.as400.access.AS400JDBCConnection"); <br />con = DriverManager.getConnection("jdbc:as400://IP","user","password"); <br /><br />各家JDBC driver的现行版本及使用语法各家JDBC driver的现行版本及使用语法各家JDBC driver的现行版本及使用语法各家JDBC driver的现行版本及使用语法各家JDBC driver的现行版本及使用语法各家JDBC driver的现行版本</p>
<img src ="http://www.blogjava.net/warrenwu/aggbug/73730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-10-08 11:11 <a href="http://www.blogjava.net/warrenwu/archive/2006/10/08/73730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Spring AOP Framework</title><link>http://www.blogjava.net/warrenwu/archive/2006/09/27/72390.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Wed, 27 Sep 2006 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/09/27/72390.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/72390.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/09/27/72390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/72390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/72390.html</trackback:ping><description><![CDATA[
		<table style="mso-padding-alt: 0in 0in 0in 0in; mso-cellspacing: 1.5pt" cellpadding="0" border="0">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; WIDTH: 279pt; PADDING-TOP: 0.75pt" width="372">
										<h1>Spring AOP Framework</h1>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 1.7in 12pt 0in">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 1.7in 12pt 0in">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Here's my little exploration to Spring's AOP framework - a little interceptor which just logs which class is called and which method is called, plus logging the method invocation time; however I hope this can help others to understand Spring's AOP and help them to write interceptors of their own.<br /><br />-cptechno<o:p></o:p></span>
		</p>
		<div class="MsoNormal" style="BACKGROUND: white; MARGIN-RIGHT: 1.7in; TEXT-ALIGN: center" align="center">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
						<hr align="center" width="100%" size="1" />
				</span>
		</div>
		<p class="MsoNormal" style="BACKGROUND: white; MARGIN-RIGHT: 1.7in">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">An interceptor used in Spring need to implement the </span>
				<code>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">org.aopalliance.intercept.MethodInterceptor</span>
				</code>
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"> interface, which requires implementing this method:<br /><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" /><o:p></o:p></span>
		</p>
		<table style="BORDER-RIGHT: 1.5pt outset; BORDER-TOP: 1.5pt outset; BACKGROUND: white; BORDER-LEFT: 1.5pt outset; BORDER-BOTTOM: 1.5pt outset; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt; mso-cellspacing: 0in" cellspacing="0" cellpadding="0" bgcolor="white" border="1">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt" valign="top" nowrap="">
										<p class="MsoNormal">
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 10.0pt">
														<br />
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">public </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Object invoke(MethodInvocation methodInvocation) </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">throws </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Throwable;</span>
														</code>
												</span>
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Trebuchet MS'; mso-bidi-font-size: 7.5pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoBodyText">
				<br />
				<br />And next, comes that little interceptor...<br /><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" /></p>
		<table style="BORDER-RIGHT: 1.5pt outset; BORDER-TOP: 1.5pt outset; BACKGROUND: white; BORDER-LEFT: 1.5pt outset; BORDER-BOTTOM: 1.5pt outset; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt; mso-cellspacing: 0in" cellspacing="0" cellpadding="0" bgcolor="white" border="1">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt" valign="top" nowrap="">
										<p class="MsoNormal">
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 10.0pt">
														<br />
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">import </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">org.aopalliance.intercept.MethodInterceptor;</span>
														</code>
														<br />
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">import </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">org.aopalliance.intercept.MethodInvocation;</span>
														</code>
														<br />
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">import </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">org.apache.commons.logging.Log;</span>
														</code>
														<br />
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">import </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">org.apache.commons.logging.LogFactory;</span>
														</code>
														<br />
														<br />
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">public class </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">MyInterceptor </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">implements </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">MethodInterceptor</span>
														</code>
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">{</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">  </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">private final </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Log logger = LogFactory.getLog(getClass());</span>
														</code>
														<br />
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">  </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">public </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Object invoke(MethodInvocation methodInvocation) </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">throws </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Throwable</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">  </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">{</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">logger.info(</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"Beginning method: " </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">+ methodInvocation.getMethod().getDeclaringClass() + </span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"::" </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">+ methodInvocation.getMethod().getName());</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #c00000; mso-ansi-font-size: 8.0pt">long </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">startTime = System.currentTimeMillis();</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">try</span>
																</b>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">{</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">      </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Object retVal = methodInvocation.proceed();</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">      </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">return </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">retVal;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">}</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">finally</span>
																</b>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">{</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">      </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">logger.info(</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"Ending method: "  </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">+ methodInvocation.getMethod().getDeclaringClass() + </span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"::" </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">+ methodInvocation.getMethod().getName());</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">      </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">logger.info(</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"Method invocation time: " </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">+ (System.currentTimeMillis() - startTime) + </span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">" msecs."</span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">);</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">}</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">  </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">}</span>
														</code>
														<br />
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">}</span>
														</code>
												</span>
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Trebuchet MS'; mso-bidi-font-size: 7.5pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoBodyText2" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; mso-padding-alt: 0in 0in 0in 0in">
				<br />
				<br />You can do anything as you like; but pay attention to these two lines:<br /><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" /></p>
		<table style="BORDER-RIGHT: 1.5pt outset; BORDER-TOP: 1.5pt outset; BACKGROUND: white; BORDER-LEFT: 1.5pt outset; BORDER-BOTTOM: 1.5pt outset; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt; mso-cellspacing: 0in" cellspacing="0" cellpadding="0" bgcolor="white" border="1">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt" valign="top" nowrap="">
										<p class="MsoNormal">
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 10.0pt">
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Object retVal = methodInvocation.proceed();</span>
														</code>
														<br />
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">return </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">retVal;</span>
														</code>
												</span>
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Trebuchet MS'; mso-bidi-font-size: 7.5pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoBodyText">
				<br />
				<br />The execution sequence is as follows: </p>
		<ol style="MARGIN-TOP: 0in" type="1">
				<li class="MsoNormal" style="MARGIN-TOP: 6pt; BACKGROUND: white; MARGIN-BOTTOM: 6pt; MARGIN-RIGHT: 1.7in; mso-list: l1 level1 lfo3; tab-stops: list .5in">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Any statements placed before </span>
						<code>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Object retVal = methodInvocation.proceed();</span>
						</code>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
								<o:p>
								</o:p>
						</span>
				</li>
				<li class="MsoNormal" style="MARGIN-TOP: 6pt; BACKGROUND: white; MARGIN-BOTTOM: 6pt; MARGIN-RIGHT: 1.7in; mso-list: l1 level1 lfo3; tab-stops: list .5in">
						<code>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Object retVal = methodInvocation.proceed();</span>
						</code>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">, which gives control to the next interceptor in the interceptor stack, or the underlying method. <o:p></o:p></span>
				</li>
				<li class="MsoNormal" style="MARGIN-TOP: 6pt; BACKGROUND: white; MARGIN-BOTTOM: 6pt; MARGIN-RIGHT: 1.7in; mso-list: l1 level1 lfo3; tab-stops: list .5in">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Any statements placed before </span>
						<code>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">return retVal;</span>
						</code>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
								<o:p>
								</o:p>
						</span>
				</li>
				<li class="MsoNormal" style="MARGIN-TOP: 6pt; BACKGROUND: white; MARGIN-BOTTOM: 6pt; MARGIN-RIGHT: 1.7in; mso-list: l1 level1 lfo3; tab-stops: list .5in">
						<code>
								<span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">return retVal;</span>
						</code>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">, which returns control to the interceptor above it, or exit the whole interceptor stack.<o:p></o:p></span>
				</li>
		</ol>
		<p class="MsoNormal" style="BACKGROUND: white; MARGIN-RIGHT: 1.7in">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Next, to use the interceptor we wrote, we need to turn our business object as an AOP target, like this:<br /><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" /><o:p></o:p></span>
		</p>
		<table style="BORDER-RIGHT: 1.5pt outset; BORDER-TOP: 1.5pt outset; BACKGROUND: white; BORDER-LEFT: 1.5pt outset; BORDER-BOTTOM: 1.5pt outset; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt; mso-cellspacing: 0in" cellspacing="0" cellpadding="0" bgcolor="white" border="1">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt" valign="top" nowrap="">
										<p class="MsoNormal">
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 10.0pt">
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;bean id=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"SearchBookBeanTarget" </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">class</span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"library.SearchBookBeanImpl" </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">init-method=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"init" </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">/&gt;</span>
														</code>
												</span>
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Trebuchet MS'; mso-bidi-font-size: 7.5pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoNormal" style="BACKGROUND: white; MARGIN-RIGHT: 1.7in">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
						<br />
						<br />As shown, we just need to change the bean's id.<br /><br />Next we need to hang the interceptor on to Spring's ApplicationContext.<br /><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" /><o:p></o:p></span>
		</p>
		<table style="BORDER-RIGHT: 1.5pt outset; BORDER-TOP: 1.5pt outset; BACKGROUND: white; BORDER-LEFT: 1.5pt outset; BORDER-BOTTOM: 1.5pt outset; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt; mso-cellspacing: 0in" cellspacing="0" cellpadding="0" bgcolor="white" border="1">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt" valign="top" nowrap="">
										<p class="MsoNormal">
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 10.0pt">
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;bean id=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"myInterceptor" </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">class</span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"library.MyInterceptor" </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">/&gt;</span>
														</code>
												</span>
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Trebuchet MS'; mso-bidi-font-size: 7.5pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoNormal" style="BACKGROUND: white; MARGIN-RIGHT: 1.7in">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
						<br />
						<br />And the last step, we declare our business object actually in the ApplicationContext, via its interface we defined, via Spring's ProxyFactoryBean.<br /><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" /><o:p></o:p></span>
		</p>
		<table style="BORDER-RIGHT: 1.5pt outset; BORDER-TOP: 1.5pt outset; BACKGROUND: white; BORDER-LEFT: 1.5pt outset; BORDER-BOTTOM: 1.5pt outset; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt; mso-cellspacing: 0in" cellspacing="0" cellpadding="0" bgcolor="white" border="1">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt" valign="top" nowrap="">
										<p class="MsoNormal">
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 10.0pt">
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;bean id=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"SearchBookBean" </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">class</span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"org.springframework.aop.framework.ProxyFactoryBean"</span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">  </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;property name=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"proxyInterfaces"</span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&gt;&lt;value&gt;library.SearchBookBean&lt;/value&gt;&lt;/property&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;property name=</span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">"interceptorNames"</span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">      </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;list&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">        </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;value&gt;myInterceptor&lt;/value&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">        </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;value&gt;SearchBookBeanTarget&lt;/value&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">      </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;/list&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">    </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;/property&gt;</span>
														</code>
														<br />
														<code>
																<span style="COLOR: white; mso-ansi-font-size: 8.0pt">  </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">&lt;/bean&gt;</span>
														</code>
												</span>
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Trebuchet MS'; mso-bidi-font-size: 7.5pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<ul style="MARGIN-TOP: 0in" type="disc">
				<li class="MsoNormal" style="MARGIN-TOP: 6pt; BACKGROUND: white; MARGIN-BOTTOM: 6pt; MARGIN-RIGHT: 1.7in; mso-list: l0 level1 lfo6; tab-stops: list .5in">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">proxyInterfaces: the actual business interface of our business object. <o:p></o:p></span>
				</li>
				<li class="MsoNormal" style="MARGIN-TOP: 6pt; BACKGROUND: white; MARGIN-BOTTOM: 6pt; MARGIN-RIGHT: 1.7in; mso-list: l0 level1 lfo6; tab-stops: list .5in">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">interceptorNames: the execution sequence of the interceptors, with the business object's target as the end of the list. <strong>Remember to put the business object's target on the list, otherwise your business object will not work; on the other hand you'll receive an exception telling you that all interceptors had been invoked.</strong><o:p></o:p></span>
				</li>
		</ul>
		<p class="MsoNormal" style="BACKGROUND: white; MARGIN-RIGHT: 1.7in">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">On the application code that will access the business object, no changes are necessary.<br /><br /><br /><br />Then at your logging target (console, file, etc...) you can see the following output similar to this (time and level info trimmed here):<br /><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" /><o:p></o:p></span>
		</p>
		<table style="BORDER-RIGHT: 1.5pt outset; BORDER-TOP: 1.5pt outset; BACKGROUND: white; BORDER-LEFT: 1.5pt outset; BORDER-BOTTOM: 1.5pt outset; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt; mso-cellspacing: 0in" cellspacing="0" cellpadding="0" bgcolor="white" border="1">
				<tbody>
						<tr>
								<td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt" valign="top" nowrap="">
										<p class="MsoNormal">
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'; mso-bidi-font-size: 10.0pt">
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Beginning method: </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">interface </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">library.SearchBookBean::searchBook</span>
														</code>
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">....</span>
														</code>
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">(log messages about library.SearchBookBean.searchBook()....)</span>
														</code>
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">....</span>
														</code>
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Ending method: </span>
														</code>
														<code>
																<b>
																		<span style="COLOR: #0000c0; mso-ansi-font-size: 8.0pt">interface </span>
																</b>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">library.SearchBookBean::searchBook</span>
														</code>
														<br />
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">Method invocation time: </span>
														</code>
														<code>
																<span style="COLOR: #990000; mso-ansi-font-size: 8.0pt">10 </span>
														</code>
														<code>
																<span style="COLOR: black; mso-ansi-font-size: 8.0pt">msecs.</span>
														</code>
												</span>
												<span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Trebuchet MS'; mso-bidi-font-size: 7.5pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/warrenwu/aggbug/72390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-09-27 21:07 <a href="http://www.blogjava.net/warrenwu/archive/2006/09/27/72390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发前的约定</title><link>http://www.blogjava.net/warrenwu/archive/2006/09/27/72303.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Wed, 27 Sep 2006 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/09/27/72303.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/72303.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/09/27/72303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/72303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/72303.html</trackback:ping><description><![CDATA[
		<p style="TEXT-INDENT: 2em">今天进入可开发前的准备阶段。在开发项目前，要求每位开发小组成员都必须先阅读以下约定，严格按以下约定来进行开发。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>系统框架</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">·系统总框架采用SUN J2EE框架，使用JAVA/XML技术和组件技术， 基于Application server开发。 
</p>
		<p style="TEXT-INDENT: 2em">·项目中的程序必须严格按J2EE1.3规范来编码，EJB建议采用2.0规范编码，尽可能多使用EJB 模式设计，参考技术文档如下： 
</p>
		<p style="TEXT-INDENT: 2em">1.<a href="http://java.sun.com/j2ee/tutorial/download.html" target="_blank">《J2EE Tutorial》</a></p>
		<p style="TEXT-INDENT: 2em">
				<a href="http://java.sun.com/j2ee/tutorial/index.html" target="_blank">j2ee-1_3-doc-tutorial-draft5.pdf</a>
		</p>
		<p style="TEXT-INDENT: 2em">2.<a href="http://www.jboss.org/developers/guides/quickstart.jsp" target="_blank">《JBoss 3.0Quick Start Guide》</a></p>
		<p style="TEXT-INDENT: 2em">3.<a href="http://www.bqlr.com/books/ejbdesignpatterns.pdf" target="_blank">《EJB Design Patterns》</a></p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>开发环境</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">·测试用Application server采用JAS，JAS 配置于Linux OS下，IP地址：192.168.0.6。登录用户名：J2EEOA，密码：J2EEOA。登录ftp工具建议使用SSH Secure Shell或LeapFTP，ftp地址为192.168.0.6:22。 
</p>
		<p style="TEXT-INDENT: 2em">·项目开发源码目录为/home/local/jboss/applications/J2EEOA/src，项目开发文档目录为/home/product/J2EEOA/。 
</p>
		<p style="TEXT-INDENT: 2em">· 数据库服务器IP为192.168.0.222，数据库采用Mysql，管理工具为phpadmin，登录数据库的用户名为test，密码为test。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>源代码目录规范</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">每位开发小组成员一定要绝对遵守以下创建源代码目录的规范。 
</p>
		<p style="TEXT-INDENT: 2em">
				<b>项目开发目录结构简图：</b>
		</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>\
|--apps
  |--J2EEOA
  |--admin
|--components
  |--a component
|--modules
  |--a module
|--lib
  |--ant
|--build.properties</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<img style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid" src="http://developer.ccidnet.com/col/attachment/2002/10/36919.jpg" />
		</center>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>图片6 项目开发目录结构图</center>
		<p style="TEXT-INDENT: 2em">
				<b>项目开发目录结构说明：</b>
		</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>\ (说明：根目录)
|--apps (说明：此目录下放应用程序的代码)
  |--J2EEOA (说明：此目录为放J2EEOA应用程序的代码)
  |--admin (说明：此目录为放项目的admin应用程序的代码)
|--components (说明：此目录下放应用程序组件的代码)
  |--a component (说明：此目录为放一个组件的代码)
|--modules (说明：此目录下放应用程序模块的代码)
  |--a module (说明：此目录为放一个模块的代码)
|--lib (说明：此目录下放项目开发工具)
  |--ant (说明：Ant工具，包括bin和lin目录)
|--build.properties 
(说明：此文件定义项目开发共用的环境变量，
如jboss.home、jboss.configuration、servlet-lib.path等)</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">
				<b>模块、组件开发目录结构简图：</b>
		</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>\
|--build
|--etc
  |--multi-langs
|--lib
  |--docs
  |--ejb
    |-- META-INF
  |--j2ee
  	|--META-INF
  |--web
    |--WEB-INF
|--src
  |--ejb
  |--javabean
  |--servlet
  |--web
|--build.bat
|--build.sh
|--build.xml</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<img style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid" src="http://developer.ccidnet.com/col/attachment/2002/10/36917.jpg" />
		</center>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>图片7 模块、组件目录结构图</center>
		<p style="TEXT-INDENT: 2em">说明：src、etc目录和build.bat、build.sh、build.xml为开发人员建立的目录，build和lib目录为由ant工具生成的目录。 
</p>
		<p style="TEXT-INDENT: 2em">
				<b>模块、组件开发目录结构说明</b>
		</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>\ (说明：一个模块或一个组件的根目录)
|--build (说明：保存由ant工具生成的扩展名为jar、war、ear等文件)
|--etc 
(说明：存放部署文件，如web.xml、ejb-jar.xml、application.xml、
jaws.xml、jbosscmp-jdbc.xml等)
 |--multi-langs (说明：存放多语言资源文件，扩展名为properties，)
|--lib (说明：保存由ant工具生成的API文件、class文件等)
  |--docs
    |--api
  |--ejb
    |-- META-INF
  |--j2ee
  	|--META-INF
  |--web
    |--WEB-INF
|--src (说明：存放源代码，包括java和jsp代码，下面有四个目录。)
  |--ejb (说明：采用EJB进行开发，存放EJB和Helper Classes源代码。)
  |--javabean (说明：采用Javabean进行开发，存放Javabean和Helper Classes源代码。)
  |--servlet (说明：存放Servlet源代码。)
  |--web (说明：存放JSP源代码。)
|--build.bat (说明：在Window OS下，进行build的文件。)
|--build.sh (说明：在Unix OS下，进行build的文件。)
|--build.xml (说明：Ant工具要build的目标文件。)</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">
				<b>应用程序开发目录结构简图：</b>
		</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>\
|--build
|--etc
|--lib
  |--docs
  |--ejb
    |-- META-INF
  |--j2ee
  	|--META-INF
  |--web
    |--WEB-INF
|--team
  |--a member
|--ejb
|--javabean
|--web
|--build.bat
|--build.sh
|--build.xml
|--build.properties</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<img style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid" src="http://developer.ccidnet.com/col/attachment/2002/10/36918.jpg" />
		</center>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>图片8 应用程序目录结构图</center>
		<p style="TEXT-INDENT: 2em">
				<b>应用程序开发目录结构</b>
		</p>
		<p style="TEXT-INDENT: 2em">1. 由于项目由多个程序员一起来进行编码，所以应用程序开发目录结构和模块、组件开发目录结构的不一样。 
</p>
		<p style="TEXT-INDENT: 2em">2. 应用程序开发目录结构没有src目录，但多了一个team目录，此目录存放所有程序员的classes和Jsp代码。 
</p>
		<p style="TEXT-INDENT: 2em">3. 应用程序开发目录结构下build.xml和模块、组件开发目录结构下的build.xml有很大不同。 
</p>
		<p style="TEXT-INDENT: 2em">4. 由项目组长负责管理etc目录、build.xml、build.bat、build.sh、build.properties，程序员分别管理team目录下的属于自己的目录，如程序员tom管理team/tom目录。 <br /></p>
		<p style="TEXT-INDENT: 2em">
				<b>build.xml编码规范</b>
		</p>
		<p style="TEXT-INDENT: 2em">· 应用程序目录下的build.xml 
</p>
		<p style="TEXT-INDENT: 2em">源代码：<a href="http://developer.ccidnet.com/pub/html/developer/file/j2eediary/files/2_build_for_application_templet.xml" target="_blank">应用程序目录下的build.xml规范模板</a></p>
		<p style="TEXT-INDENT: 2em">说明：在建立build.xml时，组长只需修改创建的时间和变量ProjectName等。 
</p>
		<p style="TEXT-INDENT: 2em">
				<b>模块、组件目录下的build.xml</b>
		</p>
		<p style="TEXT-INDENT: 2em">源代码：<a href="http://developer.ccidnet.com/pub/html/developer/file/j2eediary/files/3_build_for_components_templet.xml" target="_blank">模块、组件目录下的build.xml规范模板</a></p>
		<p style="TEXT-INDENT: 2em">说明：在建立build.xml时，开发人员只需修改创建的时间和和变量ProjectName、componentName等。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>编码规范</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· 项目中的JAVA源代码必须按《JAVA开发规范》。 
</p>
		<p style="TEXT-INDENT: 2em">·项目中的JSP代码必须按《JSP开发规范》。 
</p>
		<p style="TEXT-INDENT: 2em">· 每位开发小组成员在开发项目时都严格按此规范来进行编写程序，让项目中所有的文档都看起来像一个人写的，增加可读性，减少项目组中因为换人而带来的损失。 
</p>
		<p style="TEXT-INDENT: 2em">· 每位开发小组成员一定要绝对遵守这个规范。当实际应用与下面的规范相抵触时，记录下原因、潜在后果，以及符合规范需要的条件，但必须是在让程序有良好的可读性的前提下。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>功能模块</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">在做业务逻辑模块前，先把一些准备工作做出来： 
</p>
		<p style="TEXT-INDENT: 2em">
				<b>建立一些公用的bean</b>（项目中称为系统控制器controller），包名为com.cwap.oa.controller.*，提供给系统各模块使用。包括对时间、字符的操作，调试器，软件国际化，多语言版本，系统的WEB外壳，MVC模式的Servlet和Action，对WEB页面显示的控制如树结构、路径结构；等等。 
</p>
		<p style="TEXT-INDENT: 2em">
				<b>建立一个序列发生器</b>，包名为com.cwap.oa.sequencegenerator.*，提供给bean使用，它用来产生一个唯一的ID，而且也可用来计数，也就是把它当成计数器使用。介绍如何取id的方法的文字要写在bean的代码内，以便生成API后供其它开发人员参阅。 
</p>
		<p style="TEXT-INDENT: 2em">
				<b>建立一个ServerFacade</b>，它为EJB Home提供统一的接口。ServerFacade为程序要用到的所有EJB的home handle提供缓存，提高访问效率。以后查找JNDI Name的方法都应写在接口里，调用时直接从接口调用。 
</p>
		<p style="TEXT-INDENT: 2em">
				<b>建立一个翻页控制器</b>，包名为com.cwap.oa.controller.web.page*，用来进行分页显示的管理，以后页面中的分页都由翻页控制器管理。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>异常处理和日志</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· 程序中所有的异常处理使用统一的调试器，bean的名称为com.cwap.oa.controller.util.Debug，用法见项目API。 
</p>
		<p style="TEXT-INDENT: 2em">· 程序中所有的日志使用Jakarta-log4j管理，包的名称为log4j-1.2.5.jar 
</p>
		<p style="TEXT-INDENT: 2em">官方URL：http://jakarta.apache.org/log4j/docs/index.html 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>Session</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· 放在session中的变量统一放在一个bean里存储，不直接把session变量名称放在JSP、Servlet或Bean内，存储session变量名称的bean为com.cwap.oa.controller.web.util.WebKeys，取session变量名的方法为getXX()。 
</p>
		<p style="TEXT-INDENT: 2em">· 取session变量的值的方法统一放在一个bean里，bean的名称为com.cwap.oa.controller.web.util.JSPUtil，取session变量值的方法为getXX()，之后要取session变量值就调用JSPUtil中对应的方法。 
</p>
		<p style="TEXT-INDENT: 2em">· 当前系统中已知的session变量名有"userid"、"userName"、"locale"、"skin"等，userid为用户标识，userName为用户名称，locale为用户选择的地域，skin为用户选择的界面风格。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>DAO</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">使用DAO封装SQL语言对数据库的直接操作，DAO采用Factory模式编写。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>组件</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">所有的业务逻辑使用组件技术。每个组件内同时提供EJB版本和DAO版本两种的方法,不推荐直接使用EJB版本和DAO版本的方法。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>多语言版本</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· Bean、Servlet、JSP中的多语言文字采用分离技术，将多语言文字放在资源文件中，保存目录为/WEB-INF/classes/multi-langs或其它目录。 
</p>
		<p style="TEXT-INDENT: 2em">· 当前支持的语言有三种：简体中文（zh_CN）、繁体中文（zh_HK）、英文（en_US）。 
</p>
		<p style="TEXT-INDENT: 2em">· 多语言管理器的名称为com.cwap.oa.controller.util.MultiLangsString，使用方法见本项目API。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>WEB外壳</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· JSP页面中的图片、CSS、JS等文件都应放在统一目录，目录为/skin/skinName/skinLanguage，其中skinName为外壳名称，skinLanguage为外壳语言版本，例如/skin/green/zh_CN 
</p>
		<p style="TEXT-INDENT: 2em">· 图片放在images目录里，CSS文件放在css目录里，JS脚本放在js目录里，其它资源(如声音、视频、Flash文件等)存放方法见项目API。 
</p>
		<p style="TEXT-INDENT: 2em">· 外壳管理器为com.cwap.oa.controller.web.skin.WebSkin，调用方法统一接口为com.cwap.oa.controller.web.util.JSPUtil。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>在线帮助</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· 在线帮助管理器为com.cwap.oa.help.*，调用方法统一接口为com.cwap.oa.help.client.HelpClientHelper。 
</p>
		<p style="TEXT-INDENT: 2em">· 每一个JSP页面中提供一个在线帮助链接，用户点击它直接进入到在线帮助中心。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>用户管理</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· 建立一个取用户名称的页面，功能包括只取一个用户和取多个用户。 
</p>
		<p style="TEXT-INDENT: 2em">· 打开取用户名称页面的方法，使用页面脚本，"javascript:return openWinToGetEmployee(frame,id,name,num)"，当num为0，代表可以取多个用户，否则，只能取1个用户。 
</p>
		<p style="TEXT-INDENT: 2em">
		</p>
		<center>
				<font color="#000099">
						<strong>权限管理</strong>
				</font>
		</center>
		<p style="TEXT-INDENT: 2em">· 调用方法统一接口为com.cwap.oa.controller.web.util.JSPUtil，检查用户是否有权限的方法为JSPUtil.isPermission(userid, permissions) 
</p>
		<p style="TEXT-INDENT: 2em">· JSP中检验用户身份采用include方式，include的文件为checkUser.jsp 
</p>
		<p style="TEXT-INDENT: 2em">检验用户身份是否是一般用户，调用方法为 
</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>&lt;jsp:include page="../include/checkUser.jsp"&gt;
  &lt;jsp:param name="type" value="user" /&gt;
&lt;/jsp:include&gt;</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">检验用户身份是否是管理员，调用方法为 
</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>&lt;jsp:include page="../include/checkUser.jsp"&gt;
  &lt;jsp:param name="type" value="manager" /&gt;
&lt;/jsp:include&gt;</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">检验用户身份是否是超级管理员，调用方法为 
</p>
		<p style="TEXT-INDENT: 2em">
				<ccid_nobr>
						<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1">
								<tbody>
										<tr>
												<td class="code" bgcolor="#e6e6e6">
														<pre>
																<ccid_code>&lt;jsp:include page="../include/checkUser.jsp"&gt;
  &lt;jsp:param name="type" value="administrator" /&gt;
&lt;/jsp:include&gt;</ccid_code>
														</pre>
												</td>
										</tr>
								</tbody>
						</table>
				</ccid_nobr>
		</p>
		<p style="TEXT-INDENT: 2em">
				<br />
				<br />
				<br />摘自赛迪网:http://developer.ccidnet.com/art/322/20021014/27601_1.html, http://developer.ccidnet.com/art/322/20021014/27601_2.html</p>
<img src ="http://www.blogjava.net/warrenwu/aggbug/72303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-09-27 14:48 <a href="http://www.blogjava.net/warrenwu/archive/2006/09/27/72303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdom读取xml</title><link>http://www.blogjava.net/warrenwu/archive/2006/09/25/71740.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Mon, 25 Sep 2006 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/09/25/71740.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/71740.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/09/25/71740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/71740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/71740.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> cn.com;<br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.FileInputStream;<br /></span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.FileNotFoundException;<br /></span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.IOException;<br /></span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.util.List;<br /></span>
				<span style="COLOR: #008080"> 7</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 8</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.jdom.Document;<br /></span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.jdom.Element;<br /></span>
				<span style="COLOR: #008080">10</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.jdom.JDOMException;<br /></span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.jdom.input.SAXBuilder;<br /></span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_276_914_Open_Image" onclick="this.style.display='none'; Codehighlighter1_276_914_Open_Text.style.display='none'; Codehighlighter1_276_914_Closed_Image.style.display='inline'; Codehighlighter1_276_914_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_276_914_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_276_914_Closed_Text.style.display='none'; Codehighlighter1_276_914_Open_Image.style.display='inline'; Codehighlighter1_276_914_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> MyJDom </span>
				<span id="Codehighlighter1_276_914_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_276_914_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_375_912_Open_Image" onclick="this.style.display='none'; Codehighlighter1_375_912_Open_Text.style.display='none'; Codehighlighter1_375_912_Closed_Image.style.display='inline'; Codehighlighter1_375_912_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_375_912_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_375_912_Closed_Text.style.display='none'; Codehighlighter1_375_912_Open_Image.style.display='inline'; Codehighlighter1_375_912_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> FileNotFoundException, JDOMException, IOException </span>
						<span id="Codehighlighter1_375_912_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_375_912_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080">15</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        SAXBuilder sab </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> SAXBuilder();<br /></span>
								<span style="COLOR: #008080">16</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Document doc </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> sab.build(</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> FileInputStream(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">./data/myjdom.xml</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">));<br /></span>
								<span style="COLOR: #008080">17</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /></span>
								<span style="COLOR: #008080">18</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Element element </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> doc.getRootElement();<br /></span>
								<span style="COLOR: #008080">19</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        List list </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> element.getChildren();<br /></span>
								<span style="COLOR: #008080">20</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /></span>
								<span style="COLOR: #008080">21</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_604_909_Open_Image" onclick="this.style.display='none'; Codehighlighter1_604_909_Open_Text.style.display='none'; Codehighlighter1_604_909_Closed_Image.style.display='inline'; Codehighlighter1_604_909_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_604_909_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_604_909_Closed_Text.style.display='none'; Codehighlighter1_604_909_Open_Image.style.display='inline'; Codehighlighter1_604_909_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">for</span>
								<span style="COLOR: #000000">(</span>
								<span style="COLOR: #0000ff">int</span>
								<span style="COLOR: #000000"> i</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">; i</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #000000">list.size(); i</span>
								<span style="COLOR: #000000">++</span>
								<span style="COLOR: #000000">) </span>
								<span id="Codehighlighter1_604_909_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_604_909_Open_Text">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080">22</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">------------</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /></span>
										<span style="COLOR: #008080">23</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            <br /></span>
										<span style="COLOR: #008080">24</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            Element ele2 </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> (Element) list.get(i);<br /></span>
										<span style="COLOR: #008080">25</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            String id </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> ele2.getAttribute(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">id</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">).getValue();<br /></span>
										<span style="COLOR: #008080">26</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">ID===&gt;&gt;&gt;</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">+</span>
										<span style="COLOR: #000000"> id);<br /></span>
										<span style="COLOR: #008080">27</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            <br /></span>
										<span style="COLOR: #008080">28</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            Element ele3 </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> ele2.getChild(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">title</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /></span>
										<span style="COLOR: #008080">29</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            String title </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> ele3.getText();<br /></span>
										<span style="COLOR: #008080">30</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">Title===&gt;&gt;&gt;</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">+</span>
										<span style="COLOR: #000000"> title);<br /></span>
										<span style="COLOR: #008080">31</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">32</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">33</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #008080">34</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
<img src ="http://www.blogjava.net/warrenwu/aggbug/71740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-09-25 14:48 <a href="http://www.blogjava.net/warrenwu/archive/2006/09/25/71740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再看JDBC</title><link>http://www.blogjava.net/warrenwu/archive/2006/09/25/71668.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Mon, 25 Sep 2006 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/09/25/71668.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/71668.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/09/25/71668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/71668.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/71668.html</trackback:ping><description><![CDATA[
		<p>刚开始接触JDBC是二、三年前从一位朋友那里听来的词，当时还不是程序员，总感觉是个很<br />难学的技术，就一直没太在意，在刚毕业的招聘会上有一个公司招聘时问我朋友关于JDBC的<br />知识，可朋友和我都没学过啊，结果就不用说了。其实也要感谢这位仁兄，因为懒惰所以没<br />看，还好他提醒了我。呵呵~~~</p>
		<p>今天打扫卫生，整理自己的垃圾书时又无意间翻到了JDBC的书，就突然想起这事，而后就是<br />一顿恶心，感觉那位仁兄实在是垃圾。超级垃圾！竟然能问这么垃圾的问题。骂他一顿，<br />发泄一下，感觉舒服多了。</p>
		<p>其实要学JDBC，只要明白JDBC所起的作用那么就不会很难。</p>
		<p>JDBC的作用：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080">1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">与数据库建立连接<br /></span>
				<span style="COLOR: #008080">2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />发送 SQL 语句<br /></span>
				<span style="COLOR: #008080">3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />处理结果</span>
		</div>
		<br />看了它的作用,你还觉得学它难吗?<img src ="http://www.blogjava.net/warrenwu/aggbug/71668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-09-25 10:44 <a href="http://www.blogjava.net/warrenwu/archive/2006/09/25/71668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ant的参数输入问题</title><link>http://www.blogjava.net/warrenwu/archive/2006/09/22/71360.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Fri, 22 Sep 2006 09:37:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/09/22/71360.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/71360.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/09/22/71360.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/71360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/71360.html</trackback:ping><description><![CDATA[我的想法: <br />-------------------------------------- <br />在命令行执行 ant <br />执行对HelloWorld.java的编译,即 javac <br />-------------------------------------- <br />然后重点来啦!!! <br />--------------------------------------<br />ant执行处于等待.直到我在命令行输入OK后, <br />才开始执行,即java <br />-------------------------------------- <br /><br />前几天有了这个想法,头天上午在google上搜了一上午也没搜到,于是就不着了,写了个时间延迟的凑合着应付差事,确实是太懒了,我自己都这么认为,于是就在论坛上发了个帖子等人帮忙解决,呵呵~~~一位"高人"提醒俺看ant api, 哦~~~那就依照高人指点吧,反正看看也没什么坏处.结果还真是可以.用的就是input标签.<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml version="1.0"</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">project </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="firstbuild"</span><span style="COLOR: #ff0000"> default</span><span style="COLOR: #0000ff">="run"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="compile"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">javac </span><span style="COLOR: #ff0000">srcdir</span><span style="COLOR: #0000ff">="."</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">===compilation complete!===</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="checkok"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input </span><span style="COLOR: #ff0000">message</span><span style="COLOR: #0000ff">="All data is going to be deleted from DB continue (y/n)?"</span><span style="COLOR: #ff0000"> validargs</span><span style="COLOR: #0000ff">="y,n"</span><span style="COLOR: #ff0000"> addproperty</span><span style="COLOR: #0000ff">="do.delete"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">condition </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="do.abort"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">equals </span><span style="COLOR: #ff0000">arg1</span><span style="COLOR: #0000ff">="n"</span><span style="COLOR: #ff0000"> arg2</span><span style="COLOR: #0000ff">="${do.delete}"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">condition</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">fail </span><span style="COLOR: #ff0000">if</span><span style="COLOR: #0000ff">="do.abort"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Build aborted by user.</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">fail</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="check_time"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">sleep </span><span style="COLOR: #ff0000">seconds</span><span style="COLOR: #0000ff">="30"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">depends="compile"</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="run"</span><span style="COLOR: #ff0000"> depends</span><span style="COLOR: #0000ff">="checkok"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">java </span><span style="COLOR: #ff0000">classname</span><span style="COLOR: #0000ff">="Test"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">arg </span><span style="COLOR: #ff0000">value</span><span style="COLOR: #0000ff">="a"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">classpath</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">pathelement </span><span style="COLOR: #ff0000">path</span><span style="COLOR: #0000ff">="."</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">classpath</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">java</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">===<img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" />===</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">project</span><span style="COLOR: #0000ff">&gt;</span></div><br />应用:<br /><br />虽然经我们多次的验证,毕竟是个项目,还是小心为妙,打完包后再验证一次又何妨呢?现在我们都是集体开发项目,当然tomcat服务器也不可能是你的本机,那就牵扯到上传了.这个东西可以用来对项目打包后进行人工验证, 当确认无误后,输入参数y就可以将我们的项目上传了.以前我们的项目都是ant后用scp来传,如果打版本的人不在,其他人就只能干着急.这下我不在也无所谓了.哈哈~~~现在的项目只要一个ant命令一切的一切全部搞定.<img src ="http://www.blogjava.net/warrenwu/aggbug/71360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-09-22 17:37 <a href="http://www.blogjava.net/warrenwu/archive/2006/09/22/71360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOM编程详解</title><link>http://www.blogjava.net/warrenwu/archive/2006/09/22/71328.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Fri, 22 Sep 2006 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/09/22/71328.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/71328.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/09/22/71328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/71328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/71328.html</trackback:ping><description><![CDATA[
		<div>
				<center>
				</center>
				<span>
						<span class="tpc_content">以Sun公司的JAXP为例来看看其中和DOM相关的包:<br /><br />DOM包结构<br /><br />　　 org.w3c.com：定义了DOM的接口。这是w3c所指制定的DOM规范，因为DOM规范是与语言无关的，因而其中只是定义了接口，而没有实现任何地类。任何具体的DOM实现需要有其它的类库给出。<br /><br />　　 javax.xml.parser：定义了DocumentBuilderFactory类DocumentBuilder类。编程时用DocumentBuilderFactory来生成一个具体的和具体的类库相联系的DocumentBuilder类的实例，然后再由这个DocumentBuilder对象来生成一个Document实例。Document对象中就包含了DOM的树模型结构，是DOM模型的根。同SAXParserFactory一样，具体的DocumentBuilder对象的建立，取决于一个环境变量javax.xml.parsers.DocumentBuilderFactory的值，同样的，也可以直接把类名传递给DocumentBuilderFactory来建立一个DocumentBuilder。<br /><br />　　 com.sun.xml.tree：Sun的Java XML的DOM实现，他对标准的DOM提供了一些扩展，其中大部分的东西并不是DOM标准。包括了XMLDocument，ElementNode, XMLDocumentBuilder和TreeWalker等类。XMLDocument类实现了DOM的Document界面，它同样也提供了静态的工厂方法来建立一个Document对象。ElementNode类代表了在一个DOM树中的每一个节点元素，并且它经常被继承，来实现一些自定的功能。 而XMLDocumentBuilder实际上是一个DocumentHandler类型的类，也就是说，它接受一个SAX解析器传递过来的事件，然后根据这些事件来在内存中建立一个DOM模型。<br /><br />DOM处理过程<br /><br />　　 DOM的处理过程相对SAX而言要简单些，先用DocumentBuilderFactory的静态方法newInstance()建立一个DocumentBuilderFactory的实例，然后用它的newDocumentBuilder()方法建立一个DocumentBuilder。然后可以用DocumentBuilder的parser()方法来解析一个XML文档并建立DOM模型。在JAXP中还提供了更为方便的功能扩展，就是使用XMLDocument。你可以为一个SAX解析器注册一个事件处理器XMLDocumentBuilder，在解析过后，可以调用XMLDocumentBuilder的getDocument()方法就可以把一个外在地XML文档转换成一个内存中的DOM树了，并生成一个Document(XMLDocument)对象，后面的工作，就是调用XMLDocument对象和ElementNode对象的各个方法来对DOM树进行操作了。最后，还可以调用XMLDocument的wirte()方法来把DOM树输出为XML文件。因为在标准的DOM模型中并没有提供与write()相类似的方法，所以要处理输出的话，用XMLDocument会更方便些。<br /><br />实例DOM<br /><br />　　 下面我们可以来看看例子了。<br /><br />首先当然是import语句：<br /><br /><br />import javax.xml.parsers.DocumentBuilderFactory;　 <br /><br />import javax.xml.parsers.FactoryConfigurationError;　 <br /><br />import javax.xml.parsers.ParserConfigurationException;<br /><br />import javax.xml.parsers.DocumentBuilder;<br />　　 为了能给你更多的印象，我详细内出了所有的类，实际上你只需要一句就可以了：<br /><br />import javax.xml.parsers.*; <br /><br />你还需要的是W3C对DOM和DOM例外的定义：<br /><br />import org.w3c.dom.Document; import org.w3c.dom.DOMException; <br />还有一些其他的用来进行例外和I/O处理的类：<br /><br /><br />import org.xml.sax.SAXException;　 <br /><br />import org.xml.sax.SAXParseException;<br /><br />import java.io.File;<br /><br />import java.io.IOException;<br /><br /><br /><br />因为要输出XML文档，所以还要引入XMLDocument：<br /><br /><br /><br />import com.sun.xml.tree.XmlDocument;　 <br /><br />public class DomEcho{<br /><br /><br /><br />在程序逻辑中，因为要处理DOM模型，所以当然首先应该申明一个Document对象：<br /><br /><br /><br />static Document document; <br /><br />public static void main (String argv [])<br /><br />{<br /><br />if (argv.length != 1) {<br /><br />　　　　　　　　　　　 System.err.println ("Usage: java DomEcho filename";<br /><br />　　　　　　　　　　　 System.exit (1);<br /><br />　　　　　　　 }<br />　　 用DocumentBuilderFactory类的静态方法newInstance()来创建一个工厂实例，之所以称为工厂，是由于再这儿应用到了设计模式（Design Pattern）中的工厂模式，实际上在Java类库中设计模式的范例随处可见，如果能够对设计模式有一些了解，就会很容易为Java庞杂的类库理出一条条脉络分明的经线。 <br />　　　　　　　 DocumentBuilderFactory factory =<br /><br />　　　　　　 　　　　DocumentBuilderFactory.newInstance();<br /><br />　　　　　　　 try {<br /><br />　　　　　　　　　　 DocumentBuilder builder = factory.newDocumentBuilder();<br /><br />　　　　　　　　　　 document = builder.parse( new File(argv[0]) );<br />　　 前面说过，DOM标准模型中并没有定义输出的接口，因而如果需要进行文档输出的话，就需要用到JAXP的扩展，使用到XmlDocument。这儿有一个较为简便的方法，就是用强制类型转换，把一个Document类转换成XmlDocument，然后，就可以使用XmlDocument的write()方法了: <br />　　　　　　　　　　 XmlDocument xdoc = (XmlDocument) document;<br /><br />　　　　　　　　　　 xdoc.write (System.out);<br />　　 在后面的都是例外的处理了，在DOM中虽然有定义了DOMException，但是DOMException只是用在遍历和操作DOM树时引发的例外。在解析文档和初始化解析器时所引发的例外，还是借助于SAX中的例外处理方法，以使程序上具有一致性： <br /><br />　　　　　　　 } catch (SAXParseException spe) {<br /><br />　　　　　　　 　　　　　// 处理解析过程中生成的例外<br /><br />　　　　　　　　　　 System.out.println ("\n** Parsing error" <br /><br />　　　　　　　　　　　　　　+ ", line " + spe.getLineNumber ()<br /><br />　　　　　　　　　　　　　 + ", uri " + spe.getSystemId ());<br /><br />　　　　　　 　　　　System.out.println("　　 " + spe.getMessage() );<br /><br />　　　　　　　　　　 Exception　 x = spe;<br /><br />　　　　　　　　　　 if (spe.getException() != null)<br /><br />　　　　　　　　　　　　　　 x = spe.getException();<br /><br />　　　　　　　　　　 x.printStackTrace();<br /><br />　　　　　　　 } catch (SAXException sxe) {<br /><br />　　　　　　　　　　 // 处理一般的程序例外或者解析器初始化时引发的例外<br /><br />　　　　　　　　　　 Exception　 x = sxe;<br /><br />　　　　　　　　　　 if (sxe.getException() != null)<br /><br />　　　　　　　　　　　　　　 x = sxe.getException();<br /><br />　　　　　　　　　　 x.printStackTrace();<br /><br />　　　　　　　 } catch (IOException ioe) {<br /><br />　　　　　　　　　　 // IO例外<br /><br />　　　　　　　　　　 ioe.printStackTrace();<br /><br />　　　　　　 　}<br /><br />　　　 } <br /><br />　　 这而对DOM讲的比较简略，但是基本的程序结构我们已经可以从中看出来了。</span>
				</span>
		</div>
<img src ="http://www.blogjava.net/warrenwu/aggbug/71328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-09-22 15:14 <a href="http://www.blogjava.net/warrenwu/archive/2006/09/22/71328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符串分割</title><link>http://www.blogjava.net/warrenwu/archive/2006/09/22/71258.html</link><dc:creator>Warren.Wu</dc:creator><author>Warren.Wu</author><pubDate>Fri, 22 Sep 2006 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/warrenwu/archive/2006/09/22/71258.html</guid><wfw:comment>http://www.blogjava.net/warrenwu/comments/71258.html</wfw:comment><comments>http://www.blogjava.net/warrenwu/archive/2006/09/22/71258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/warrenwu/comments/commentRss/71258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/warrenwu/services/trackbacks/71258.html</trackback:ping><description><![CDATA[
		<font size="1">1.String.split()<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img id="Codehighlighter1_31_181_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_181_Open_Text.style.display='none'; Codehighlighter1_31_181_Closed_Image.style.display='inline'; Codehighlighter1_31_181_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_31_181_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_181_Closed_Text.style.display='none'; Codehighlighter1_31_181_Open_Image.style.display='inline'; Codehighlighter1_31_181_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> testSplit() </span><span id="Codehighlighter1_31_181_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_31_181_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  String str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.a.3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  String[] strArray </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> str.split(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\\.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img id="Codehighlighter1_138_178_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_178_Open_Text.style.display='none'; Codehighlighter1_138_178_Closed_Image.style.display='inline'; Codehighlighter1_138_178_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_138_178_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_138_178_Closed_Text.style.display='none'; Codehighlighter1_138_178_Open_Image.style.display='inline'; Codehighlighter1_138_178_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">strArray.length; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_138_178_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_138_178_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   System.out.println(strArray[i]);<br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> }</span></span></div></font>
		<br />
		<font size="1">2.StringTokenizer<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img id="Codehighlighter1_35_233_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_233_Open_Text.style.display='none'; Codehighlighter1_35_233_Closed_Image.style.display='inline'; Codehighlighter1_35_233_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_35_233_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_233_Closed_Text.style.display='none'; Codehighlighter1_35_233_Open_Image.style.display='inline'; Codehighlighter1_35_233_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> testTokenizer() </span><span id="Codehighlighter1_35_233_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_35_233_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                String str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.a.3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        StringTokenizer strTokenizer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> StringTokenizer(str, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img id="Codehighlighter1_177_230_Open_Image" onclick="this.style.display='none'; Codehighlighter1_177_230_Open_Text.style.display='none'; Codehighlighter1_177_230_Closed_Image.style.display='inline'; Codehighlighter1_177_230_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_177_230_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_177_230_Closed_Text.style.display='none'; Codehighlighter1_177_230_Open_Image.style.display='inline'; Codehighlighter1_177_230_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(strTokenizer.hasMoreTokens()) </span><span id="Codehighlighter1_177_230_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_177_230_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(strTokenizer.nextToken());<br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div></font>
		<br />OK.<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> test;<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.StringTokenizer;<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img id="Codehighlighter1_79_600_Open_Image" onclick="this.style.display='none'; Codehighlighter1_79_600_Open_Text.style.display='none'; Codehighlighter1_79_600_Closed_Image.style.display='inline'; Codehighlighter1_79_600_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_79_600_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_600_Closed_Text.style.display='none'; Codehighlighter1_79_600_Open_Image.style.display='inline'; Codehighlighter1_79_600_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> TestStringSplit </span><span id="Codehighlighter1_79_600_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_79_600_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> String str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1.a.3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img id="Codehighlighter1_145_271_Open_Image" onclick="this.style.display='none'; Codehighlighter1_145_271_Open_Text.style.display='none'; Codehighlighter1_145_271_Closed_Image.style.display='inline'; Codehighlighter1_145_271_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_145_271_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_145_271_Closed_Text.style.display='none'; Codehighlighter1_145_271_Open_Image.style.display='inline'; Codehighlighter1_145_271_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> testSplit() </span><span id="Codehighlighter1_145_271_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_145_271_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String[] strArray </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> str.split(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\\.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id="Codehighlighter1_228_268_Open_Image" onclick="this.style.display='none'; Codehighlighter1_228_268_Open_Text.style.display='none'; Codehighlighter1_228_268_Closed_Image.style.display='inline'; Codehighlighter1_228_268_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_228_268_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_228_268_Closed_Text.style.display='none'; Codehighlighter1_228_268_Open_Image.style.display='inline'; Codehighlighter1_228_268_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">strArray.length; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_228_268_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_228_268_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(strArray[i]);<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img id="Codehighlighter1_311_471_Open_Image" onclick="this.style.display='none'; Codehighlighter1_311_471_Open_Text.style.display='none'; Codehighlighter1_311_471_Closed_Image.style.display='inline'; Codehighlighter1_311_471_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_311_471_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_311_471_Closed_Text.style.display='none'; Codehighlighter1_311_471_Open_Image.style.display='inline'; Codehighlighter1_311_471_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> testTokenizer() </span><span id="Codehighlighter1_311_471_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_311_471_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        StringTokenizer strTokenizer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> StringTokenizer(str, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img id="Codehighlighter1_415_468_Open_Image" onclick="this.style.display='none'; Codehighlighter1_415_468_Open_Text.style.display='none'; Codehighlighter1_415_468_Closed_Image.style.display='inline'; Codehighlighter1_415_468_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_415_468_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_415_468_Closed_Text.style.display='none'; Codehighlighter1_415_468_Open_Image.style.display='inline'; Codehighlighter1_415_468_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(strTokenizer.hasMoreTokens()) </span><span id="Codehighlighter1_415_468_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_415_468_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(strTokenizer.nextToken());<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img id="Codehighlighter1_515_598_Open_Image" onclick="this.style.display='none'; Codehighlighter1_515_598_Open_Text.style.display='none'; Codehighlighter1_515_598_Closed_Image.style.display='inline'; Codehighlighter1_515_598_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_515_598_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_515_598_Closed_Text.style.display='none'; Codehighlighter1_515_598_Open_Image.style.display='inline'; Codehighlighter1_515_598_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span id="Codehighlighter1_515_598_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_515_598_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        testSplit();<br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">====================</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        testTokenizer();<br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><img src ="http://www.blogjava.net/warrenwu/aggbug/71258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/warrenwu/" target="_blank">Warren.Wu</a> 2006-09-22 10:26 <a href="http://www.blogjava.net/warrenwu/archive/2006/09/22/71258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>