Tomcat 的数据库连接池设置与应用(Mysql篇)

上次我发了一篇文章是讲的Tomcat 的数据库连接池设置与应用(Mysql篇)
其中只讲了如何设置,但是没有一个具体的例子这次我就以一个具体的实例演示一下:
我用的是配置:Tomcat5.5+JEE(jsdk1.5)+WINXP

还是简单的说一说文件配置:
1:修改%tomcat%/conf/server.xml在<GlobalNamingResources>后加如下内容.
      <Resource
      name="jdbc/DBPool" //数据源名称
      type="javax.sql.DataSource"
      password="xxxxxxxx"
      driverClassName="com.mysql.jdbc.Driver"
      maxIdle="2"
      maxWait="5000"
      username="root"
      url="jdbc:mysql://127.0.0.1:3306/hptest"
      maxActive="4"/>
2.修改%tomcat%/conf/context.xm;在<Context>后加
   <ResourceLink
   name="jdbc/DBPool"
   type="javax.sql.DataSource"
   global="jdbc/DBPool"/>
3.修改%tomcat%/conf/web.xml
<resource-ref>
    <description>MySQL DB Connection Pool</description>
    <res-ref-name>jdbc/DBPool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
  这样配置就算差不多了.如果具体的还不懂可见上次发的文章.
4.写一个程序测试.(写一个WEB程序)
我的是Myeclipse 写的程序
1:写一个连接类:   
DBPool.java
package com.test;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DBPool {
    private static DataSource pool;
    static {
         Context env = null;
          try {
              env = (Context) new InitialContext().lookup("java:comp/env");
              pool = (DataSource)env.lookup("jdbc/DBPool");
              if(pool==null)
                  System.err.println("'DBPool' is an unknown DataSource");
               } catch(NamingException ne) {
                  ne.printStackTrace();
          }
      }
    public static DataSource getPool() {
        return pool;
    }
  
}
    2:写一个Servlet: 
  其中有是用来连接数据库和显示查询结果.
Mytest.java
package com.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Mytest extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public Mytest() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=gb2312");
        PrintWriter out = response.getWriter();
        String id=(String)request.getParameter("id");
        Connection con=null;
        try{
           
            con=DBPool.getPool().getConnection();
             Statement stmt=con.createStatement();
                ResultSet rst=stmt.executeQuery("select * from userinf where userid='"+id+"'");
                  if(rst.next()){
                                          out.println("<br>ID号:"+rst.getInt("userid"));
                      out.println("<br>用户名:"+com.test.ASSICTOGBR2312.trans(rst.getString("name")));
                      out.println("<br>地址:"+rst.getString("address" ));
                      out.println("<br>生日"+rst.getDate("year" ));
                  }
                  else{
                  out.println("没有这个ID");
                  stmt.close();
                  }
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{  //一定要注意这里对数据库的关闭不然
                             //自己想了
            try{
                if(con!=null){
                    con.close();
                }
               
            }
          catch(Exception e){
           e.printStackTrace();
          
       }
           
        }
   
    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);
       
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occure
     */
    public void init() throws ServletException {
        // Put your code here
    }

}
      3:写一个JSP页面:
         Myjsp.jsp
    
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'MyJsp.jsp' starting page</title>
   
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
   
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
 
  <body>
 
    This is my JSP page. <br>
    <FORM action="/MyWeb/servlet/Mytest" method="post">
    print input search id: <INPUT type="text" name="id">
    <INPUT type="submit" value="submit">
    </FORM>
  </body>
</html>
   4:其中有转字,为了不显示乱码
    package com.test;

import java.io.*;
public class ASSICTOGBR2312 {
      public static String trans(String ass){
          String res=null;
          byte temp[];
          try{
              temp=ass.getBytes("iso-8859-1");
              res=new String(temp);
          }
          catch(UnsupportedEncodingException en) {
              System.out.println(en.toString());
          }
         
        
          
          return res;
   
      }
}


   5:web.xml

   <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Mytest</servlet-name>
    <servlet-class>com.test.Mytest</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Mytest</servlet-name>
    <url-pattern>/servlet/Mytest</url-pattern>
  </servlet-mapping>

</web-app>

   6: 其中数据库结构如下:
      数据库名:hptest
      表:userinf
      用下面的命令建一个数据库和表
      create database hptest;
      create table  userinf (
       userid int(4) not null,
       name char(10) not null,
       address varchar(50),
       year date,
       constraint fk_userinf primary key(userid));
       )
       insert into userinf values(19,'hp','cq','1982-10-22');
    
希望对某些人能有所帮助.谢谢大家支持   

