English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Accès à la base de données Servlet

Ce tutoriel suppose que vous avez déjà compris le fonctionnement des applications JDBC.

Attention :

Les adresses de téléchargement des jar des différentes versions mysql :https://downloads.mysql.com/archives/c-j/

Dans un projet java, il suffit d'inclure mysql-connector-java-5.1.39-bin.jar peut exécuter des projets java.

Mais dans le projet web Eclipse, lorsque vous exécutez Class.forName("com.mysql.jdbc.Driver");, il ne cherche pas le pilote. Par conséquent, dans cet exemple, nous devons inclure mysql-connector-java-5.1.39-Copiez le fichier bin.jar dans le répertoire lib de tomcat.

Commençons par les concepts de base, créons un tableau simple et insérons quelques enregistrements dans le tableau.

Créer des données de test

Créons ensuite un w3La base de données codebox, et créez le tableau de données websites, la structure du tableau est la suivante :

CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT 'Nom du site',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Classement Alexa',
  `country` char(10) NOT NULL DEFAULT '' COMMENT 'Pays',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

Insérer quelques données :

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', ''1', 'USA'), ('2', 'Taobao', 'https://www.taobao.com/', ''13', 'CN'), ('3', 'Réseau de tutos de base', 'http://fr.oldtoolbag.com5892', ''4', '微博', 'http://weibo.com/', ''20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', ''3', 'USA');

Les tables de données s'affichent comme suit :


accéder à la base de données

L'exemple suivant montre comment accéder à w3codebox base de données.

package com.w;3codebox.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet 实现类 DatabaseAccess
 */
@WebServlet("/DatabaseAccess")
public class DatabaseAccess extends HttpServlet {
    private static final long serialVersionUID = 1L;
    // JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/w3codebox";
    
    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "123456"; 
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DatabaseAccess() {
        super();
        // TODO Auto-generated constructor stub
    }
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Connection conn = null;
        Statement stmt = null;
        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String title = "Servlet 数据库实例 - 基础教程(oldtoolbag.com)";
        String docType = "<!DOCTYPE html>\n";
        out.println(docType) +
        "<html>\n" +
        "<head><title>" + title + "</title></head>\n" +
        "<body bgcolor="#f0f0f0">\n" +
        "<h1 align="center">" + title + "</h1>\n");
        try{
            // 注册 JDBC 驱动器
            Class.forName("com.mysql.jdbc.Driver");
            
            // 打开一个连接
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            // 执行 SQL 查询
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);
            // 展开结果集数据库
            while(rs.next()){
                // 通过字段检索
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");
    
                // 输出数据
                out.println("ID: ", + id);
                out.println(", 站点名称: ", + name);
                out.println(", 站点 URL: ", + url);
                out.println("<br />);
            }
            out.println("</body></html>");
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        } catch(SQLException se) {
            // 处理 JDBC 错误
            se.printStackTrace();
        } catch(Exception e) {
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 最后是用于关闭资源的块
            try{
                if(stmt!=null)
                stmt.close();
            }catch(SQLException se2){
            }
            try{
                if(conn!=null)
                conn.close();
            catch(SQLException se){
                se.printStackTrace();
            }
        }
       
    }
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}

Maintenant, compilons le Servlet suivant et créons l'entrée suivante dans le fichier web.xml :

....
    <servlet>
        <servlet-nom>DatabaseAccess</servlet-nom>
        <servlet-class>com.w3codebox.test.DatabaseAccess</servlet-class>
    </servlet>
    <servlet-cartographie>
        <servlet-nom>DatabaseAccess</servlet-nom>
        <url-pattern>/TomcatTest/DatabaseAccess</url-pattern>
    </servlet-cartographie>
....

Appelons maintenant ce Servlet, entrez le lien : http://localhost:8080/TomcatTest/DatabaseAccess, le résultat de la réponse suivante sera affiché :