﻿<?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-smart-文章分类-我的文章分类</title><link>http://www.blogjava.net/smart/category/10121.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 07:42:21 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 07:42:21 GMT</pubDate><ttl>60</ttl><item><title>sqlserver的几个函数要记录</title><link>http://www.blogjava.net/smart/articles/47623.html</link><dc:creator>BBZ.DD.A</dc:creator><author>BBZ.DD.A</author><pubDate>Tue, 23 May 2006 05:35:00 GMT</pubDate><guid>http://www.blogjava.net/smart/articles/47623.html</guid><wfw:comment>http://www.blogjava.net/smart/comments/47623.html</wfw:comment><comments>http://www.blogjava.net/smart/articles/47623.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smart/comments/commentRss/47623.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smart/services/trackbacks/47623.html</trackback:ping><description><![CDATA[
		<font size="2">1，统计函数 avg, count, max, min, sum <br />2， 数学函数 <br />ceiling（n) 返回大于或者等于n的最小整数 <br />floor(n), 返回小于或者是等于n的最大整数 <br />round(m,n), 四舍五入,n是保留小数的位数 <br />abs(n) 绝对值<br />sign(n), 当n&gt;0, 返回1，n=0,返回0，n&lt;0, 返回-1 <br />PI(), 3.1415.... <br />rand(),rand(n), 返回0-1之间的一个随机数 <br />3，字符串函数 <br />ascii(), 将字符转换为ASCII码, ASCII('abc') = 97 <br />char(), ASCII 码 转换为 字符 <br />low()，upper() 大小写转换<br />str(a,b,c)转换数字为字符串。 a,是要转换的字符串。b是转换以后的长度，c是小数位数。str(123.456,8,2) = 123.46 <br />ltrim(), rtrim() 去空格 ltrim去左边的空格,rtrim去右边的空格<br />left(n), right(n), substring(str, start,length) 截取字符串 <br />charindex(子串，母串），查找是否包含。 返回第一次出现的位置，没有返回0 <br />patindex('%pattern%', expression) 功能同上，可是使用通配符 <br />replicate('char', rep_time), 重复字符串 <br />reverse(char),颠倒字符串 <br />replace(str, strold, strnew) 替换字符串 <br />space(n), 产生n个空行 <br />stuff(), SELECT STUFF('abcdef', 2, 3, 'ijklmn') ='aijklmnef', 2是开始位置，3是要从原来串中删除的字符长度，ijlmn是要插入的字符串。 <br />3，类型转换函数: <br />cast, cast( expression as data_type), Example: <br />SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles WHERE CAST(ytd_sales AS char(20)) LIKE '3%' <br />convert(data_type, expression) <br />4,日期函数 <br />day(), month(), year() <br />dateadd(datepart, number, date), datapart指定对那一部分加，number知道加多少，date指定在谁的基础上加。datepart的取值包括，year,quarter,month,dayofyear,day,week,hour,minute,second,比如明天dateadd(day,1, getdate()) <br />datediff(datepart,date1,date2). datapart和上面一样。整个函数结果是date2 - date1 <br />datename(datepart, date) 取那一部分，返回字符串。 <br />datepart(datepart, date) 取一部分，返回整数。 <br />getdate()当前时间 <br />5，系统函数 <br />col_length('tablename','colname') <br />col_name, SELECT COL_NAME(OBJECT_ID('Employees'), 1) = EmployeeID <br />datalength, example: datalenght('abc') =3, datalength(pub_name) --列名</font>
<img src ="http://www.blogjava.net/smart/aggbug/47623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smart/" target="_blank">BBZ.DD.A</a> 2006-05-23 13:35 <a href="http://www.blogjava.net/smart/articles/47623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SimpleDateFormat函数使用的例子</title><link>http://www.blogjava.net/smart/articles/45401.html</link><dc:creator>BBZ.DD.A</dc:creator><author>BBZ.DD.A</author><pubDate>Wed, 10 May 2006 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/smart/articles/45401.html</guid><wfw:comment>http://www.blogjava.net/smart/comments/45401.html</wfw:comment><comments>http://www.blogjava.net/smart/articles/45401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smart/comments/commentRss/45401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smart/services/trackbacks/45401.html</trackback:ping><description><![CDATA[
		<strong>
				<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
				</script>
		</strong>
		<span style="FONT-SIZE: 12px">
				<span>
						<dl>
								<dt>
										<font size="1">public class <b>SimpleDateFormat</b> extends DateFormat</font>
								</dt>
						</dl>
						<p>
								<font size="1">
										<code>SimpleDateFormat</code> 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -&gt; text)、语法分析 (text -&gt; date)和标准化。 </font>
						</p>
						<p>
								<font size="1">
										<code>SimpleDateFormat</code> 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是，希望用 <code>DateFormat</code> 中的 <code>getTimeInstance</code>、 <code>getDateInstance</code> 或 <code>getDateTimeInstance</code> 创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期／时间格式化程序。 可以根据需要用 <code>applyPattern</code> 方法修改格式化方式。 <br /><br />SimpleDateFormat函数的继承关系：<br /></font>
								<font size="1">
										<font color="#000080">java.lang.Object<br />   |<br />   +----java.text.Format<br />           |<br />           +----java.text.DateFormat<br />                   |<br />                   +----java.text.SimpleDateFormat</font>
										<br />下面是个小例子：<br />import java.text.*;<br />import java.util.Date;</font>
						</p>
						<p>
								<font size="1">/**<br />  SimpleDateFormat函数语法：<br />  <br />  G 年代标志符<br />  y 年<br />  M 月<br />  d 日<br />  h 时 在上午或下午 (1~12)<br />  H 时 在一天中 (0~23)<br />  m 分<br />  s 秒<br />  S 毫秒<br />  E 星期<br />  D 一年中的第几天<br />  F 一月中第几个星期几<br />  w 一年中第几个星期<br />  W 一月中第几个星期<br />  a 上午 / 下午 标记符 <br />  k 时 在一天中 (1~24)<br />  K 时 在上午或下午 (0~11)<br />  z 时区<br /> */<br />public class FormatDateTime {</font>
						</p>
						<p>
								<font size="1">    public static void main(String[] args) {<br />        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");<br />        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); <br />        SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()<br />        SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");<br />        SimpleDateFormat myFmt4=new SimpleDateFormat(<br />                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");<br />        Date now=new Date();<br />        System.out.println(myFmt.format(now));<br />        System.out.println(myFmt1.format(now));<br />        System.out.println(myFmt2.format(now));<br />        System.out.println(myFmt3.format(now));<br />        System.out.println(myFmt4.format(now));<br />        System.out.println(now.toGMTString());<br />        System.out.println(now.toLocaleString());<br />        System.out.println(now.toString());<br />    }    <br />    <br />}<br /><br />效果：<br />2004年12月16日 17时24分27秒<br />04/12/16 17:24<br />2004-12-16 17:24:27<br />2004年12月16日 17时24分27秒 星期四 <br />一年中的第 351 天 一年中第51个星期 一月中第3个星期 在一天中17时 CST时区<br />16 Dec 2004 09:24:27 GMT<br />2004-12-16 17:24:27<br />Thu Dec 16 17:24:27 CST 2004<br /><br />下面是个JavaBean:<br />public class FormatDateTime {<br />    <br />    public static String toLongDateString(Date dt){<br />        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");        <br />        return myFmt.format(dt);<br />    }<br />    <br />    public static String toShortDateString(Date dt){<br />        SimpleDateFormat myFmt=new SimpleDateFormat("yy年MM月dd日 HH时mm分");        <br />        return myFmt.format(dt);<br />    }    <br />    <br />    public static String toLongTimeString(Date dt){<br />        SimpleDateFormat myFmt=new SimpleDateFormat("HH mm ss SSSS");        <br />        return myFmt.format(dt);<br />    }<br />    public static String toShortTimeString(Date dt){<br />        SimpleDateFormat myFmt=new SimpleDateFormat("yy/MM/dd HH:mm");        <br />        return myFmt.format(dt);<br />    }<br />    <br />    public static void main(String[] args) {</font>
						</p>
						<p>
								<font size="1">        Date now=new Date();</font>
						</p>
						<p>
								<font size="1">        System.out.println(FormatDateTime.toLongDateString(now));<br />        System.out.println(FormatDateTime.toShortDateString(now));<br />        System.out.println(FormatDateTime.toLongTimeString(now));<br />        System.out.println(FormatDateTime.toShortTimeString(now));<br />    }    <br />    <br />}<br />调用的main 测试结果：<br />2004年12月16日 17时38分26秒 星期四 <br />04年12月16日 17时38分<br />17 38 26 0965<br />04/12/16 17:38</font>
						</p>
				</span>
		</span>
