Java之servlet五 連線Mysql8.0資料庫
阿新 • • 發佈:2018-12-16
環境
- windows系統(linux系統類似)
- JDK1.7以上
依賴
檔案
- 資料庫指令碼檔案InitDemo.sql
- servlet程式碼檔案HttpServletDemo2.java
- 編譯servlet檔案compileDemo.bat
- 資料庫指令碼檔案ClearDemo.sql
步驟
- 啟動Mysql伺服器
- 進入Mysql伺服器後臺,執行InitDemo.sql
- 編寫HttpServletDemo2.java檔案
- 執行compileDemo.bat編譯HttpServletDemo2.java
- 進入瀏覽器驗證
- 清理資料庫執行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;
問題