java servlet 连接mysql 数据库

来源:互联网 发布:夸客金融数据分析面试 编辑:程序博客网 时间:2024/05/17 23:59
前面我已经将java应用程序连接到了数据库,但是servlet与applicaton有所不同:application可以绕过像服务器(like:Tomacat)直接连接到了数据库:只需要加载驱动适当jdbc程序。
Class.forName("com.mysql.jdbc.Driver").newInstance();
用jdbc  url 定义驱动程序和数据源之前的连接,并建立一个连接对象   
Connection con1=
            DriverManager.getConnection("jdbc:mysql://localhost:3306/sample_db?
user=root&password=password&useUnicode=true&characterEncoding=GB2312");  
最后是建立一个Statement Object利用它来执行sql语句。
 servlet 和应用程序不同之处在于它还需要通过像tomcat服务起来加载才能在jsp页面与 servlet建立通信,而且执行servlet本身也需要在当前目录下的WEB-INF下配置web.xml.所以在执行servlet之前需要正确的配置conf/server.xml文件.
假如你的当前目录在webapps/JSPBook.那么在server.xml中加入以下文字:
  
               
               
               
...........
Context path="/JSPBook" docBase="JSPBook" debug="0" crosscontext="true" reloadable="true">
  Resource name="jdbc/sample_db" auth="Container"
            type="javax.sql.DataSource"/>
  ResourceParams name="jdbc/sample_db">
    parameter>
      name>factory/name>
      value>org.apache.commons.dbcp.BasicDataSourceFactory/value>
    /parameter>
    parameter>
      name>username/name>
      value>root/value>
    /parameter>
    parameter>
      name>password/name>
      value>browser/value>
    /parameter>
    parameter>
      name>driverClassName/name>
      value>com.mysql.jdbc.Driver/value>
    /parameter>
    parameter>
      name>url/name>
      value>jdbc:mysql://localhost:3306/sample_db?useUnicode
              =true&characterEncoding=UTF-8/value>
    /parameter>
    parameter>
      name>maxActive/name>
      value>20/value>
    /parameter>
    parameter>
      name>maxIdle/name>
      value>5/value>
    /parameter>
    parameter>
      name>maxWait/name>
      value>10000/value>
    /parameter>
  /ResourceParams>
/Context>
......
注意:数据库中的用户名和密码自己修改成自己设置的.
紧接着就是配置JSPBook/WEB-INF/web.xml
    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"    version="2.4">  Welcome to Tomcat       Welcome to Tomcat  
..........
servlet>
        servlet-name>ConnectDatabase/servlet-name>
        servlet-class>tw.com.javaworld.CH14.ConnectDatabase/servlet-class>
    /servlet>
    servlet-mapping>
      servlet-name>ConnectDatabase/servlet-name>
      url-pattern>/CH14/ConnectDatabase/url-pattern>
    /servlet-mapping>
.............
  
至于驱动程序的配置:请参考:
[url=http://blog.chinaunix.net/u/21684/showart_193282.html]一路风尘[/url]
下面测试:
  其中数据库sample_db 中的表employee资料如下:
+-------------+------------------+------+-----+---------+----------------+| Field      
| Type             | Null | Key | Default | Extra          |+-------------+------------------+------+-----+---------+----------------+| employee_id
| int(10) unsigned | NO   | PRI | NULL    | auto_increment || last_name   
| varchar(15)      | NO   |     |         |                || first_name  
| varchar(15)      | NO   |     |         |                || birth       | date             | NO   |     
|         |                || sex         | enum('M','F')    | YES  |     |
M       |                || email       | varchar(40)      | YES  |     |
NULL    |                |+-------------+------------------+------+-----+---------+----------------+
package tw.com.javaworld.CH14;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Title:        建立Servlet小应用程序与student.gdb数据库的连接
* Description:  Java语言演示程序:建立Servlet小应用程序与student.gdb数据库的连接,用于北京师范大学计算机系Java课程教学示范。
* Copyright:    Copyright (c) 2002
* Company:      北京师范大学计算机系
* @author 孙一林
* @version 1.0
*/
public class ConnectDatabase extends HttpServlet{
    /** 建立Servlet与数据库的连接并通过SQL命令获取数据库数据*/
    public void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException{
        PrintWriter    out;
        String        title = "Servlet建立与数据库的连接";
        response.setContentType("text/html;charset=GB2312");
        out = response.getWriter();
        out.println("");
        out.println(title);
        out.println("");
        out.println("" + title + "");
        out.println("这是从Servlet输出的数据库数据");
        String driverName = "com.mysql.jdbc.Driver";
                Driver d;
        Connection con;
        Statement stmt;
        ResultSet results;
        try {
            d = (Driver)Class.forName(driverName).newInstance();
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample_db","root","password");
            stmt = con.createStatement();
            String sqlstr = "select * from employee";
            results = stmt.executeQuery(sqlstr);    // 获取数据库结果集
            displayResult(results,out);            // 输出为HTML显示格式
            stmt.close();
            con.close();
        }
        catch (Exception e) {
            out.println("错误:" + e.toString());
        }
        out.println("");
        out.close();
    }
    /** 在Web页面中显示数据库数据*/
    public void displayResult(ResultSet results,PrintWriter out){
        StringBuffer buf = new StringBuffer();
        String temp;
        try {
            ResultSetMetaData rsmd = results.getMetaData();
            int numCols = rsmd.getColumnCount();
            int i, rowcount = 0;
            for (i=1; i = numCols; i++){
            if (i > 1) buf.append(",");
                buf.append(rsmd.getColumnLabel(i));
        }
        buf.append("/n");
        while (results.next() && rowcount  100){
            for (i=1; i = numCols; i++) {
                if (i > 1) buf.append(",");
                    buf.append((results.getString(i)));
            }
            buf.append("
");
            rowcount++;
        }
        out.println("
");
        out.println(buf.toString());
        results.close();
               } catch (Exception e) {
            out.println("错误:" + e.toString());
            return;
        }
    }
}
编译好.java  文件之后,启动Tomcat打开浏览器:http://localhost:8080/JSPBook/CH14/ConnectDatabase  (CH14:package)
如果出现以下结果:那就ok
Servlet建立与数据库的连接
这是从Servlet输出的数据库数据
employee_id,last_name,first_name,birth,sex,email
10001,Lin,Spence,1985-07-23,M,llfeng@163.com10002,Feby,Bufei,1999-09-22,F,feibibufei@163.com10003,Deng,TianXiong,1978-12-11,F,txDeng@163.com10004,Naimei,Lin,1990-03-03,M,xiaoxiao@must.com10005,Wang,Tom,1978-12-11,F,aaa@asdf.com10006,Zheng,Caimu,1978-12-11,F,ilvoeyou@love.com10007,Peifei,Wang,2003-02-03,M,pfwang@must.edu.mo10008,Zhu,Guowei,1978-12-11,F,aaa@asdf.com10009,Hua,Jiahui,1978-12-11,M,ilvoeyou@love.com10010,Li,Zicheng,1978-12-11,F,aaa@asdf.com

原创粉丝点击