<img src ="http://www.blogjava.net/smart/aggbug/45401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smart/" target="_blank">BBZ.DD.A</a> 2006-05-10 11:18 <a href="http://www.blogjava.net/smart/articles/45401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP学习笔记--JSP标签库</title><link>http://www.blogjava.net/smart/articles/43508.html</link><dc:creator>BBZ.DD.A</dc:creator><author>BBZ.DD.A</author><pubDate>Thu, 27 Apr 2006 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/smart/articles/43508.html</guid><wfw:comment>http://www.blogjava.net/smart/comments/43508.html</wfw:comment><comments>http://www.blogjava.net/smart/articles/43508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smart/comments/commentRss/43508.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smart/services/trackbacks/43508.html</trackback:ping><description><![CDATA[
		<p>
				<font size="1">1.JSP标签库（也称自定义库）可看成是一套产生基于XML脚本的方法，它经由JavaBeans来支持。在概念上说，标签库是非常简单和可以重用的代码构造。它可以大大简化你在页面中输入各种录入框的代码（诸如此类的代码：&lt;input type="text" name="taxpayerName" value = " ,&lt;select name="collectionItemCode" class="required" style="width:200" ...），并使之结构化。 <br /><br />2.标签库（Tag libraries）提供了建立可重用代码块的简单方式。但是和COM和J2EE不同的是，你不需要掌握任何额外的技能就可以建立标签库：如果你会编写JSP页面，你就会建立标签库。最后，标签库还改进了Web应用程序的维护性。这种对维护性的改进表现在：轻易地在JSP页面上就实现了基于XML的可定制接口。 <br /><br />3.一个简单的标签由下面的元素构成： <br />　　⑴ JavaBeans：为了得到Java与生具来的面向对象的好处，可重用的代码应该放到一个独立的代码容器中。这些JavaBeans并不是标签库的一部分。不过它是你的代码库用来执行相关任务的基本代码块。 <br />　　⑵ 标签处理：这是标签库的真正核心。一个标签处理器将引用它需要的任何资源（你的JavaBeans）和访问你的JSP页面的全部信息（pageContext对象）。JSP页面也会将所有已经被设置的标签属性和JSP页面上的标签体中的内容传送给标签处理器。在标签处理器处理完毕后，它将发回输出到你的JSP页面进行处理。 <br />　　⑶ 标签库的描述（tld文件）：这是一个简单的XML文件，它记录着标签处理器的属性、信息和位置。JSP容器通过这个文件来得知从哪里及如何调用一个标签库。 <br />　　⑷ 网站的web.xml文件：这是你网站的初始化文件，在这个文件中，你定义了网站中用到的自定义标签，以及哪个tld文件用来描述每个自定义的标签。 <br />　　⑸ 分发文件（一个WAR或者JAR文件）：如果你想重用自定义标签的话，你需要一个方法来将它由一个项目转移到另一个项目中。将标签库打包为一个JAR文件是一个简单而且有效的方式。 <br />　　⑹ 在你的JSP文件中作标签库声明：很简单，如果要用到该标签的话，只要在页面声明一下就可以，其后，你就可以在该JSP页面的任何地方使用它。 <br /><br />下面是一个实例 <br />1. 先编写标签处理程序，ATMTag.java <br /><font style="BACKGROUND-COLOR: #cc99cc">package tagtest;</font></font>
				<font style="BACKGROUND-COLOR: #cc99cc">
				</font>
		</p>
		<p>
				<font style="BACKGROUND-COLOR: #cc99cc">
						<font size="1">import javax.servlet.jsp.tagext.TagSupport;<br />import java.sql.*;<br />import javax.servlet.jsp.JspWriter;<br />import java.util.Vector;<br /><br />//实现TagSupport或BodyTagSupport接口<br /></font>
						<font size="1">public class ATMtag extends TagSupport{</font>
				</font>
		</p>
		<p>
				<font style="BACKGROUND-COLOR: #cc99cc">
						<font size="1">  Connection con = null;<br />  Statement st = null;<br />  ResultSet rs = null;</font>
				</font>
		</p>
		<font size="1">
				<p>
						<br />
						<font style="BACKGROUND-COLOR: #cc99cc">  public ATMtag() throws ClassNotFoundException{<br />    Class.forName("org.gjt.mm.mysql.Driver");<br />  } </font>
				</p>
				<p>
						<br />
						<font style="BACKGROUND-COLOR: #cc99cc">  public int doStartTag(){<br />    return EVAL_BODY_INCLUDE;<br />  } </font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #cc99cc">  public int doEndTag(){<br />    try{<br />      JspWriter writer = pageContext.getOut();<br />      con = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&amp;amp;characterEncoding=GBK","root","");<br />      String query = "select username,pass,email from userinfo";<br />      System.out.println("Query="+query);<br />      st = con.createStatement();<br />      rs = st.executeQuery(query);<br />      String username = null;<br />      String password = null;<br />      String email = null;<br />      Vector v = new Vector(); </font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #cc99cc">      while(rs.next()){<br />        username = rs.getString(1);<br />        password = rs.getString(2);<br />        email = rs.getString(3);<br />        v.add(username);<br />        v.add(password);<br />        v.add(email);<br />        v.add("...");<br />      } </font>
				</p>
				<p>
						<br />
						<font style="BACKGROUND-COLOR: #cc99cc">      for(int i=0;i&lt;v.size();i++){<br />        String containt = (String)v.elementAt(i);<br />        pageContext.getOut().print(containt);<br />      } </font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #cc99cc">    }<br />    catch(Exception e){<br />      System.out.println("Error is here:"+e.toString());<br />    }<br />    return EVAL_PAGE;<br />  } </font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #9999cc">
								<font style="BACKGROUND-COLOR: #cc99cc">}</font>
								<br />
								<br />
						</font>2. 编写TLD文件的代码：<br /><font style="BACKGROUND-COLOR: #cc99cc">&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; <br />&lt;!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" <br />"</font><a href="http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"><font style="BACKGROUND-COLOR: #cc99cc">http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd</font></a><font style="BACKGROUND-COLOR: #cc99cc">"&gt; <br />&lt;taglib&gt;<br />//标签库版本<br />&lt;tlibversion&gt;1.0&lt;/tlibversion&gt;<br />//标签库依赖的JSP版本 <br />&lt;jspversion&gt;1.1&lt;/jspversion&gt;<br />//标签库名<br />&lt;shortname&gt;ATM&lt;/shortname&gt;<br />&lt;uri&gt;/ATM&lt;/uri&gt;<br />&lt;tag&gt;<br />//定义标签的名 <br />&lt;name&gt;message&lt;/name&gt;<br />&lt;tagclass&gt;tagtest.ATMtag&lt;/tagclass&gt;<br />//此标签体的定义 <br />&lt;bodycontent&gt;JSP&lt;/bodycontent&gt;<br />&lt;/tag&gt;<br />&lt;/taglib&gt;<br /></font><br />3. 错误页面errorpage.jsp的代码: <br /><br /><font style="BACKGROUND-COLOR: #cc99cc">&lt;html&gt; <br />&lt;body&gt; <br />&lt;%@ page isErrorPage="true" %&gt; <br />&lt;%=exception.getMessage() %&gt; <br />&lt;/body&gt; <br />&lt;/html&gt;</font><br /><br />4． 编写JSP文件：ATM.jsp <br /><font style="BACKGROUND-COLOR: #cc99cc">&lt;%@ page contentType="text/html; charset=GBK" %&gt;<br />&lt;%@ taglib uri="/ATM" prefix="mm" %&gt;<br />&lt;%@ page errorPage="errorpage.jsp" %&gt;<br />&lt;!DocType HTML Public "-//W3C//DTD HTML 4.0 Translational//EN "&gt;<br />&lt;html&gt;<br />&lt;table&gt;<br />&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;mm:message/&gt;&lt;/td&gt;&lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/html&gt;<br /></font><br />5.web.xml文件配置<br /><font style="BACKGROUND-COLOR: #cc99cc">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "</font><a href="http://java.sun.com/dtd/web-app_2_3.dtd"><font style="BACKGROUND-COLOR: #cc99cc">http://java.sun.com/dtd/web-app_2_3.dtd</font></a><font style="BACKGROUND-COLOR: #cc99cc">"&gt;<br />&lt;web-app&gt;<br />  &lt;taglib&gt;<br />    &lt;taglib-uri&gt;/ATM&lt;/taglib-uri&gt;<br />    &lt;taglib-location&gt;/WEB-INF/ATM.tld&lt;/taglib-location&gt;<br />  &lt;/taglib&gt;<br />&lt;/web-app&gt;</font></p>
		</font>
