Latest web development tutorials

Servlets Datenbankzugriff

Dieses Tutorial geht davon aus, dass Sie die JDBC-Anwendung kennen funktioniert. Bevor Sie lernen , Servlets Zugriff auf die Datenbank zu starten, besuchen Sie bitte die Java - MySQL - Verbindung die zugehörigen Treiber zu installieren und zu konfigurieren.

Hinweis:

Jar Paket , das Sie die Website herunterladen können bietet: mysql-connector-java-5.1.39-bin.jar

In Java-Projekt, müssen wir nur mysql-connector-java-5.1.39-bin.jar kann laufen in Eclipse Java-Projekt vorzustellen.

Aber in der Eclipse-Web-Projekt, wenn wir Class.forName ( "om.mysql.jdbc.Driver") ausführen, nicht finden werde beim Fahren. So in diesem Fall müssen wir tomcat lib Verzeichnis kopiert-connector-java-5.1.39-bin.jar MySQL.

Vom Grundkonzept mit zu beginnen, lassen Sie uns eine einfache Tabelle zu erstellen, und ein paar Datensätze in der Tabelle erstellen.


Erstellen von Testdaten

Als Nächstes erstellen wir in MySQL-Datenbank, erstellen Websites und Datentabelle w3big, ist die Tabellenstruktur wie folgt:

CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
  `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

Legen Sie einige Daten:

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '本教程', 'http://www.w3big.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

Datentabelle unten dargestellt:



Access-Datenbank

Das folgende Beispiel zeigt, wie Servlets Zugriff w3big Datenbank zu verwenden.

package com.w3big.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 implementation class 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/w3big";
	
	// 数据库的用户名与密码,需要根据自己的设置
	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 Mysql 测试 - 本教程";
		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);
	}
}

Nun wollen wir die oben Servlet kompilieren, und erstellen Sie den folgenden Eintrag in der Datei web.xml:

....
	<servlet>
		<servlet-name>DatabaseAccess</servlet-name>
		<servlet-class>com.w3big.test.DatabaseAccess</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>DatabaseAccess</servlet-name>
		<url-pattern>/TomcatTest/DatabaseAccess</url-pattern>
	</servlet-mapping>
....

Nun Servlets aufzurufen, geben Sie den Link: http: // localhost: 8080 / TomcatTest / Database, zeigen die Ergebnisse, die folgende Antwort: