JDK+Tomcat+Servlet串連Mysql資料庫

來源:互聯網
上載者:User
經過幾天的調試、查閱資料,終於將Mysql資料庫連接上了。雖然這幾天一直鬱悶,一直找不到原因,忽然霍然開朗,心情還是很舒暢的。畢竟覺得這幾天的努力沒有白費。喜悅之餘把調試過程全程記錄了下來。
一、開源軟體
Tomcat             5.0.28
JDK                j2sdk1.4.2_03
JDBC                mysql-connector-java-3.1.13-bin.jar
Mysql                5.0
二、配置環境
將以上開源軟體從相應的官方網站上下載後,依次進行安裝。
我安裝的順序及路徑分別為:
JDK:        D:\j2sdk1.4.2_03
Tomcat:D:\jakarta-tomcat-5.0.28
Mysql:        C:\program files\mysql        (預設路徑)
JDBC:        將下載下來的JDBC驅動解壓縮,我放在了D:\jdb目錄下。

開始進行環境變置配置:按右鍵“我的電腦”選擇屬性,進階——環境變數,在系統變數下,選“建立”,具體配置如下:
變數名                     變數值
CATALINA_HOME        D:\jakarta-tomcat-5.0.28
classpath               .;D:\j2sdk1.4.2_03\lib\tools.jar;
                            D:\j2sdk1.4.2_03\jre\lib\rt.jar;
                            D:\Tomcat 5.0\common\lib\servlet-api.jar;
                            D:\j2sdk1.4.2_03\lib\mysql-connector-java-3.1.13-bin-g.jar;
                            D:\jdbc\mysql-connector-java-3.1.13-bin.jar
JAVA_HOME           D:\j2sdk1.4.2_03

注意:       
1\在classpath設定時,.;是不能省略的,它代表了當前路徑。
2\將下載下來的JDBC驅動解壓縮後,可以看到mysql-connector-java-3.1.13-bin.jar檔案及相關的檔案夾,開啟其中的debug檔案夾,可以找到mysql-connector-java-3.1.13-bin-g.jar檔案。
3\在classpath中設定D:\Tomcat 5.0\common\lib\servlet-api.jar;是為了使Servlet可用。

三、下載SQLyog,將這個小程式安裝後,可以使mysql資料庫變為可見。自我感覺比mysql-front好用。
四、用Servlet建立一個bookstore資料庫,並插入資料。若運行成功列印“success!”否則拋出異常列印“載入資料庫失敗”。(此程式摘自孫鑫的JAVA Web開發詳解一書)
1、D盤建立檔案夾JSPLesson\ch08,在ch08檔案夾下中建立src和WEB-INF子檔案夾,在WEB-INF檔案夾下,建立classes子檔案夾。
2、在src檔案夾中建立CreateDBServlet.java檔案,內容如下:
package org.sunxin.lesson.jsp.bookstore;

import javax.servlet.*;
import java.io.*;
import javax.servlet.http.*;
import java.sql.*;

public class CreateDBServlet extends HttpServlet
{
    private String url;
    private String user;
    private String password;
   