<img src ="http://www.blogjava.net/smart/aggbug/43508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smart/" target="_blank">BBZ.DD.A</a> 2006-04-27 11:05 <a href="http://www.blogjava.net/smart/articles/43508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1．将数据库驱动程序的JAR文件如mysql的</title><link>http://www.blogjava.net/smart/articles/41526.html</link><dc:creator>BBZ.DD.A</dc:creator><author>BBZ.DD.A</author><pubDate>Mon, 17 Apr 2006 15:02:00 GMT</pubDate><guid>http://www.blogjava.net/smart/articles/41526.html</guid><wfw:comment>http://www.blogjava.net/smart/comments/41526.html</wfw:comment><comments>http://www.blogjava.net/smart/articles/41526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smart/comments/commentRss/41526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smart/services/trackbacks/41526.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td valign="top" width="404">
										<div align="left">
												<span class="text">
														<br />
														<font size="2">1．将数据库驱动程序的JAR文件如mysql的<br />mysql-connector-java-5.0.0-beta-bin.jar<br />放在Tomcat的 common/lib 中；<br />€<br />2．在D:\Tomcat 5.5\conf\server.xml中设置数据源，以MySQL数据库为例，如下：<br />在&lt;GlobalNamingResources&gt; &lt;/GlobalNamingResources&gt;节点中加入，<br />      &lt;Resource<br />      name="jdbc/DBPool"<br />      type="javax.sql.DataSource"<br />      password="root"<br />      driverClassName="com.mysql.jdbc.Driver"<br />      maxIdle="2"<br />      maxWait="5000"<br />      username="root"<br />      url="jdbc:mysql://127.0.0.1:3306/test"<br />      maxActive="4"/&gt;<br />   属性说明：name，数据源名称，通常取”jdbc/XXX”的格式；<br />            type，”javax.sql.DataSource”;<br />            password，数据库用户密码；<br />            driveClassName，数据库驱动；</font>
												</span>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
		<p>
				<span class="text">
						<font size="2">            maxIdle，最大空闲数，数据库连接的最大空闲时间。超过空闲时间，数据库连<br />                     接将被标记为不可用，然后被释放。设为0表示无限制。<br />            MaxActive，连接池的最大数据库连接数。设为0表示无限制。<br />            maxWait ，最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。<br />3．在你的web应用程序的web.xml中设置数据源参考，如下：<br />  在&lt;web-app&gt;&lt;/web-app&gt;节点中加入，<br />  &lt;resource-ref&gt;<br />    &lt;description&gt;MySQL DB Connection Pool&lt;/description&gt;<br />    &lt;res-ref-name&gt;jdbc/DBPool&lt;/res-ref-name&gt;<br />    &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />    &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />    &lt;res-sharing-scope&gt;Shareable&lt;/res-sharing-scope&gt;<br /> &lt;/resource-ref&gt;<br />  子节点说明： description，描述信息；<br />               res-ref-name，参考数据源名字，同上一步的属性name；<br />               res-type，资源类型，”javax.sql.DataSource”；<br />               res-auth，”Container”；<br />               res-sharing-scope，”Shareable”；<br />4．在D:\Tomcat 5.5\conf\context.xml中设置数据源链接，如下：<br />  在&lt;Context&gt;&lt;/Context&gt;节点中加入，<br />  &lt;ResourceLink<br />   name="jdbc/DBPool" <br />   type="javax.sql.DataSource" <br />   global="jdbc/DBPool"/&gt;<br />   属性说明：name，同第2步和第3步的属性name值，和子节点res-ref-name值；<br />                  type，同样取”javax.sql.DataSource”；<br />                  global，同name值。<br /> <br />至此，设置完成，下面是如何使用数据库连接池。<br /><br />a．建立一个连接池类，DBPool.java，用来创建连接池，代码如下：</font>
				</span>
		</p>
		<p>
				<span class="text">
						<font size="2">package dbpool;<br />import javax.naming.Context;<br />import javax.naming.InitialContext;<br />import javax.naming.NamingException;<br />import javax.sql.DataSource;<br /><br />public class DBPool {<br />    private static DataSource pool;<br />    static {<br />         Context env = null;<br />          try {<br />              env = (Context) new InitialContext().lookup("java:comp/env");<br />              pool = (DataSource)env.lookup("jdbc/DBPool");<br />              if(pool==null) <br />                  System.err.println("'DBPool' is an unknown DataSource");<br />               } catch(NamingException ne) {<br />                  ne.printStackTrace();<br />          }<br />      }<br />    public static DataSource getPool() {<br />        return pool;<br />    }<br />}<br /><br />b．在要用到数据库操作的类或jsp页面中，用DBPool.getPool().getConnection()，获得一个Connection对象，就可以进行数据库操作，最后别忘了对Connection对象调用close()方法，注意：这里不会关闭这个Connection，而是将这个Connection放回数据库连接池。如下所示:</font>
				</span>
		</p>
		<p>
				<span class="text">
						<font size="2">&lt;%@ page contentType="text/html; charset=gb2312" %&gt;<br />&lt;%@ page import="dbpool.DBPool"%&gt;</font>
				</span>
		</p>
		<p>
				<font size="2">&lt;%<br />java.sql.Connection Conn;<br />java.sql.Statement Stmt;<br />java.sql.ResultSet rs=null;<br /><br />Conn =DBPool.getPool().getConnection();<br />Stmt=Conn.createStatement();<br />rs=Stmt.executeQuery("select * from email");</font>
		</p>
		<p>
				<font size="2">while(rs.next()){<br />   out.println(rs.getString("email_user")+"&lt;br&gt;");<br />}<br />Conn.close();</font>
		</p>
		<p>
				<font size="2">%&gt;<br />OK</font>
		</p>
		<p>
				<span class="text">
						<font size="2">
						</font>
				</span> </p>
