测试的那些事

Servlet+JDBC 例子

上一篇 / 下一篇  2012-03-01 23:14:28 / 个人分类:JAVA

Step1:编写CreateDBServlet

package org.sunxin.ch04.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

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

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 ServletException("加载数据库失败!");
   }
}

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("drop database if exists bookstore");
   
    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))");
   
    stmt.addBatch("insert into bookinfo values(1, 'Java Web 开发详解',   '孙鑫', '电子工业出版社', '2004-4-20', 99.00, 35, null)");
    stmt.addBatch("insert into bookinfo values(2, 'Struts 2 深入详解',   '孙鑫', '电子工业出版社', '2008-6-15', 79.00, 20, null)");
    stmt.addBatch("insert into bookinfo values(3, 'Servlet/JSP深入详解', '孙鑫', '电子工业出版社', '2008-7-1' , 79.00, 10, null)");
    stmt.executeBatch();
     
    resp.setContentType("text/html;charset=GBK");
    PrintWriter ut = resp.getWriter();
    out.println("数据库创建成功!");
    out.close();   
   }
   catch(SQLException se)
   {
    throw new ServletException(se);
   }
   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;
    }
   }
}
}

放在D:\servlet\ch04\src中。

Step2 编译

javac -d ..\classes CreateDBServlet.java

Step3 部署 web.xml

<?xml version="1.0" encoding="gb2312"?>
<web-app>

<servlet>
   <servlet-name>CreateDBServlet</servlet-name>
   <servlet-class>
    org.sunxin.ch04.servlet.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</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>admin</param-value>
   </init-param>
</servlet>



<servlet-mapping>
   <servlet-name>CreateDBServlet</servlet-name>
   <url-pattern>/createdb</url-pattern>
</servlet-mapping>

</web-app>

Step4 配置Web应用

在%CATALINA_HOME%\conf\Catalina\localhost目录下建立ch04.xml

<Context docBase="D:\servlet\ch04" reloadable="true">

Step5:配置JDBC驱动

在d:\servlet\ch04\WEB_INF下建立目录lib

把驱动放在其中。


相关阅读:

TAG: Servlet

 

评分:0

我来说两句

Open Toolbar