• 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!”

  • 相关阅读:
    CMSIS_OS中osMailPut 和 osMessagePut 的问题
    网络:W5500抓包TCP segment of a reassembled PDU
    网络:W5500 UDP数据包格式注意事项
    笔记:把编译时间加入到目标文件
    笔记:git和码云
    笔记:git基本操作
    FreeRtos堆栈检测应用
    一个由自增运算符以及C语法顺序细节引起的bug
    高级文件操作
    linux 权限相关
  • 原文地址:https://www.cnblogs.com/pony/p/802641.html
Copyright © 2020-2023  润新知