<img src ="http://www.blogjava.net/smart/aggbug/41526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smart/" target="_blank">BBZ.DD.A</a> 2006-04-17 23:02 <a href="http://www.blogjava.net/smart/articles/41526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中读取Excel文件</title><link>http://www.blogjava.net/smart/articles/41452.html</link><dc:creator>BBZ.DD.A</dc:creator><author>BBZ.DD.A</author><pubDate>Mon, 17 Apr 2006 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/smart/articles/41452.html</guid><wfw:comment>http://www.blogjava.net/smart/comments/41452.html</wfw:comment><comments>http://www.blogjava.net/smart/articles/41452.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/smart/comments/commentRss/41452.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smart/services/trackbacks/41452.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<font size="2">
										</font>
								</td>
								<td colspan="3">
										<pre>
												<font size="2">以前介绍了二种产生Excel报表的方法，一个过於简单，一个只能用於window平台(因为使用jdbc-odbc bridge)，且无法使用到Excel内部的各种公式或是方法，因此，今天介绍一个apache出的元件叫POI，它可以在UNIX或window平台处理word或Excel档案，而不需要依靠window的com，并且可设定储存格格式、列印格式等等；今天我来介绍其中有关资料读取、新增、修改及删除的功能，若各位网友研究好其他的功能，麻烦Email给我(ljj@mlc.edu.tw)，分享给大家！ 

