﻿<?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-读万卷书不如行千里路，经验的积累又不是一蹴而就的，不但需要知识的沉积，还需要长久经验的总结升华-文章分类-Web应用服务器(中间件)</title><link>http://www.blogjava.net/liujw/category/9479.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 15:35:29 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 15:35:29 GMT</pubDate><ttl>60</ttl><item><title>Tomcat 的数据库连接池设置与应用(Mysql篇)之(实例讲解)</title><link>http://www.blogjava.net/liujw/articles/39141.html</link><dc:creator>刘军伟</dc:creator><author>刘军伟</author><pubDate>Tue, 04 Apr 2006 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/liujw/articles/39141.html</guid><wfw:comment>http://www.blogjava.net/liujw/comments/39141.html</wfw:comment><comments>http://www.blogjava.net/liujw/articles/39141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liujw/comments/commentRss/39141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liujw/services/trackbacks/39141.html</trackback:ping><description><![CDATA[我用的是配置:Tomcat5.5+JEE(jsdk1.5)+WINXP<br /><br />还是简单的说一说文件配置:<br />1:修改%tomcat%/conf/server.xml在&lt;GlobalNamingResources&gt;后加如下内容.<br />      &lt;Resource<br />      name="jdbc/DBPool" //数据源名称<br />      type="javax.sql.DataSource"<br />      password="xxxxxxxx"<br />      driverClassName="com.mysql.jdbc.Driver"<br />      maxIdle="2"<br />      maxWait="5000"<br />      username="root"<br />      url="jdbc:mysql://127.0.0.1:3306/hptest"<br />      maxActive="4"/&gt;<br />2.修改%tomcat%/conf/context.xm;在&lt;Context&gt;后加<br />   &lt;ResourceLink<br />   name="jdbc/DBPool" <br />   type="javax.sql.DataSource" <br />   global="jdbc/DBPool"/&gt;<br />3.修改%tomcat%/conf/web.xml <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 />  这样配置就算差不多了.如果具体的还不懂可见上次发的文章.<br />4.写一个程序测试.(写一个WEB程序)<br />   我的是Myeclipse 写的程序,这里不能从电脑上贴图真有点不方便(我想哭).<br />     <u><b> 1:写一个连接类:</b></u>    <br />  DBPool.java<br /> package com.test;<br /><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 />  <u><b>  2:写一个Servlet:</b></u>  <br />  其中有是用来连接数据库和显示查询结果.<br />  Mytest.java<br />  package com.test;<br /><br />import java.io.IOException;<br />import java.io.PrintWriter;<br />import java.sql.*;<br /><br />import javax.servlet.ServletException;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br /><br />public class Mytest extends HttpServlet {<br /><br />    /**<br />     * Constructor of the object.<br />     */<br />    public Mytest() {<br />        super();<br />    }<br /><br />    /**<br />     * Destruction of the servlet. &lt;br&gt;<br />     */<br />    public void destroy() {<br />        super.destroy(); // Just puts "destroy" string in log<br />        // Put your code here<br />    }<br /><br />    /**<br />     * The doGet method of the servlet. &lt;br&gt;<br />     *<br />     * This method is called when a form has its tag value method equals to get.<br />     * <br />     * @param request the request send by the client to the server<br />     * @param response the response send by the server to the client<br />     * @throws ServletException if an error occurred<br />     * @throws IOException if an error occurred<br />     */<br />    public void doGet(HttpServletRequest request, HttpServletResponse response)<br />            throws ServletException, IOException {<br /><br />        response.setContentType("text/html;charset=gb2312");<br />        PrintWriter out = response.getWriter();<br />        String id=(String)request.getParameter("id");<br />        Connection con=null;<br />        try{<br />            <br />            con=DBPool.getPool().getConnection();<br />             Statement stmt=con.createStatement();<br />                ResultSet rst=stmt.executeQuery("select * from userinf where userid='"+id+"'");<br />                  if(rst.next()){<br />                                          out.println("&lt;br&gt;ID号:"+rst.getInt("userid"));<br />                      out.println("&lt;br&gt;用户名:"+com.test.ASSICTOGBR2312.trans(rst.getString("name")));<br />                      out.println("&lt;br&gt;地址:"+rst.getString("address" ));<br />                      out.println("&lt;br&gt;生日"+rst.getDate("year" ));<br />                  }<br />                  else{<br />                  out.println("没有这个ID");<br />                  stmt.close();<br />                  }<br />        }<br />        catch(Exception e){<br />            e.printStackTrace();<br />        }<br />        finally{  //一定要注意这里对数据库的关闭不然<br />                             //自己想了<br />            try{<br />                if(con!=null){<br />                    con.close();<br />                }<br />                <br />            }<br />          catch(Exception e){<br />           e.printStackTrace();<br />           <br />       }<br />            <br />        }<br />    <br />    }<br /><br />    /**<br />     * The doPost method of the servlet. &lt;br&gt;<br />     *<br />     * This method is called when a form has its tag value method equals to post.<br />     * <br />     * @param request the request send by the client to the server<br />     * @param response the response send by the server to the client<br />     * @throws ServletException if an error occurred<br />     * @throws IOException if an error occurred<br />     */<br />    public void doPost(HttpServletRequest request, HttpServletResponse response)<br />            throws ServletException, IOException {<br />        doGet(request,response);<br />        <br />    }<br /><br />    /**<br />     * Initialization of the servlet. &lt;br&gt;<br />     *<br />     * @throws ServletException if an error occure<br />     */<br />    public void init() throws ServletException {<br />        // Put your code here<br />    }<br /><br />}<br />    <u><b>  3:写一个JSP页面:</b></u><br />         Myjsp.jsp<br />     <br />&lt;%@ page language="java" import="java.util.*" pageEncoding="gb2312"%&gt;<br />&lt;%<br />String path = request.getContextPath();<br />String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";<br />%&gt;<br /><br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />  &lt;head&gt;<br />    &lt;base href="&lt;%=basePath%&gt;"&gt;<br />    <br />    &lt;title&gt;My JSP 'MyJsp.jsp' starting page&lt;/title&gt;<br />    <br />    &lt;meta http-equiv="pragma" content="no-cache"&gt;<br />    &lt;meta http-equiv="cache-control" content="no-cache"&gt;<br />    &lt;meta http-equiv="expires" content="0"&gt;<br />    &lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&gt;<br />    &lt;meta http-equiv="description" content="This is my page"&gt;<br />    <br />    &lt;!--<br />    &lt;link rel="stylesheet" type="text/css" href="styles.css"&gt;<br />    --&gt;<br />  &lt;/head&gt;<br />  <br />  &lt;body&gt;<br />  <br />    This is my JSP page. &lt;br&gt;<br />    &lt;FORM action="/MyWeb/servlet/Mytest" method="post"&gt;<br />    print input search id: &lt;INPUT type="text" name="id"&gt;<br />    &lt;INPUT type="submit" value="submit"&gt;<br />    &lt;/FORM&gt;<br />  &lt;/body&gt;<br />&lt;/html&gt;<br />   4:其中有转字,为了不显示乱码<br />    package com.test;<br /><br />import java.io.*;<br />public class ASSICTOGBR2312 {<br />      public static String trans(String ass){<br />          String res=null;<br />          byte temp[];<br />          try{<br />              temp=ass.getBytes("iso-8859-1");<br />              res=new String(temp);<br />          }<br />          catch(UnsupportedEncodingException en) {<br />              System.out.println(en.toString());<br />          }<br />          <br />         <br />           <br />          return res; <br />    <br />      }<br />}<br /><br /><br />   5:web.xml<br /><br />   &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" <br />    xmlns="http://java.sun.com/xml/ns/j2ee" <br />    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <br />    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee <br />    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;<br />  &lt;servlet&gt;<br />    &lt;description&gt;This is the description of my J2EE component&lt;/description&gt;<br />    &lt;display-name&gt;This is the display name of my J2EE component&lt;/display-name&gt;<br />    &lt;servlet-name&gt;Mytest&lt;/servlet-name&gt;<br />    &lt;servlet-class&gt;com.test.Mytest&lt;/servlet-class&gt;<br />  &lt;/servlet&gt;<br /><br />  &lt;servlet-mapping&gt;<br />    &lt;servlet-name&gt;Mytest&lt;/servlet-name&gt;<br />    &lt;url-pattern&gt;/servlet/Mytest&lt;/url-pattern&gt;<br />  &lt;/servlet-mapping&gt;<br /><br />&lt;/web-app&gt;<br /><br />   6: 其中数据库结构如下:<br />      数据库名:hptest<br />      表:userinf<br />      用下面的命令建一个数据库和表<br />      create database hptest;<br />      create table  userinf (<br />       userid int(4) not null,<br />       name char(10) not null,<br />       address varchar(50),<br />       year date,<br />       constraint fk_userinf primary key(userid));<br />       )<br />       insert into userinf values(19,'hp','cq','1982-10-22');<br />     <br /> 希望对某些人能有所帮助.谢谢大家支持<img src ="http://www.blogjava.net/liujw/aggbug/39141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liujw/" target="_blank">刘军伟</a> 2006-04-04 13:40 <a href="http://www.blogjava.net/liujw/articles/39141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 的数据库连接池设置与应用(Mysql篇)</title><link>http://www.blogjava.net/liujw/articles/39142.html</link><dc:creator>刘军伟</dc:creator><author>刘军伟</author><pubDate>Tue, 04 Apr 2006 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/liujw/articles/39142.html</guid><wfw:comment>http://www.blogjava.net/liujw/comments/39142.html</wfw:comment><comments>http://www.blogjava.net/liujw/articles/39142.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liujw/comments/commentRss/39142.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liujw/services/trackbacks/39142.html</trackback:ping><description><![CDATA[1．将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中；日前最新有是5.0<br />下载地址:<a class="l2" href="http:///" target="_blank">http://dev.mysql.com/downloads/</a><br /><br />2．在server.xml中设置数据源，以MySQL数据库为例，如下：<br />在&lt;GlobalNamingResources&gt; &lt;/GlobalNamingResources&gt;节点中加入，<br />      &lt;Resource<br />      name="jdbc/DBPool"<br />      type="javax.sql.DataSource"<br />      password="xxxxxxxx" 我的密码是xxxxxxxx<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，数据库驱动；<br />            maxIdle，最大空闲数，数据库连接的最大空闲时间。超过空闲时间，数据库连<br />                     接将被标记为不可用，然后被释放。设为0表示无限制。<br />            MaxActive，连接池的最大数据库连接数。设为0表示无限制。<br />            maxWait ，最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示<br />                     无限制。<br /><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 /><br />4．在web应用程序的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 />5．建立一个连接池类，DBPool.java，用来创建连接池，代码如下：<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 e) {<br />                  e.printStackTrace();<br />          }<br />      }<br />    public static DataSource getPool() {<br />        return pool;<br />    }<br />}<br /><img src ="http://www.blogjava.net/liujw/aggbug/39142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liujw/" target="_blank">刘军伟</a> 2006-04-04 13:40 <a href="http://www.blogjava.net/liujw/articles/39142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>