﻿<?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-SmileFace</title><link>http://www.blogjava.net/SmileFace/</link><description> 与java一起走过的日子</description><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 22:47:20 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 22:47:20 GMT</pubDate><ttl>60</ttl><item><title>postgresql安装</title><link>http://www.blogjava.net/SmileFace/archive/2007/05/25/120101.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Fri, 25 May 2007 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2007/05/25/120101.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/120101.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2007/05/25/120101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/120101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/120101.html</trackback:ping><description><![CDATA[<p>在windows和fedora 4下都安装了postgresql，有2点体会：<br><br>1。windows下安装postgresql，最好在安装前先建立&#8220;limit&#8221;权限的用户postgres；当然，看见报错的时候再加也来的及呀；<br><br>2。在fedora 4 下安装，要么用rpm安装低版本的postgresql，要么用source逐步安装最新版本的。用rpm比较简单，不说了；<br>&nbsp;&nbsp;&nbsp; 如果安装source，不要到网上到处找帮助，直接在postgresql的网站上找到权威文档就行：<a href="http://www.postgresql.org/docs/8.2/static/installation.html">http://www.postgresql.org/docs/8.2/static/installation.html</a>。 我觉得很实用。按照它的步骤做下来，ok。 尤其是，注意看里面14.2中关于requirments的说明，在<font face="Courier New">configure时</font>记得使用<tt class=OPTION>--without-readline</tt> option<tt class=FILENAME>，否则会出错的。<br><br></tt></p>
<img src ="http://www.blogjava.net/SmileFace/aggbug/120101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2007-05-25 22:42 <a href="http://www.blogjava.net/SmileFace/archive/2007/05/25/120101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下安装java开发环境jdk＋tomcat＋eclipse＋sysdeo</title><link>http://www.blogjava.net/SmileFace/archive/2007/05/25/119933.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Fri, 25 May 2007 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2007/05/25/119933.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/119933.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2007/05/25/119933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/119933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/119933.html</trackback:ping><description><![CDATA[前天开始在fedora 4 下安装java的这一套开发环境，满以为很简单，后来发现里面还是有点小trick的，而且在网上并没有找到类似的完整讲解的文章，所以写出来共享。希望对大家有所帮助。<br><br>安装的版本： jdk1.5.0_11+Tomcat5.0.28+Eclipse3.2.2+Sysdeo3.2.1<br><br>说明：<br><br>1、fc4第一次有了自带的全套java开发环境，也就是说，如果你完全安装，那么jdk，tomcat和eclipse都是直接装好的。据说这是因为版权的原因不再使用sun的jdk，所以才会这样。但是却害苦了我。我遇到了一个接一个的问题。后来再网上搜了一遍，看了写文章，结论是：fc4自带的这套环境不能用，最好自己装。于是就有了我的子装过程和这片文章。注意：我遇到的问题主要来自sysdeo，如果你不使用这个插件，也许fc4的环境可以将就用。<br><br>2、安装jdk和tomcat需要是root用户，安装eclipse和sysdeo最好使用开发者自己的用户。<br><br>安装过程：<br><br>1 安装jdk：&nbsp;&nbsp; 参考文档：<a href="http://www.sitepoint.com/article/jakarta-tapestry">http://www.sitepoint.com/article/jakarta-tapestry</a><br><br>&nbsp;&nbsp; su&nbsp;到root用户：<br><br>&nbsp;&nbsp;&nbsp; 1.1 下载jdk-1_5_0_11-linux-i586-rpm.bin；<br>&nbsp;&nbsp;&nbsp;1.2 要执行文件，须先change文件的perrmissions: chmod +x jdk-1_5_0_11-linux-i586-rpm.bin<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 1.3 执行文件：./jdk-1_5_0_11-linux-i586-rpm.bin<br>&nbsp;&nbsp;&nbsp; 1.4&nbsp;在etc/profile.d新建java.sh，如下：<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; if ! echo ${PATH} | grep -q /usr/java/jdk1.5.0_11/bin ; then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export PATH=/usr/java/jdk1.5.0_11/bin:${PATH}<br>&nbsp;&nbsp;&nbsp; fi<br>&nbsp;&nbsp;&nbsp; if ! echo ${PATH} | grep -q /usr/java/jdk1.5.0_11/jre/bin ; then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export PATH=/usr/java/jdk1.5.0_11/jre/bin:${PATH}<br>&nbsp;&nbsp;&nbsp; fi<br>&nbsp;&nbsp;&nbsp; export JAVA_HOME=/usr/java/jdk1.5.0_11<br>&nbsp;&nbsp;&nbsp; export CLASSPATH=.:/usr/java/jdk1.5.0_11/lib/tools.jar:/usr/java/jdk1.5.0_11/jre/lib/rt.jar<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>2.安装tomcat：我完全参考文档：<a href="http://linux-sxs.org/internet_serving/c140.html#INSTALL">http://linux-sxs.org/internet_serving/c140.html#INSTALL</a>。这个文章很好，强烈推荐。<br><br>3、安装eclipse：&nbsp;没有trick。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.1 su到普通的开发用户；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.2&nbsp;unzip即可。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3&nbsp;./eclipse即可启动。<br>4、安装sysdeo：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为在windows下这个插件用的很顺手，所以在linux下我也希望能接着用它。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以普通用户身份下载，unzip，然后mv到eclips的plugins下，即可。<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重新启动eclipse，小猫的图标在。再在window/perferences下配置一下。运行，就出问题了。原因是：tomcat的启动只有root有权限，现在是普通用户的模式下，权限受限。solution：&nbsp; 让普通用户接管tomcat的权限。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 做法是：<strong><font face=Courier size=2>chown -R test:test&nbsp; /opt/tomcat<br>&nbsp;&nbsp;&nbsp;这里的 test：test是我自己的用户名和用户组，opt/tomcat是catalina_home。<br>&nbsp;&nbsp; 注意：如果这里的/opt/tomcat是sambolic link的话，真正的目录也需要chown。即，如果是opt/jarcartar_tomcat_1.5.0指向opt/tomcat，那么opt/jarcartar_tomcat_1.5.0也要chown。<br><br><br><br>这下应该就ok了。</font></strong>
<img src ="http://www.blogjava.net/SmileFace/aggbug/119933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2007-05-25 11:32 <a href="http://www.blogjava.net/SmileFace/archive/2007/05/25/119933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PreparedStatement接口</title><link>http://www.blogjava.net/SmileFace/archive/2006/12/23/89614.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Fri, 22 Dec 2006 17:47:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/12/23/89614.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/89614.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/12/23/89614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/89614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/89614.html</trackback:ping><description><![CDATA[
		<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td align="left" width="100%">
										<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
												<tbody>
														<tr>
																<td style="PADDING-LEFT: 5px; LINE-HEIGHT: 25px" align="left" colspan="2">
																		<h3>
																				<font color="#000000">出处：hihi的网站</font>
																		</h3>
																		<h3>
																				<a href="http://home.fego.cn/loading.html?aspxerrorpath=/members/hihi/m_Article/Detail.aspx">
																						<font color="#000000">http://home.fego.cn/loading.html?aspxerrorpath=/members/hihi/m_Article/Detail.aspx</font>
																				</a>
																				<font color="#000000">
																				</font>
																		</h3>
																		<p>
																				<br />
																				<font color="#000000">
																						<font size="4">Java数据库接口JDBC入门基础讲座-第六讲 PreparedStatement接口</font>
																				</font>
																		</p>
																</td>
														</tr>
														<tr>
																<td style="PADDING-LEFT: 5px; LINE-HEIGHT: 25px" align="left">
																		<h4>
																				<font color="#000000">
																				</font> </h4>
																</td>
																<td align="right"> </td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
						<div>
						</div>
						<tr height="100%">
								<td colspan="2">
										<span class="f14">　　<strong>概述</strong><br /><br />　　<font size="2">该 PreparedStatement 接口继承 Statement，并与之在两方面有所不同：<br /><br />　　PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的，该语句为每个 IN 参数保留一个问号（“？”）作为占位符。每个问号的值必须在该语句执行之前，通过适当的setXXX 方法来提供。<br /><br /><br />　　由于 PreparedStatement 对象已预编译过，所以其执行速度要快于 Statement 对象。因此，多次执行的 SQL 语句经常创建为 PreparedStatement 对象，以提高效率。<br /><br />　　作为 Statement 的子类，PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法，用于设置发送给数据库以取代 IN 参数占位符的值。同时，三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。这些方法的 Statement 形式（接受 SQL 语句参数的形式）不应该用于 PreparedStatement 对象。<br /><br />　　1、创建 PreparedStatement 对象<br /><br />　　以下的代码段（其中 con 是 Connection 对象）创建包含带两个 IN 参数占位符的 SQL 语句的 PreparedStatement 对象：<br /><br />PreparedStatement pstmt = con.prepareStatement("UPDATE table4 SET m = ? WHERE x = ?");<br /><br />　　pstmt 对象包含语句 "UPDATE table4 SET m = ? WHERE x = ?"，它已发送给DBMS，并为执行作好了准备。<br /><br />　　2、传递 IN 参数<br /><br />　　在执行 PreparedStatement 对象之前，必须设置每个 ? 参数的值。这可通过调用 setXXX 方法来完成，其中 XXX 是与该参数相应的类型。例如，如果参数具有Java 类型 long，则使用的方法就是 setLong。setXXX 方法的第一个参数是要设置的参数的序数位置，第二个参数是设置给该参数的值。例如，以下代码将第一个参数设为 123456789，第二个参数设为 100000000：<br /><br /></font><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"><tbody><tr><td><font size="2">pstmt.setLong(1, 123456789);<br />pstmt.setLong(2, 100000000);</font></td></tr></tbody></table><br /><font size="2">　　一旦设置了给定语句的参数值，就可用它多次执行该语句，直到调用clearParameters 方法清除它为止。在连接的缺省模式下（启用自动提交），当语句完成时将自动提交或还原该语句。<br /><br />　　如果基本数据库和驱动程序在语句提交之后仍保持这些语句的打开状态，则同一个 PreparedStatement 可执行多次。如果这一点不成立，那么试图通过使用PreparedStatement 对象代替 Statement 对象来提高性能是没有意义的。<br /><br />　　利用 pstmt（前面创建的 PreparedStatement 对象），以下代码例示了如何设置两个参数占位符的值并执行 pstmt 10 次。如上所述，为做到这一点，数据库不能关闭 pstmt。在该示例中，第一个参数被设置为 "Hi"并保持为常数。在 for 循环中，每次都将第二个参数设置为不同的值：从 0 开始，到 9 结束。<br /><br /></font><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"><tbody><tr><td><font size="2">pstmt.setString(1, "Hi");<br />for (int i = 0; i &lt; 10; i++) {<br />　pstmt.setInt(2, i);<br />　int rowCount = pstmt.executeUpdate();<br />}</font></td></tr></tbody></table><br /><font size="2">　　3、IN 参数中数据类型的一致性<br /><br />　　setXXX 方法中的 XXX 是 Java 类型。它是一种隐含的 JDBC 类型（一般 SQL 类型），因为驱动程序将把 Java 类型映射为相应的 JDBC 类型（遵循该 JDBCGuide中§8.6.2 “映射 Java 和 JDBC 类型”表中所指定的映射），并将该 JDBC 类型发送给数据库。例如，以下代码段将 PreparedStatement 对象 pstmt 的第二个参数设置为 44，Java 类型为 short：<br /><br /></font><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#e6e4dd" border="1"><tbody><tr><td><font size="2">pstmt.setShort(2, 44);</font></td></tr></tbody></table><br /><font size="2">　　驱动程序将 44 作为 JDBC SMALLINT 发送给数据库，它是 Java short 类型的标准映射。<br /><br />　　程序员的责任是确保将每个 IN 参数的 Java 类型映射为与数据库所需的 JDBC 数据类型兼容的 JDBC 类型。不妨考虑数据库需要 JDBC SMALLINT 的情况。如果使用方法 setByte ，则驱动程序将 JDBC TINYINT 发送给数据库。这是可行的，因为许多数据库可从一种相关的类型转换为另一种类型，并且通常 TINYINT 可用于SMALLINT 适用的任何地方<br /></font></span>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/SmileFace/aggbug/89614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-12-23 01:47 <a href="http://www.blogjava.net/SmileFace/archive/2006/12/23/89614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>properties文件再续</title><link>http://www.blogjava.net/SmileFace/archive/2006/12/22/89391.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Thu, 21 Dec 2006 21:11:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/12/22/89391.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/89391.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/12/22/89391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/89391.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/89391.html</trackback:ping><description><![CDATA[使用J2SEAPI读取Properties文件的六种方法：<br /><br />　　1。使用java.util.Properties类的load()方法示例：<br />                InputStream in=new BufferedInputStream(newFileInputStream(name));<br />                Properties p=new Properties();<br />                p.load(in);<br /><br />　　2。使用java.util.ResourceBundle类的getBundle()方法示例：<br />                  ResourceBundle rb=ResourceBundle.getBundle(name,Locale.getDefault());<br /><br />　　3。使用java.util.PropertyResourceBundle类的构造函数示例：<br />                   InputStream in=newBufferedInputStream(newFileInputStream(name));<br />                  ResourceBundle rb=newPropertyResourceBundle(in);<br /><br />　　4。使用class变量的getResourceAsStream()方法示例：<br />                   InputStream in=JProperties.class.getResourceAsStream(name);<br />                   Properties p=newProperties();<br />                   p.load(in);<br /><br />　　5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法示例：          <br /><br />                   InputStream in=JProperties.class.getClassLoader().getResourceAsStream(name);<br />                   Properties p=new Properties();<br />                    p.load(in);<br /><br />　　6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法示例：InputStreamin=ClassLoader.getSystemResourceAsStream(name);Propertiesp=newProperties();p.load(in);<br /><br />　　补充<br /><br />　　Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法示例：<br /><br />                 InputStream in=context.getResourceAsStream(path);<br />                 Properties p=newProperties();<br />                 p.load(in);<img src ="http://www.blogjava.net/SmileFace/aggbug/89391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-12-22 05:11 <a href="http://www.blogjava.net/SmileFace/archive/2006/12/22/89391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于在java中定义常量</title><link>http://www.blogjava.net/SmileFace/archive/2006/12/21/89179.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Wed, 20 Dec 2006 20:06:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/12/21/89179.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/89179.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/12/21/89179.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/89179.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/89179.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0in 0in 0pt">
				<span lang="ZH-CN" style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-CA; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
				</span>
				<span lang="EN-CA" style="FONT-SIZE: 10pt; mso-ansi-language: EN-CA; mso-bidi-font-size: 12.0pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>首先：java没有叫 全局变量 的东西（有全局变量还叫OO吗？）；原因：Java将所有设计都基于对象的基础上。Java的全局变量只能对一个类内部而言。能够在类内的任何地方使用的变量就是全局变量，而只在某个特定的函数或者局部的程序块内使用的变量则是局部变量。<br /><br />所以：<font size="3">声明为static的变量实质上就是全局变量。当声明一个对象时，并不产生static变量的拷贝，而是该类所有的实例变量共用同一个static变量。</font><br /><br />使用：java中只有static和非static变量,这个属于每个类的,如果需要全局变量比如PI(3.14...),可以写一个类Math,定义static变量PI,调用Math.PI就可以使用了,这样就达到我们使用全局变量的目的了。<br /><br /></o:p>
				</span>
		</p>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1、将一个</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">package</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">中需要的常量集中到一个</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">XyzConstants</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">之类的</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">interface</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">里声明，</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<br />
		</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">就像普通的</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">field</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">那样声明就行了。</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<br />public interface SomeConstants {<br />   public <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:place w:st="on"><st1:placename w:st="on">int</st1:placename><st1:placetype w:st="on">PORT</st1:placetype></st1:place> = 80;<br />   public String IP = "166.111.16.1";<br />   public boolean test = true;<br />}</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">就可以。</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<br />
		</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">用到常量的类</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">implements</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">这个接口</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">..</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">简单情况这样就行乐。</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<br />
				<br />
		</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">2、更</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">formal</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">的做法是写一个类维护所有的常量，负责从配置文件（例如properties文件或xml文件）读取所有的常量的值。</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<br />
		</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">可以在一个</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">static {} </span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">块里从配置文件中初始化所有</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">static</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">的变量。</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">这样有利于提高软件的可配置性。改些东东不用动代码，比较好。</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<br />
		</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">最好要有</span>
		<span lang="EN-GB" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana; LETTER-SPACING: 0.2pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">config Tool</span>
		<span lang="ZH-CN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; LETTER-SPACING: 0.2pt; mso-ansi-language: EN-GB; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">负责写配置文件。<br /><br />3.其他说明：<br /><font face="Verdana" size="1"><br />定义一个公开类,在里面加static 变量。<br />public class infos{<br />  private infos(){<br />  }<br />   public static int PORT = 80;<br />   public static String IP = "166.111.166.111";<br />   public static boolean test = true;<br />   public static finale String MYNAME="zzz"; //定义中用了finale,就是不能改变指的。<br />}<br />在别的class中调用这些变量就是: infos.PORT,infos.IP,infos.test,infos.MYNAME<br />多个class交互时可以通过改变这些变量的值来传递信息。比如 infos.test被别的class改成了false,可能表示某一件事已经失败或已经做过，其它class就可以提前知道这些信息。</font></span>
<img src ="http://www.blogjava.net/SmileFace/aggbug/89179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-12-21 04:06 <a href="http://www.blogjava.net/SmileFace/archive/2006/12/21/89179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDom基本概念和使用</title><link>http://www.blogjava.net/SmileFace/archive/2006/12/21/89178.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Wed, 20 Dec 2006 18:40:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/12/21/89178.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/89178.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/12/21/89178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/89178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/89178.html</trackback:ping><description><![CDATA[出处：<a href="http://www.360doc.com/showWeb/0/0/162473.aspx">http://www.360doc.com/showWeb/0/0/162473.aspx</a><br /><br />一、前言<br />    JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果，2000年初，JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。 
<p>    DOM适合于当今流行的各种语言，包括Java,JavaScripte,VB,VBScript，Perl,C,C++等。它了为HTML和XML文档提供了一个可应用于不同平台的编程接口。W3C DOM的最新信息可从http://www.w3.org/TR2001/WD-DOM-Lever-3-Core-20010913查阅。微软在http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmconxmldomuserguide.asp上也有DOM的详细技术信息。</p><p>   DOM的设计为了适用于不同的语言，它保留了不同语言中非常相似的API。但是它并不适合于Java编程者的习惯。而JDOM作为一种轻量级API被制定，它最核心的要求是以Java为中心，只适合于Java语言，它遵循DOM的接口主要规则，除去了DOM中为了兼容各语言而与Java习惯的不同。</p><p>二、使用JDOM的前提条件<br />   须要有SAX、DOM解析器的类文件，JDOM只是一种适合Java程序员来使用的Java XML解析器，目前流行的Java XML解析器还有：Apache Xerces Java、JAXP。<br />Xerces Java解析器是完全用Java编写的XML解析器，最新版本是2.5，它支持以下标准和API：<br />（1） XML1.0规范（第二版本）<br />（2） XML命名空间规范<br />（3） DOM2核心标准规范<br />（4） SAX2核心扩展<br />（5） JAXP1.2 ：是Sun提供的使用Java处理XML的接口API。<br />（6） XML Schema结构和数据类型标准</p><p>      还有最好的是它开放源代码，我们可以在http://xml.apache.org/dist/xerces-j/ 处去下载。下载文件Xerces-J-bin.2.5.0.zip。<br />解压下载文件，得到四个压缩包加到项目的路径中（其实不要全加，但不熟的情况下考虑这么做）。<br />JDOM的二进制版本下载：http://www.jdom.org/downloads/index.html<br />把解压后的jdom.jar文件加到项目的类路径中，另外便于调试，还要下载它的源代码。</p><p>三、使用JDOM解析XML<br />     好了，现在该是正题了。下面通过一个简单的例子说明一下怎么用JDOM这一适合Java程序员习惯的工具包来解析XML文档。<br />为了简单，我用了如下XML作为要解析的XML文件：<br />&lt;?xml version="1.0" encoding="gb2312"?&gt;<br />&lt;books&gt;<br />   &lt;book email="zhoujunhui"&gt;<br />     &lt;name&gt;rjzjh&lt;/name&gt;<br />     &lt;price&gt;60.0&lt;/price&gt;<br />  &lt;/book&gt;<br />&lt;/books&gt;<br />够简单的吧，但它对于我们关心的东西都有了，子节点，属性。<br />下面是用于解析这个XML文件的Java文件：<br /></p><pre>1 public class JDomParse {
2	public JDomParse(){
3		String xmlpath="library.xml";
4		SAXBuilder builder=new SAXBuilder(false);
5		try {
6			Document doc=builder.build(xmlpath);
7			Element books=doc.getRootElement();
8			List booklist=books.getChildren("book");
9			for (Iterator iter = booklist.iterator(); iter.hasNext();) {
10				Element book = (Element) iter.next();
11				String email=book.getAttributeValue("email");
12				System.out.println(email);
13				String name=book.getChildTextTrim("name");
14				System.out.println(name);
15				book.getChild("name").setText("alterrjzjh");
16
17			}
18
19			XMLOutputter outputter=new XMLOutputter();
20			outputter.output(doc,new FileOutputStream(xmlpath));
21
22		} catch (JDOMException e) {
23			e.printStackTrace();
24		} catch (IOException e) {
25			e.printStackTrace();
26		}
27	}
28	public static void main(String[] args) {
29		new JDomParse();
30	}
31}</pre>不到30行代码，现在我对代码解释一下：<br />四、解释代码<br />引用的类：<br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.util.Iterator;<br />import java.util.List;<br />//下面是引用到JDOM中的类<br />import org.jdom.Document;<br />import org.jdom.Element;<br />import org.jdom.JDOMException;<br />import org.jdom.input.SAXBuilder;<br />import org.jdom.output.XMLOutputter;<br />（1）使用JDOM首先要指定使用什么解析器。如：<br />        SAXBuilder builder=new SAXBuilder(false); 这表示使用的是默认的解析器<br />（2）得到Document，我们以后要进行的所有操作都是对这个Document操作的：<br />        Document doc=builder.build(xmlpath);<br />（3）得到根元素：<br />        Element books=doc.getRootElement();<br />在JDOM中所有的节点（DOM中的概念）都是一个org.jdom.Element类，当然他的子节点也是一个org.jdom.Element类。<br />（4）得到元素（节点）的集合：<br />      List booklist=books.getChildren("book");<br />这表示得到“books”元素的所在名称为“book”的元素，并把这些元素都放到一个List集合中<br />（5）轮循List集合<br />     for (Iterator iter = booklist.iterator(); iter.hasNext();) {<br />       Element book = (Element) iter.next();<br />    ｝<br />还有一种轮循方法是：<br />    for(int i=0;I&lt;booklist.size();I++){<br />      Element book=(Element)booklist.get(i);<br />    }<br />（6）取得元素的属性：<br />    String email=book.getAttributeValue("email");<br />   取得元素book的属性名为“email”的属性值。<br />（7）取得元素的子元素（为最低层元素）的值：<br />    String name=book.getChildTextTrim("name");<br />    注意的是，必须确定book元素的名为“name”的子元素只有一个。<br />（8）改变元素（为最低层元素）的值：<br />    book.getChild("name").setText("alterrjzjh");<br />    这只是对Document的修改，并没有在实际的XML文档中进行修改<br />（9）保存Document的修改到XML文件中：<br />   XMLOutputter outputter=new XMLOutputter();<br />    outputter.output(doc,new FileOutputStream(xmlpath));<br /><br />我们先要有一个XMLOutputter类，再把已经修改了的Document保存进XML文档中。<br />到此。用JDOM解析和处理XML文档讲解完了，麻雀虽小，五脏俱全。现在已对JDOM有个整体上的概念了吧。<br /><br />进一步可以参考的文章：<a href="http://www.1-100.org/JSP/13190.htm">http://www.1-100.org/JSP/13190.htm</a><img src ="http://www.blogjava.net/SmileFace/aggbug/89178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-12-21 02:40 <a href="http://www.blogjava.net/SmileFace/archive/2006/12/21/89178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于properties文件</title><link>http://www.blogjava.net/SmileFace/archive/2006/12/19/88773.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Tue, 19 Dec 2006 05:36:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/12/19/88773.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/88773.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/12/19/88773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/88773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/88773.html</trackback:ping><description><![CDATA[
		<span class="javascript" id="text109">建设一个完整的J2EE应用总会有很多系统参数，例如Datasource、INITIAL_CONTEXT_FACTORY、PROVIDER_URL等等，怎么才能最方便的存取，并且便于系统部署，移植呢？ <br /><br />就是－－.properties属性文件。<br /><br />掌握他的使用方法后，您可以象使用一个Class一样使用您的.properties属性文件。 <br /><br />Java中提供了一个java.util.Properties工具类，使用Properties类您可以方便的从一个.properties属性文件中读取设置参数，示例代码如下： <br /><br />    Properties props = new Properties(); <br />    props.load(new FileInputStream("filename.properties")); <br />    String value = props.getProperty("propertyname"); <br /><br />如果您的.properties文件打包入一个Jar或War文件，您可以使用ClassLoader的getResourceAsStream()方法得到一个InputStream对象，示例代码如下： <br /><br />        Properties props = new Properties(); <br />        props.load(getClass().getResourceAsStream("com/company/application/application.properties")); <br />        String value = props.getProperty("propertyname"); <br /><br />不过这种方式应该适用于较少量的访问吧，比如应用系统的初始化等等。 <br />如果需要频繁得到信息，就不太适合了。</span>
		<br />
		<br />另解： 他就象是数据可以存放在*.txt中，但是当数据变得很复杂，就要用专门的东西来存放---数据库，用java.util.Properties类来存储配置参数提供一种以Java为中心的数据存储配置方案，对Java有一定的依赖性，另外功能上也很匮乏，相当于*.txt,目前对于稍微复杂一些的系统存储配置都采用通用的xml方案，可以充分利用xml的强大功能,相当于数据库。<br /><br />Properties文件就象一个文本文件，文件中使用属性和值来保存数据，如：abc.name=Colin。使用Porperites文件来保存实际上就是创建一个Properites文件，在程序关闭的时候，将数据写入文件，再等程序启动的时候，从这个Properties文件中读出数据。<br /><br />出处：<a href="http://www.cjsdn.net/post/view?bid=2&amp;id=109&amp;sty=3&amp;age=0&amp;tpg=1&amp;ppg=1#109">http://www.cjsdn.net/post/view?bid=2&amp;id=109&amp;sty=3&amp;age=0&amp;tpg=1&amp;ppg=1#109</a><img src ="http://www.blogjava.net/SmileFace/aggbug/88773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-12-19 13:36 <a href="http://www.blogjava.net/SmileFace/archive/2006/12/19/88773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于serilization</title><link>http://www.blogjava.net/SmileFace/archive/2006/12/16/88090.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Fri, 15 Dec 2006 20:11:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/12/16/88090.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/88090.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/12/16/88090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/88090.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/88090.html</trackback:ping><description><![CDATA[
		<div class="floatright">
				<span id="hzhok">
				</span>
		</div>
		<p>
				<!-- 画中画广告结束 -->
				<span class="top11">首先要了解java默认的序列化行为，java将一切关于对象的信息都保存了下了，也就是说，有些时候那些不需要保存的也被保存了下来。一般情况下，我们仅仅需要保存逻辑数据就可以了。不需要保存的数据我们可以用关键字transient标出。<br /><br />例如：<br /><br />import java.io.*; <br /><br />public class Serial implements Serializable { <br /><br />　int company_id; <br /><br />　String company_addr; <br /><br />　transient boolean company_flag; <br /><br />} <br /><br /><br />其中的company_flag字段将不会参与序列化与反序列化，但同时也增加了为它初始值的责任。这也是序列化常常导致的问题之一。因为序列化相当于一个只接受数据流的public构造函数，这种对象构造方法是语言之外的。但他仍然是一种形式上的构造函数。如若你的类不能够通过其他方面来保证初始化，则你需要额外的提供readObject方法，首先正常的反序列化，然后对transient标示的字段进行初始化。 <br /><br />在不适合的时候，使用java默认的序列化行为可能会带来速度上的影响，最糟糕的情况是，可能导致溢出。在某些数据结构的实现中，经常会充斥着各种的循环引用，而java的默认序列化行为，并不了解你的对象结构，其结果就是java试图通过一种昂贵的“图遍历”来保存对象状态。可想而知，不但慢而且可能溢出。这时候你就要提供自己的readObject，来代替默认的行为。 </span>
		</p>
		<p>
				<span class="top11">note: <a href="http://developer.51cto.com/art/200601/20017.htm">http://developer.51cto.com/art/200601/20017.htm</a></span>
		</p>