一、需要用的档案：jakarta-poi-1.8.0-dev-20020917.jar 
　几乎每天都有1.8.0的最新版(但非正式版)，正式的版本是1.5.0 
　http://jakarta.apache.org/builds/jakarta-poi/nightly/ 
　将档案复制到classpath所指到的地方 

二、有兴趣的朋友可以参考 
　　http://jakarta.apache.org/poi/ 

三、先建立一个叫做book1.xls的Excel档，内容如下 
---------------------------------- 
项目　　单价　　数量　　 合计 
CPU　　 7000　　5　　　　35000 
硬碟　　2500　　2　　　　5000 
记忆体　1600　　3　　　　4800 
---------------------------------- 
其中合计的栏位是设定公式，单价*数量 



四、资料读取範例
&lt;%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %&gt;
&lt;%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=MS950"&gt;
&lt;title&gt;读取Excel档案&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table border="1" width="100%"&gt;
&lt;%
  FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
  //设定FileINputStream读取Excel档 
  POIFSFileSystem fs = new POIFSFileSystem( finput );
  HSSFWorkbook wb = new HSSFWorkbook(fs);
  HSSFSheet sheet = wb.getSheetAt(0);
  //读取第一个工作表，宣告其为sheet 
  finput.close();
  HSSFRow row=null;
  //宣告一列 
  HSSFCell cell=null;
  //宣告一个储存格 
  short i=0;
  short y=0;

  //以巢状迴圈读取所有储存格资料 
  for (i=0;i&lt;=sheet.getLastRowNum();i++)
  {
    out.println("&lt;tr&gt;");
    row=sheet.getRow(i);
    for (y=0;y&lt;row.getLastCellNum();y++)
    {
       cell=row.getCell(y);
       out.print("&lt;td&gt;");
       
       //判断储存格的格式 
       switch ( cell.getCellType() )
       {
           case HSSFCell.CELL_TYPE_NUMERIC:
               out.print(cell.getNumericCellValue());
               //getNumericCellValue()会回传double值，若不希望出现小数点，请自行转型为int 
               break;
           case HSSFCell.CELL_TYPE_STRING:
               out.print( cell.getStringCellValue());
               break;
           case HSSFCell.CELL_TYPE_FORMULA:
               out.print(cell.getNumericCellValue());
               //读出公式储存格计算後的值
               //若要读出公式内容，可用cell.getCellFormula() 
               break;
           default:
               out.print( "不明的格式");
               break;
       }
       out.println("&lt;/td&gt;");
    }
    out.println("&lt;/tr&gt;");
  }