    public void init() throws ServletException
    {
        String driverClass=getInitParameter("driverClass");
        url=getInitParameter("url");
        user=getInitParameter("user");
        password=getInitParameter("password");
        try
        {
            Class.forName(driverClass);
        }
        catch(ClassNotFoundException ce)
        {
            throw new UnavailableException("載入資料庫驅動失敗!");
        }
    }
   
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
               throws ServletException,IOException
    {
        Connection conn=null;
        Statement stmt=null;
        try
        {
            conn=DriverManager.getConnection(url,user,password);
            stmt=conn.createStatement();
            stmt.executeUpdate("create database bookstore");
            stmt.executeUpdate("use bookstore");
            stmt.executeUpdate("create table bookinfo(id INT not null primary key,title VARCHAR(50) not null,author VARCHAR(50) not null,bookconcern VARCHAR(100) not null,publish_date DATE not null,price FLOAT(4,2) not null,amount SMALLINT,remark VARCHAR(200)) ENGINE=InnoDB");
            stmt.addBatch("insert into bookinfo values(1,'Java從入門到精通','張三','張三出版社','2004-6-1',34.00,35,null)");
            stmt.addBatch("insert into bookinfo values(2,'JSP深入編程','李四','李四齣版社','2004-10-1',56.00,20,null)");
            stmt.addBatch("insert into bookinfo values(3,'J2EE進階編程','王五','王五齣版社','2005-3-1',78.00,10,null)");
            stmt.executeBatch();
            
            PrintWriter out=resp.getWriter();
            out.println("success!");
            out.close();
        }
        catch(SQLException se)
        {
            se.printStackTrace();
        }
        finally
        {
            if(stmt!=null)
            {
                try
                {
                    stmt.close();
                }
                catch(SQLException se)
                {
                    se.printStackTrace();
                }
                stmt=null;
            }
            if(conn!=null)
            {
                try
                {
                    conn.close();
                }
                catch(SQLException se)
                {
                    se.printStackTrace();
                }
                conn=null;
            }
        }
    }
}
2、編譯CreateDBServlet.java產生org\sunxin\lesson\jsp\bookstore\CreateDBServlet.class檔案。將其剪下到classes檔案夾中。
3、部署Servlet
在%CATALINA_HOME%/conf/Catalina/localhost目錄下,配置運行目錄,建立ch08.xml檔案
ch08.xml
<Context path="/ch08" docBase="D:\JSPLesson\ch08" reloadable="true"/>

4、按Web應用程式的目錄階層,在F:\JSPLesson\ch08\src目錄下建立WEB-INF目錄,在WEB-INF目錄下建立classes目錄和web.xml檔案,編輯web.xml檔案。
Web.xml
<?xml version="1.0" encoding="gb2312"?>

<web-app 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"
    version="2.4">
   
    <servlet>
        <servlet-name>CreateDBServlet</servlet-name>
        <servlet-class>org.sunxin.lesson.jsp.bookstore.CreateDBServlet</servlet-class>
               <init-param>
                                           <param-name>driverClass</param-name>
                                           <param-value>com.mysql.jdbc.Driver</param-value>
                            </init-param>
                            <init-param>
                                    <param-name>url</param-name>
                                    <param-value>jdbc:mysql://localhost:3306/mysql</param-value>
                            </init-param>
                            <init-param>
                                    <param-name>user</param-name>
                                    <param-value>root</param-value>
                            </init-param>
                            <init-param>
                                    <param-name>password</param-name>
                                    <param-value>root</param-value>
                            </init-param>
    </servlet>
   
    <servlet-mapping>
        <servlet-name>CreateDBServlet</servlet-name>
        <url-pattern>/createdb</url-pattern>
    </servlet-mapping>
   
</web-app>

5、配置MySQL的JDBC驅動,從網站上下載JDBC驅動MySQLConnector/J,在解壓縮後的目錄中,找到名為mysql-connector-java-3.1.7-bin.jar的JAR包,放到%CATALINA_HOME%\common/lib目錄下。
6、啟動TOMCAT,啟動mysql,輸入http://localhost:8080/cho8/createdb

輸出success!表明創新資料庫和表已成功。
五、我所犯的錯誤
1、頁面出現以下提示
HTTP Status 404 - /ch08/createdb

type Status report
message /ch08/createdb
description The requested resource (/ch08/createdb) is not available.

Apache Tomcat/5.0.28
經檢查是ch08.xml檔案少了個引號。
2、啟動IE輸入地址後,頁面一片空白,什麼字也沒有。經檢查是因為我的mysql資料庫中已有bookstore資料庫,也已插入資料,所以頁面既沒有success!也沒有報錯。手動將已存在的bookstore資料庫刪除後,重啟Tomcat,啟動IE輸入地址後,出現正確結果“success!”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.