<img src ="http://www.blogjava.net/SmileFace/aggbug/88090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-12-16 04:11 <a href="http://www.blogjava.net/SmileFace/archive/2006/12/16/88090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用tomcat连接池配置mysql数据库连接</title><link>http://www.blogjava.net/SmileFace/archive/2006/12/01/84705.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Thu, 30 Nov 2006 21:03:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/12/01/84705.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/84705.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/12/01/84705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/84705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/84705.html</trackback:ping><description><![CDATA[5月份的时候，我的一篇blog里提到这个内容，那时候没有深入写，现在还是补补吧：<br /><br />在配置之前需要把数据库启动程序copy到tomcat的common/lib下。<br /><br />1、在Tomcat 的“管理”工具中，添加“数据源”。键入以下值：
<ul><li>JNDI 名称：<tt>jdbc/blue</tt></li><li>数据源 URL：<tt>jdbc:mysql://localhost/home</tt></li><li>JDBC 驱动程序类：<tt>org.gjt.mm.mysql.Driver</tt></li><li>用户名：<tt>root</tt></li><li>口令： ×××</li></ul><p>2、在conf/catalina/localhost下找到与“项目名.xml”文件，程序名是webapps目录下的项目文件夹名称。在此文件中的 <tt>&lt;context&gt;</tt> 标记之间添加以下资源链接： </p><pre class="examplecode">   &lt;ResourceLink name="jdbc/blue" type="javax.sql.DataSource" global="jdbc/blue"/&gt;<br /><br />注意：一定要加在这个文件中，而不是在项目文件夹里的web.xml中。至少我这样做时结果不对。<br /><br />3、 接下来就是测试了。测试程序很重要，尽量用简单的了。以下是我的测试程序：<br /><br /><br /><br /><br /><br />&lt;%@ page contentType="text/html; charset=GBK"%&gt;<br />&lt;%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%&gt;<br />&lt;html&gt;<br />&lt;head&gt;&lt;title&gt;test.jsp&lt;/title&gt;&lt;/head&gt;<br />&lt;body bgcolor="#ffffff"&gt;</pre><pre class="examplecode">&lt;% <br />Context initCtx=new InitialContext();<br />DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/blue");</pre><pre class="examplecode">try<br />{<br />out.println("test! &lt;br&gt;");<br />Connection conn=ds.getConnection();<br />out.println("data from database:&lt;br&gt;");<br />Statement stmt=conn.createStatement();<br />ResultSet rs =stmt.executeQuery("select * from dept");<br />while(rs.next())<br />{</pre><pre class="examplecode">out.println(rs.getString(1));<br />out.println(rs.getString(2));</pre><pre class="examplecode">}<br />rs.close();<br />stmt.close();<br />}<br />catch(Exception e)<br />{<br />e.printStackTrace();<br />}<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Good Luck!</pre><img src ="http://www.blogjava.net/SmileFace/aggbug/84705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-12-01 05:03 <a href="http://www.blogjava.net/SmileFace/archive/2006/12/01/84705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Begin to put what I have learned into practise(Eclipse+Tomcat)</title><link>http://www.blogjava.net/SmileFace/archive/2006/10/13/74892.html</link><dc:creator>SmileFace</dc:creator><author>SmileFace</author><pubDate>Thu, 12 Oct 2006 20:22:00 GMT</pubDate><guid>http://www.blogjava.net/SmileFace/archive/2006/10/13/74892.html</guid><wfw:comment>http://www.blogjava.net/SmileFace/comments/74892.html</wfw:comment><comments>http://www.blogjava.net/SmileFace/archive/2006/10/13/74892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SmileFace/comments/commentRss/74892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SmileFace/services/trackbacks/74892.html</trackback:ping><description><![CDATA[
		<p>There are two conditons before you want to run *.jsp file in your web.<br /><br />1. You have to put the *.jsp into a project which have already registered in the server.xml of conf folder in Tomcat,or the project which under the webapps folder directly<br />2. In the project, you must have WEB-INF folder which have classes and lib subdirectory.</p>
<img src ="http://www.blogjava.net/SmileFace/aggbug/74892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SmileFace/" target="_blank">SmileFace</a> 2006-10-13 04:22 <a href="http://www.blogjava.net/SmileFace/archive/2006/10/13/74892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>