%&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;



五、资料新增範例
&lt;%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %&gt;
&lt;%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=MS950"&gt;
&lt;title&gt;插入资料至Excel档案&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
  FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
  //设定FileINputStream读取Excel档 
  POIFSFileSystem fs = new POIFSFileSystem( finput );
  HSSFWorkbook wb = new HSSFWorkbook(fs);
  HSSFSheet sheet = wb.getSheetAt(0);
  //读取第一个工作表，宣告其为sheet 
  finput.close();
  HSSFRow row=null;
  //宣告一列 
  HSSFCell cell=null;
  //宣告一个储存格
  short i=4;
  row=sheet.createRow(i);
  //建立一个新的列，注意是第五列(列及储存格都是从0起算)
  cell=row.createCell((short)0);
  cell.setEncoding(HSSFCell.ENCODING_UTF_16);
  //设定这个储存格的字串要储存双位元 
  cell.setCellValue("显示卡");
  cell=row.createCell((short)1);
  cell.setCellValue(1700);
  cell=row.createCell((short)2);
  cell.setCellValue(8);
  cell=row.createCell((short)3);
  //设定这个储存格为公式储存格，并输入公式 
  cell.setCellFormula("B"+(i+1)+"*C"+(i+1));
  try
  {
    FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");
    wb.write(fout);
    //储存 
    fout.close();
    out.println("储存成功&lt;a href='book1.xls'&gt;book1.xls&lt;/a&gt;");
  }
  catch(IOException e)
  {
    out.println("产生错误，错误讯息："+e.toString());
  }
