JSP連接MySQL數(shù)據(jù)庫(kù)詳細(xì)步驟
動(dòng)態(tài)Web程序運(yùn)行在Web容器之中,利用Web容器可以使用JDBC技術(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的CRUD操作,將數(shù)據(jù)表中的數(shù)據(jù)取出并結(jié)合JSP動(dòng)態(tài)生成HTML頁(yè)面進(jìn)行顯示。
JSP中的MySQL驅(qū)動(dòng)程序配置
本文開(kāi)發(fā)使用的是MySQL數(shù)據(jù)庫(kù),如果要想使用MySQL數(shù)據(jù)庫(kù),則一定要在Tomcat中進(jìn)行MySQL驅(qū)動(dòng)程序的配置。這個(gè)配置可以考慮將獲取到的MySQL的程序包 jar包 保存到你本地的Tomcat文件夾中的 lib 文件目錄中。
在Tomcat或者是項(xiàng)目之中所有的XML文件配置之后必須重新啟動(dòng)Tomcat才可以實(shí)現(xiàn)新的配置項(xiàng)加載,如果要在Tomcat中增加新的程序包,也必須重新啟動(dòng)后才能加載。
注意:
你可以下載官網(wǎng)提供的 jar 包:
MySQL 5 版本:mysql-connector-java-5.1.0-bin.jar
MySQL 8 版本:mysql-connector-java-8.0.19.jar
下載后把 mysql-connector-java-<對(duì)應(yīng)版本>-bin.jar 拷貝到 tomcat 下 lib 目錄。
MySQL 8.0 以上版本的數(shù)據(jù)庫(kù)連接有所不同:
- com.mysql.jdbc.Driver 更換為 com.mysql.cj.jdbc.Driver。
- MySQL 8.0 以上版本不需要建立 SSL 連接的,需要顯示關(guān)閉。
- 最后還需要設(shè)置 CST。
MySQL中創(chuàng)建表
既然要進(jìn)行數(shù)據(jù)的開(kāi)發(fā)操作,則首先一定要進(jìn)行數(shù)據(jù)庫(kù)的創(chuàng)建,本次創(chuàng)建一張手機(jī)信息表,并且配置好相應(yīng)的測(cè)試數(shù)據(jù)。
范例:創(chuàng)建手機(jī)信息表
CREATE TABLE phone( `pid` INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `brand` VARCHAR(20) NOT NULL, `type` VARCHAR(20) NOT NULL, `birthday` DATE NOT NULL, `price` DOUBLE NOT NULL, `color` VARCHAR(20) NOT NULL, `card` VARCHAR(20) NOT NULL UNIQUE )
插入一些數(shù)據(jù):
INSERT INTO phone VALUES(1001,'華為','P30','2018-10-10',3500,'白色','HB1214512412'); INSERT INTO phone VALUES(1002,'小米','10Plus','2020-02-02',3222,'藍(lán)色','XM5765424335'); INSERT INTO phone VALUES(1003,'榮耀','30Pro','2020-08-22',2888,'白色','RY4815645687');
數(shù)據(jù)表顯示如下:
JSP中SELECT操作
如果要想使用JDBC實(shí)現(xiàn)數(shù)據(jù)表中的數(shù)據(jù)查詢,那么肯定要通過(guò)PreparedStatement接口實(shí)現(xiàn)查詢操作,本次僅僅是實(shí)現(xiàn)查詢?nèi)繑?shù)據(jù)的需要。
范例:查詢數(shù)據(jù)表所有數(shù)據(jù)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- 定義頁(yè)面中文顯示編碼 --%> <%@ page import="java.sql.*" %> <%-- 導(dǎo)入開(kāi)發(fā)包 --%> <html> <head> <title>$Title$</title> </head> <body> <%! public static final String DBDRIVER="com.mysql.jdbc.Driver";//驅(qū)動(dòng)程序 public static final String DBURL="jdbc:mysql://localhost:3306/java221804";//連接地址 public static final String USER="root";//用戶名 public static final String PASSWORD="huanghuang";//密碼 %> <% String sql="select * from phone;";//SQL查詢語(yǔ)句 Class.forName(DBDRIVER);//加載驅(qū)動(dòng)程序 Connection conn=DriverManager.getConnection(DBURL,USER,PASSWORD);//連接數(shù)據(jù)庫(kù) PreparedStatement pstmt=conn.prepareStatement(sql);//操作PreparedStatement對(duì)象 ResultSet rs=pstmt.executeQuery();//執(zhí)行查詢,并存入ResultSet結(jié)果集中 %> <table border="1" width="100%"> <thead><tr><td>編號(hào)</td><td>品牌</td><td>型號(hào)</td><td>出廠日期</td><td>價(jià)格</td><td>顏色</td><td>手機(jī)編碼</td></tr></thead> <tbody> <% while (rs.next()){//從ResultSet結(jié)果集中循環(huán)獲取數(shù)據(jù) int pid=rs.getInt(1); String brand=rs.getString(2); String type=rs.getString(3); Date birthday=rs.getDate(4); double price=rs.getDouble(5); String color=rs.getString(6); String card=rs.getString(7); %> <tr> <td><%=pid%></td> <td><%=brand%></td> <td><%=type%></td> <td><%=birthday%></td> <td><%=price%></td> <td><%=color%></td> <td><%=card%></td> </tr> <% } %> </tbody> </table> <% //關(guān)閉連接,如果不關(guān)閉就再也關(guān)閉不了,除非重新啟動(dòng)Tomcat conn.close(); %> </body> </html>
本程序在JSP中實(shí)現(xiàn)了MySQL數(shù)據(jù)庫(kù)的鏈接,隨后利用PreparedStatement語(yǔ)句實(shí)現(xiàn)了 phone 表的查詢,所有查詢的記錄將利用循環(huán)拼湊為HTML表格元素進(jìn)行展示。
執(zhí)行結(jié)果顯示如下:
實(shí)際上看到以上程序代碼執(zhí)行后,就可以非常清楚的發(fā)現(xiàn),整個(gè)JavaWEB開(kāi)發(fā)和Java的開(kāi)發(fā)基本上是沒(méi)有啥太大去別的,都是編寫(xiě)Java代碼,只要你Java基本功扎實(shí),那么這種程序?qū)嶋H上編寫(xiě)起來(lái)就非常容易了。
JavaBean 定義與使用
為了提高Java程序代碼的可重用性,往往會(huì)將一些重復(fù)執(zhí)行的代碼封裝在類結(jié)構(gòu)之中,而這樣的類也被稱為JavaBean。在IDEA中的Web開(kāi)發(fā)中,創(chuàng)建此封裝類的位置結(jié)構(gòu)圖如下:
第一步:創(chuàng)建db.properties文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/java221804 username=root password=huanghuang
第二步:創(chuàng)建數(shù)據(jù)庫(kù)封裝類——DBUtils類
package cn.lqgx.insert; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class DBUtils { private static final Properties PROPERTIES =new Properties(); static{ InputStream is = DBUtils.class.getResourceAsStream("/db.properties"); try { PROPERTIES.load(is); //1、注冊(cè)驅(qū)動(dòng) Class.forName(PROPERTIES.getProperty("driver")); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 2、獲取連接方法 public static Connection getConnection(){ Connection connection = null; //2、獲取連接對(duì)象 try { connection=DriverManager.getConnection(PROPERTIES.getProperty("url"), PROPERTIES.getProperty("username"), PROPERTIES.getProperty("password")); } catch (SQLException e) { e.printStackTrace(); } return connection; } // 3、釋放資源方法 public static void closeAll(ResultSet resultSet, Statement statement, Connection connection) { try { if (resultSet != null) { resultSet.close(); } if(statement!=null){ statement.close(); } if(connection!=null){ connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
最后通過(guò)JSP調(diào)用JavaBean數(shù)據(jù)庫(kù)操作封裝類
范例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- 定義頁(yè)面中文顯示編碼 --%> <%@ page import="java.sql.*" %> <%-- 導(dǎo)入開(kāi)發(fā)包 --%> <%@ page import="cn.lqgx.insert.DBUtils" %> <%-- 導(dǎo)入自定義的JavaBean數(shù)據(jù)庫(kù)操作封裝類 --%> <html> <head> <title>$Title$</title> </head> <body> <% String sql = "select * from phone;";//SQL查詢語(yǔ)句 Connection conn = DBUtils.getConnection();//連接數(shù)據(jù)庫(kù) PreparedStatement pstmt1 = conn.prepareStatement(sql);//操作PreparedStatement對(duì)象 ResultSet rs = pstmt1.executeQuery();//執(zhí)行查詢,并存入ResultSet結(jié)果集中 %> <table border="1" width="100%"> <thead> <tr> <td>編號(hào)</td> <td>品牌</td> <td>型號(hào)</td> <td>出廠日期</td> <td>價(jià)格</td> <td>顏色</td> <td>手機(jī)編碼</td> </tr> </thead> <tbody> <% int pid = rs.getInt(1); String brand = rs.getString(2); String type = rs.getString(3); Date birthday = rs.getDate(4); double price = rs.getDouble(5); String color = rs.getString(6); String card = rs.getString(7); %> <tr> <td><%=pid%> </td> <td><%=brand%> </td> <td><%=type%> </td> <td><%=birthday%> </td> <td><%=price%> </td> <td><%=color%> </td> <td><%=card%> </td> </tr> <% } %> </tbody> </table> <% //關(guān)閉連接,如果不關(guān)閉就再也關(guān)閉不了,除非重新啟動(dòng)Tomcat conn.close(); %> </body> </html>
程序執(zhí)行結(jié)果如下:
本程序直接通過(guò)開(kāi)發(fā)的DBUTils工具類獲取了數(shù)據(jù)庫(kù)的連接對(duì)象,這樣就相當(dāng)于將所有的數(shù)據(jù)庫(kù)連接與關(guān)閉處理封裝在了一個(gè)JavaBean中,以實(shí)現(xiàn)代碼的可重用性,在調(diào)用時(shí)只需要通過(guò)page指令導(dǎo)入相關(guān)的程序類即可實(shí)現(xiàn)類中方法的調(diào)用。
到此這篇關(guān)于JSP連接MySQL數(shù)據(jù)庫(kù)詳細(xì)步驟的文章就介紹到這了,更多相關(guān)JSP連接MySQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyEclipse連接MySQL數(shù)據(jù)庫(kù)報(bào)錯(cuò)解決辦法
我們現(xiàn)在一般網(wǎng)站都是利用的MySQL數(shù)據(jù)庫(kù)搭建網(wǎng)站的,但是在網(wǎng)上看到很多網(wǎng)友吐槽數(shù)據(jù)庫(kù)連接不上的問(wèn)題,現(xiàn)在我就結(jié)合相關(guān)資料向提出一些我個(gè)人的見(jiàn)解,希望對(duì)大家解決問(wèn)題有幫助2014-01-01MySQL MyISAM默認(rèn)存儲(chǔ)引擎實(shí)現(xiàn)原理
這篇文章主要介紹了MySQL MyISAM默認(rèn)存儲(chǔ)引擎實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Linux安裝Mysql8.0.20并配置主從復(fù)制(一主一從,雙主雙從)
本文主要介紹了Linux安裝Mysql8.0.20并配置主從復(fù)制,包含一主一從和雙主雙從,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06idea 設(shè)置MySql主鍵的實(shí)現(xiàn)步驟
在IDE開(kāi)發(fā)工具中也是可以使用mysql的,本文主要介紹了idea 設(shè)置MySql主鍵的實(shí)現(xiàn)步驟,文中通過(guò)圖文的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03mysql 8.0.11 macos10.13安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11 macos10.13安裝配置方法圖文教程,mysql數(shù)據(jù)庫(kù)安裝及配置環(huán)境變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07MySQL中create table as 與like的區(qū)別分析
這篇文章主要介紹了MySQL中create table as 與like的區(qū)別,結(jié)合實(shí)例分析了二者在使用中的具體區(qū)別與主要用途,需要的朋友可以參考下2016-01-01mysql中插入隨機(jī)字符串?dāng)?shù)據(jù)及常見(jiàn)問(wèn)題說(shuō)明
這篇文章主要介紹了mysql中插入隨機(jī)字符串?dāng)?shù)據(jù)及常見(jiàn)問(wèn)題說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10