zoukankan      html  css  js  c++  java
  • JDK+Tomcat+Servlet连接Mysql数据库

    经过几天的调试、查阅资料,终于将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!”

  • 相关阅读:
    PAT (Advanced Level) 1114. Family Property (25)
    PAT (Advanced Level) 1113. Integer Set Partition (25)
    PAT (Advanced Level) 1112. Stucked Keyboard (20)
    PAT (Advanced Level) 1111. Online Map (30)
    PAT (Advanced Level) 1110. Complete Binary Tree (25)
    PAT (Advanced Level) 1109. Group Photo (25)
    PAT (Advanced Level) 1108. Finding Average (20)
    PAT (Advanced Level) 1107. Social Clusters (30)
    PAT (Advanced Level) 1106. Lowest Price in Supply Chain (25)
    PAT (Advanced Level) 1105. Spiral Matrix (25)
  • 原文地址:https://www.cnblogs.com/pony/p/802641.html
Copyright © 2011-2022 走看看