%&gt;
&lt;/body&gt;
&lt;/html&gt;



六、资料删除、修改範例
&lt;%@ page contentType="text/html;charset=MS950" import="java.util.*,java.io.*" %&gt;
&lt;%@ page import="org.apache.poi.poifs.filesystem.*,org.apache.poi.hssf.usermodel.*" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=MS950"&gt;
&lt;title&gt;删除、修改资料至Excel档案&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
  FileInputStream finput = new FileInputStream(application.getRealPath("/")+"book1.xls" );
  //设定FileINputStream读取Excel档
  POIFSFileSystem fs = new POIFSFileSystem( finput );
  HSSFWorkbook wb = new HSSFWorkbook(fs);
  HSSFSheet sheet = wb.getSheetAt(0);
  //读取第一个工作表，宣告其为sheet 
  finput.close();
  HSSFRow row=null;
  //宣告一列 
  HSSFCell cell=null;
  //宣告一个储存格
  row=sheet.getRow((short)4);
  //取出第五列
  if (row!=null)
     sheet.removeRow(row);
  //先侦测第五列存不存在，若在的话将第五列删除
  row=sheet.getRow((short)3);
  //取出第四列
  cell=row.getCell((short)2);
  //取出第三个储存格 
  cell.setCellValue(7);
  //设定该储存格值为7
  cell=row.getCell((short)3);
  cell.setCellFormula(cell.getCellFormula());
  //上两行为取出公式储存格，并重新计算(因为刚才更新过计算公式的值)
  //如果不做，公式计算後的值不会更新 
  try
  {
    FileOutputStream fout=new FileOutputStream(application.getRealPath("/")+"book1.xls");
    wb.write(fout);
    //储存 
    fout.close();
    out.println("储存成功&lt;a href='book1.xls'&gt;book1.xls&lt;/a&gt;");
  }
  catch(IOException e)
  {
    out.println("产生错误，错误讯息："+e.toString());
  }
%&gt;
&lt;/body&gt;
&lt;/html&gt;
</font>
										</pre>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/smart/aggbug/41452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smart/" target="_blank">BBZ.DD.A</a> 2006-04-17 14:01 <a href="http://www.blogjava.net/smart/articles/41452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>