上次我发了一篇文章是讲的Tomcat 的数据库连接池设置与应用(Mysql篇)
其中只讲了如何设置,但是没有一个具体的例子这次我就以一个具体的实例演示一下:
我用的是配置:Tomcat5.5+JEE(jsdk1.5)+WINXP

还是简单的说一说文件配置:
1:修改%tomcat%/conf/server.xml在<GlobalNamingResources>后加如下内容.
      <Resource
      name="jdbc/DBPool" //数据源名称
      type="javax.sql.DataSource"
      password="xxxxxxxx"
      driverClassName="com.mysql.jdbc.Driver"
      maxIdle="2"
      maxWait="5000"
      username="root"
      url="jdbc:mysql://127.0.0.1:3306/hptest"
      maxActive="4"/>
2.修改%tomcat%/conf/context.xm;在<Context>后加
   <ResourceLink
   name="jdbc/DBPool"
   type="javax.sql.DataSource"
   global="jdbc/DBPool"/>
3.修改%tomcat%/conf/web.xml
<resource-ref>
    <description>MySQL DB Connection Pool</description>
    <res-ref-name>jdbc/DBPool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
  这样配置就算差不多了.如果具体的还不懂可见上次发的文章.
4.写一个程序测试.(写一个WEB程序)
   我的是Myeclipse 写的程序,这里不能从电脑上贴图真有点不方便(我想哭).
      1:写一个连接类:   
  DBPool.java
package com.test;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DBPool {
    private static DataSource pool;
    static {
         Context env = null;
          try {
              env = (Context) new InitialContext().lookup("java:comp/env");
              pool = (DataSource)env.lookup("jdbc/DBPool");
              if(pool==null)
                  System.err.println("'DBPool' is an unknown DataSource");
               } catch(NamingException ne) {
                  ne.printStackTrace();
          }
      }
    public static DataSource getPool() {
        return pool;
    }
  
}
    2:写一个Servlet: 
  其中有是用来连接数据库和显示查询结果.
  Mytest.java
  package com.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Mytest extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public Mytest() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=gb2312");
        PrintWriter out = response.getWriter();
        String id=(String)request.getParameter("id");
        Connection con=null;
        try{
           
            con=DBPool.getPool().getConnection();
             Statement stmt=con.createStatement();
                ResultSet rst=stmt.executeQuery("select * from userinf where userid='"+id+"'");
                  if(rst.next()){
                                          out.println("<br>ID号:"+rst.getInt("userid"));
                      out.println("<br>用户名:"+com.test.ASSICTOGBR2312.trans(rst.getString("name")));
                      out.println("<br>地址:"+rst.getString("address" ));
                      out.println("<br>生日"+rst.getDate("year" ));
                  }
                  else{
                  out.println("没有这个ID");
                  stmt.close();
                  }
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{  //一定要注意这里对数据库的关闭不然
                             //自己想了
            try{
                if(con!=null){
                    con.close();
                }
               
            }
          catch(Exception e){
           e.printStackTrace();
          
       }
           
        }
   
    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);
       
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occure
     */
    public void init() throws ServletException {
        // Put your code here
    }

}
      3:写一个JSP页面:
         Myjsp.jsp
    
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'MyJsp.jsp' starting page</title>
   
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
   
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
 
  <body>
 
    This is my JSP page. <br>
    <FORM action="/MyWeb/servlet/Mytest" method="post">
    print input search id: <INPUT type="text" name="id">
    <INPUT type="submit" value="submit">
    </FORM>
  </body>
</html>
   4:其中有转字,为了不显示乱码
    package com.test;

import java.io.*;
public class ASSICTOGBR2312 {
      public static String trans(String ass){
          String res=null;
          byte temp[];
          try{
              temp=ass.getBytes("iso-8859-1");
              res=new String(temp);
          }
          catch(UnsupportedEncodingException en) {
              System.out.println(en.toString());
          }
         
        
          
          return res;
   
      }
}


   5:web.xml

   <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Mytest</servlet-name>
    <servlet-class>com.test.Mytest</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Mytest</servlet-name>
    <url-pattern>/servlet/Mytest</url-pattern>
  </servlet-mapping>

</web-app>

   6: 其中数据库结构如下:
      数据库名:hptest
      表:userinf
      用下面的命令建一个数据库和表
      create database hptest;
      create table  userinf (
       userid int(4) not null,
       name char(10) not null,
       address varchar(50),
       year date,
       constraint fk_userinf primary key(userid));
       )
       insert into userinf values(19,'hp','cq','1982-10-22');

你可能感兴趣的:(数据结构,tomcat,mysql,servlet,SQL Server)