1. 程式人生 > >Java之servlet五 連線Mysql8.0資料庫

Java之servlet五 連線Mysql8.0資料庫

 環境

  •    windows系統(linux系統類似)
  •    JDK1.7以上

 依賴

 檔案

  • 資料庫指令碼檔案InitDemo.sql
  • servlet程式碼檔案HttpServletDemo2.java
  • 編譯servlet檔案compileDemo.bat
  • 資料庫指令碼檔案ClearDemo.sql

 步驟

  1. 啟動Mysql伺服器
  2. 進入Mysql伺服器後臺,執行InitDemo.sql
  3. 編寫HttpServletDemo2.java檔案
  4. 執行compileDemo.bat編譯HttpServletDemo2.java
  5. 進入瀏覽器驗證
  6. 清理資料庫執行ClearDemo.sql

 第一步 啟動Mysql伺服器

// 切換到mysql的執行目錄
>> cd <mysql的bin目錄>
// 啟動mysql伺服器
>> mysqld --console

 第二步 執行InitDemo.sql

// 另外開啟CMD,切換到mysql執行目錄
>> cd <mysql的bin目錄>
// 進入mysql後臺
>> mysql -u root -p
// 執行InitDemo.sql,注意路徑中\問題,使用標準路徑
mysql>> source <InitDemo.sql全路徑>

 InitDemo.sql檔案如下:

/*
	@說明:	建立testdb庫,再建立user表,插入幾條記錄
*/
CREATE DATABASE IF NOT EXISTS testdb;

USE testdb;

CREATE TABLE IF NOT EXISTS user(
	user_id 	INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
	user_name 	CHAR(64) UNIQUE,
	user_mail	VARCHAR(128) DEFAULT '-',
	nick_name	VARCHAR(128) DEFAULT 'love'
);

ALTER TABLE user AUTO_INCREMENT=1000000000;

INSERT INTO user(user_name,user_mail)
	VALUES('yiqiong','
[email protected]
'), ('erbai','[email protected]'), ('sansha','[email protected]');

 第三步 編寫HttpServletDemo2.java

package com.zhou.servlet;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

import com.mysql.cj.protocol.Resultset;
import java.sql.*;

public class HttpServletDemo2 extends HttpServlet{
	public void doGet(HttpServletRequest req, HttpServletResponse res)
		throws ServletException , IOException{
		String strMysqlDriver = "com.mysql.cj.jdbc.Driver";
		String strMysqlAddr   = "jdbc:mysql://localhost:3306/";
		String strMysqlParam  = "characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
		String strDbName      = "testdb";
		String strTableName   = "user";
		String strAccount     = "root";
		String strPassword    = "123456";
		
		String strMysqlUrl    = strMysqlAddr + strDbName;
		       strMysqlUrl   += "?";
		       strMysqlUrl   += strMysqlParam;

		try{
			Class.forName(strMysqlDriver);
			Connection con = DriverManager.getConnection(strMysqlUrl,strAccount,strPassword);
			if(!con.isClosed()){
			res.getWriter().println("Succeeded connecting to the Database!");
			}
			Statement statement 	= con.createStatement();
			String 	  strSelectSql  = "select * from " + strTableName + ";";
			ResultSet selectResult  = statement.executeQuery(strSelectSql);

			while(selectResult.next()){
			res.getWriter().println(selectResult.getString(1) + "\t"+ selectResult.getString(2));
			}
			selectResult.close();
			con.close();
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}catch(SQLException e){
			e.printStackTrace();
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			 res.getWriter().println("successfull !");
		}
	}
	public void doPost(HttpServletRequest req, HttpServletResponse res)
		throws ServletException, IOException{
			doGet(req,res);
		}
}

 第四步 執行compileDemo.bat

 首先,編寫compileDemo.bat,將cd後面的內容替換成存放HttpServletDemo2.java的目錄,參考如下;

@echo off
cd C:\Users\ws\Desktop\javaservlet
javac -classpath ./servlet-api.jar;./mysql-connector-java-8.0.12.jar -d . HttpServletDemo2.java
pause

其次, 將編譯依賴的servlet-api.jar和mysql-connector-java-8.0.12.jar放在與java檔案同一目錄下;

(servlet-api.jar從tomcat根目錄下的lib目錄中取,mysql-connector-java-8.0.12.jar從mysql官網下載)

 再次,雙擊compileDemo.bat檔案,將生成的com目錄整體放到你釋出的webapp的WEB-INF的classes目錄下;

 最後,配置web.xml,參考配置如下

<servlet>
    <servlet-name>HttpServletDemo2</servlet-name>
    <servlet-class>com.zhou.servlet.HttpServletDemo2</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HttpServletDemo2</servlet-name>
    <url-pattern>/HttpServletDemo2</url-pattern>
</servlet-mapping>

 第五步 驗證(此處webapp的名稱為ServletTest)

 http://localhost:8080/ServletTest/HttpServletDemo2

第六步 清理

 執行ClearDemo.sql(更執行InitDemo.sql類似)

USE testdb;
-- 刪除user表
DROP TABLE user;
-- 刪除testdb庫
DROP DATABASE testdb;

問題