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

Servlet-Datenbankzugriff

Diese Anleitung Assumes, dass Sie bereits die Funktionsweise von JDBC-Anwendungen verstehen.

Hinweis:

Downloadadressen für verschiedene Versionen von mysql jar-Paketen:https://downloads.mysql.com/archives/c-j/

In java-Projekten müssen Sie nur mysql-connector-java-5.1.39-bin.jar kann java-Projekte ausführen.

Aber im Eclipse Web-Projekt wird bei der Ausführung von Class.forName("com.mysql.jdbc.Driver"); nicht nach dem Treiber gesucht. Daher müssen wir in diesem Beispiel mysql-connector-java-5.1.39-bin.jar kopieren Sie in das lib-Verzeichnis von Tomcat.

Beginnen wir mit den grundlegenden Konzepten und erstellen wir einen einfachen Tisch und einige Einträge in diesem Tisch.

Erstellen Sie Testdaten

Erstellen wir in MySQL3codebox Datenbank und erstellen Sie die websites-Datentabelle, die Struktur ist wie folgt:

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

Einige Daten einfügen:

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', ''1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', ''13', 'CN'), ('3', 'Grundlagen-Tutorial-Website', 'http://de.oldtoolbag.com5892', ''4', '微博', 'http://weibo.com/', ''20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', ''3', 'USA');

Die Datenbanktabelle wird wie folgt angezeigt:


Datenbank zugreifen

Der folgende Beispiel zeigt, wie Servlets auf w3codebox Datenbank.

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 Implementierungsklasse DatabaseAccess
 */
@WebServlet("/DatabaseAccess")
public class DatabaseAccess extends HttpServlet {
    private static final long serialVersionUID = 1L;
    // JDBC-Treibername und Datenbank-URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/w3codebox";
    
    // Der Benutzername und das Passwort der Datenbank müssen gemäß Ihren Einstellungen eingestellt werden
    static final String USER = "root";
    static final String PASS = "123456"; 
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DatabaseAccess() {
        super();
        // TODO Auto-erzeugter Konstruktorstummel
    }
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Connection conn = null;
        Statement stmt = null;
        // Antwortinhaltstyp festlegen
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String title = "Servlet Datenbankbeispiel - Grundlegende Anleitung(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 />\n");
            }
            out.println("</body></html>");
            // 完成后关闭
            rs.close();
            catch(SQLException se
            conn.close();
        }
            // 处理 JDBC 错误
            se.printStackTrace();
        处理 Class.forName 错误
            // e.printStackTrace();
            }finally{
        最后是用于关闭资源的块
            // if(stmt!=null)
            try{
                stmt.close();
                catch(SQLException se
            }2{
            }
            try{
                if(conn!=null)
                conn.close();
            catch(SQLException se){
                se.printStackTrace();
            }
        }
       
    }
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    geschützt void doPost(HttpServletRequest request, HttpServletResponse response) würde ServletException, IOException {
        // TODO Auto-generierter Methodenstub
        doGet(request, response);
    }
}

Lassen Sie uns nun den obigen Servlet kompilieren und den folgenden Eintrag im Datei web.xml erstellen:

....
    <servlet>
        <servlet-name>DatabaseAccess</servlet-name>
        <servlet-class>com.w3codebox.test.DatabaseAccess</servlet-class>
    </servlet>
    <servlet-zuordnen>
        <servlet-name>DatabaseAccess</servlet-name>
        <url-muster>/TomcatTest/DatabaseAccess</url-muster>
    </servlet-zuordnen>
....

Rufen Sie jetzt diesen Servlet auf, geben Sie die Verknüpfung ein:http://localhost:8080/TomcatTest/DatabaseAccess,zeigt folgende Antwort an: