【java实训课】web网页相关知识点总结
文章目錄
- Mysql 基礎(chǔ)操作
- 操作指令
- 數(shù)據(jù)庫實驗
- DAO 模式
- DAO 封裝的增刪改查代碼
- DAO封裝的增改查測試代碼
- jsp
- java Web
- 創(chuàng)建一個新的工程文件
- IDEA
- 配置 Web 項目環(huán)境
- 環(huán)境 : IDEA+tomcat
- 在當(dāng)前的文件過程下配置web
- 添加tomcat 本地連接
- 配置web.xml 文件
- 總結(jié):
Mysql 基礎(chǔ)操作
使用方法:
方式一:
SQL:結(jié)構(gòu)化查詢語言
DDL(定義),DML(操作),DQL(查詢),DCL(控制)
mysql:
操作指令
連接數(shù)據(jù)庫
// 進入mysql mysql -u root -p// 顯示數(shù)據(jù)庫 show databases; show tables;//進入某個數(shù)據(jù)表 use dataname;// 當(dāng)前數(shù)據(jù)庫顯示其他數(shù)據(jù)表 show tables from mysql; 從mysql 顯示mysql// 顯示當(dāng)前是在哪個數(shù)據(jù)量 show database(); //插入數(shù)據(jù)INSRERT INTO (字段名) values (插入數(shù)據(jù)值); //學(xué)習(xí)DAO模式 增刪改查web 的學(xué)習(xí) 怎么封裝jdbc; // 更新表內(nèi)容 update news_users set uname='jucw' where uname='zcw'; // 刪除 delete from news_users where uname = 'jucw'; delete from 表名 where 字段匹配;- 使用where需要查找多個的時候,使用IN來匹配多個
數(shù)據(jù)庫實驗
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;public class jdbc {public static void main(String[] args) {Connection con = null;ResultSet rs = null;try {// 1. 引入驅(qū)動String sql = "select * from news_users where usid = 10";Class.forName("com.mysql.cj.jdbc.Driver");// 訪問驅(qū)動管理程序con = DriverManager.getConnection("jdbc:mysql://localhost/db_news?useSSL=FALSE&serverTimezone=Asia/Shanghai","root","123456");Statement stmt = con.createStatement();rs = stmt.executeQuery(sql); // 這里返回了第一條記錄數(shù)據(jù)while(rs.next()) //這里rs 已經(jīng)是第二條數(shù)據(jù),{// 使用游標(biāo)獲取當(dāng)前行,每次往下移動//獲取當(dāng)前行的每一列數(shù)據(jù)int id = rs.getInt("usid");String uname = rs.getString("uname");String pwd = rs.getString("upwd");System.out.println(id+uname+pwd);}System.out.println("\t連接成功");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}try{ // 插入數(shù)據(jù)System.out.println("\t插入數(shù)據(jù) ");// 1. 創(chuàng)建執(zhí)行語句String sql1 = "insert into news_users(uname, upwd) values('zcw', '123456')";// 2. 聲明用于執(zhí)行數(shù)據(jù)庫語句Statement stmt = con.createStatement();// statement 來執(zhí)行數(shù)據(jù)庫// 3. 將數(shù)據(jù)執(zhí)行插入到數(shù)據(jù)庫stmt.executeUpdate(sql1);System.out.println("\t數(shù)據(jù)更新成功+'zcw', '123456'!!!");}catch (Exception e){e.printStackTrace();}try{ // 插入數(shù)據(jù)System.out.println("\t統(tǒng)計數(shù)據(jù): ");// 1. 創(chuàng)建執(zhí)行語句String sql1 = "select COUNT(*) from news_users";// 2. 聲明用于執(zhí)行數(shù)據(jù)庫語句Statement stmt = con.createStatement();// statement 來執(zhí)行數(shù)據(jù)庫// 3. 將數(shù)據(jù)執(zhí)行插入到數(shù)據(jù)庫rs = stmt.executeQuery(sql1);rs.next();int c = rs.getInt(1);System.out.println("\tcount:"+c);}catch (Exception e){e.printStackTrace();}try{ // 插入數(shù)據(jù)System.out.println("\t統(tǒng)計數(shù)據(jù): ");// 1. 創(chuàng)建執(zhí)行語句String sql1 = "DELETE FROM news_users where usid = 16";// 2. 聲明用于執(zhí)行數(shù)據(jù)庫語句Statement stmt = con.createStatement();// statement 來執(zhí)行數(shù)據(jù)庫// 3. 將數(shù)據(jù)執(zhí)行插入到數(shù)據(jù)庫int row = stmt.executeUpdate(sql1);System.out.println("\t刪除了:"+row);System.out.println();}catch (Exception e){e.printStackTrace();}} }DAO 模式
-
Data Access Object 數(shù)據(jù)訪問對象,數(shù)據(jù)訪問層,持久層
-
orm 框架:object relational mapping 對象關(guān)系映射
作用: 程序怎么操作數(shù)據(jù)庫表的記錄, 程序中設(shè)計實體模型,看出是數(shù)據(jù)庫表在程序中的一種體現(xiàn)
orm 映射內(nèi)容:
-
通用DAO
打開數(shù)據(jù)庫的連接
關(guān)閉數(shù)據(jù)庫的連接
-
DAO的實現(xiàn)
表 ----- 用戶的實體類
-
preparedStatement :預(yù)處理的接口
- 通過占位符設(shè)參數(shù)
-
定義函數(shù)
-
查找用戶
String sql = "select * from 表名 where usid=?"; //傳進來的參數(shù)是id#使用prepareStatement 可以預(yù)編譯sql #設(shè)置占位符的參數(shù) pre.setInt(1,id) # 這里的占位符跟format 是一樣的,指定的位置是第幾個參數(shù) # 開始執(zhí)行參數(shù) rs = pre.executeQuery() # 這里不同于Statement 不用傳進來sql使用try catch finally 最終在finally關(guān)閉連接 -
添加用戶
# 需要傳進來兩個參數(shù) 用戶名和密碼 String sql = "Insert into 表名(uname, upwd) value (?,?)" # 在這里占位# 預(yù)編譯sql # 設(shè)置占位符的值 pre.setString(1, user.getUsername()); #傳進來數(shù)據(jù) pre.setString(2, user.getUserpwd()); # 傳進來密碼 -
修改用戶數(shù)據(jù)
# 將所有數(shù)據(jù)重新寫入一邊 #一行設(shè)置 -
刪除數(shù)據(jù)
# 根據(jù)指定的id把用戶數(shù)據(jù)刪除 pre.setInt(1,id); # 將sql 語句的值補充完整
-
?
-
測試的時候:
-
添加用戶
- 創(chuàng)建新的用戶類,設(shè)置新的用戶信息,將新的用戶信息傳到添加函數(shù)里面去;
-
-
刪除用戶
-
根據(jù)指定的id找到指定的用戶
-
將指定的用戶添加到刪除函數(shù)里面,返回刪除的行數(shù)
-
修改用戶數(shù)據(jù)
- 根據(jù)id查找到指定的用戶
- 將找到的用戶添加到修改函數(shù)里,返回刪除的行數(shù)
-
查找用戶
- 根據(jù)指定的id查找的用戶
- 提取用戶的字段顯示
DAO 封裝的增刪改查代碼
import javax.jws.soap.SOAPBinding; import java.sql.*; import java.util.ArrayList; import java.util.List;public class UserDao extends BaseDao { // 繼承ResultSet rs = null;public List<entry.Users> findAllUsers() throws SQLException {// 查詢所有用戶String sql = "select * from news_users";Connection con = this.getConnection();Statement stamt = null;ResultSet rs = null;List<entry.Users> list = new ArrayList<>();stamt = con.createStatement();rs = stamt.executeQuery(sql);while (rs.next()){entry.Users user = new entry.Users();user.setId(rs.getInt("usid"));user.setUsername(rs.getString("uname"));user.setPassword(rs.getString("upwd"));list.add(user);}return list;}public entry.Users findUsersById(int id) {String sql = "SELECT * FROM news_users WHERE usid=?"; // 傳進來一個id 返回一個用戶Connection con = this.getConnection();PreparedStatement pstmt = null;ResultSet rs = null;entry.Users user = null;try {pstmt = con.prepareStatement(sql); //預(yù)編譯sql//設(shè)置占位符參數(shù)pstmt.setInt(1, id);rs = pstmt.executeQuery();if(rs.next()) { //移動數(shù)據(jù)庫游標(biāo) ,往下移一行//獲取當(dāng)前行的每一列的數(shù)據(jù)user = new entry.Users();user.setId(rs.getInt("usid"));user.setUsername(rs.getString("uname"));user.setPassword(rs.getString("upwd"));}} catch (SQLException e) {e.printStackTrace();} finally {this.closeDB(con, pstmt, rs);}return user;}/*** 添加用戶* @param user 用戶對象的載體* @return 返回影響行數(shù)*/public int addUser(entry.Users user) { // 返回值是intString sql = "INSERT INTO news_users(uname,upwd) VALUES(?,?)";Connection con = this.getConnection();PreparedStatement pstmt = null;int row = 0;try {pstmt = con.prepareStatement(sql); //預(yù)編譯sql 使用占位符//設(shè)置占位符參數(shù)pstmt.setString(1, user.getUsername()); // 用戶名在第一位pstmt.setString(2, user.getPassword()); // 密碼在第二位row = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally {this.closeDB(con, pstmt, null);}return row;}/*** 修改用戶* @param user 用戶對象的載體* @return 返回影響行數(shù)*/public int updateUser(entry.Users user) {String sql = "UPDATE news_users SET uname=?,upwd=? WHERE usid=?";Connection con = this.getConnection();PreparedStatement pstmt = null;int row = 0;try {pstmt = con.prepareStatement(sql); //預(yù)編譯sql // 給預(yù)編譯占位符設(shè)置初始值//設(shè)置占位符參數(shù)pstmt.setString(1, user.getUsername());pstmt.setString(2, user.getPassword());pstmt.setInt(3, user.getId());row = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally {this.closeDB(con, pstmt, null);}return row;}public int deleteUser(int id) {String sql = "DELETE FROM news_users WHERE usid=?";Connection con = this.getConnection();PreparedStatement pstmt = null;int row = 0;try {pstmt = con.prepareStatement(sql); //預(yù)編譯sql//設(shè)置占位符參數(shù)pstmt.setInt(1, id);row = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally {this.closeDB(con, pstmt, null);}return row;}}DAO封裝的增改查測試代碼
import java.sql.SQLException; import java.util.List;public class testDao {private static int id = 1;private int row = 1;public static void main(String[] args) throws SQLException {UserDao userDao = new UserDao();List<entry.Users> list = userDao.findAllUsers();for (entry.Users users : list){System.out.println(users.getId()+','+users.getUsername()+","+users.getPassword());}// 添加數(shù)據(jù) // entry.Users user = new entry.Users(); // user.setUsername("jucw"); // user.setPassword("1323"); // int row = userDao.addUser(user); // System.out.println("\t 第"+row+"行添加數(shù)據(jù)!!!");// 刪除 // entry.Users user = userDao.findUsersById(id); // int row = userDao.updateUser(user); // System.out.println("\t 成功刪除第"+row+"行數(shù)據(jù)!!!");// 修改密碼數(shù)據(jù) // int id = 3; // entry.Users user = userDao.findUsersById(id); // 查找到用戶的Id // user.setPassword("5201314"); // int row = userDao.updateUser(user); // System.out.println("\t 更新第"+row+"行數(shù)據(jù)成功");// 查找id // int id = 3; // entry.Users user = userDao.findUsersById(id); // 查找id返回user // System.out.println(user.getUsername()+','+user.getPassword());} }jsp
-
jsp 和 servelet 本子是相同的
-
jsp = java server pages
-
作用:主要是呈現(xiàn)動態(tài)內(nèi)容,也可以接受請求做出響應(yīng)
-
jsp 頁面元素
- html 元素
- java 腳本: 小腳本 表達式
- jsp 頁面上的標(biāo)簽技術(shù):jstl ,el表達式
-
jsp運行流程:
? jsp 轉(zhuǎn)義成,java類(servelet)
? java 通過jvm編譯成.class 文件
? jvm 執(zhí)行.class 文件 生成html 文件返回給客戶端
java Web
- 目標(biāo):主要開發(fā)動態(tài)網(wǎng)頁,交互性,和數(shù)據(jù)庫進行交互
servele / jsp 是一對
-
javaweb 運行環(huán)境
- jre javaweb
- jre javaweb
-
servelet = server + let
服務(wù)器的小程序,是一個Java類運行在服務(wù)器上;
是應(yīng)用程序和數(shù)據(jù)庫之間的中間件
- Web 工程目錄結(jié)構(gòu)
?
-
MCV 模式
- Model 模型
- View 視圖
- Controller 控制器
-
訪問路徑:
https://localhost:8080/目錄的路徑/文件路徑
接受請求之后做出響應(yīng);
改為server 接受請求的方法
請求和響應(yīng)
// 設(shè)置響應(yīng)的編碼 response.setContetType("text/html,charset=utf8");//網(wǎng)頁的輸出流 PrintWriter out = response.getWriter(); out.print("這是第一個程序"); out.flush(); out.close();創(chuàng)建一個新的工程文件
- 導(dǎo)包
- 創(chuàng)建新聞流
IDEA
- 數(shù)據(jù)庫連接
- [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9FqxL5W9-1640679132246)(D:\resourse\gui\Mysql\mysql.assets\image-20211228102155741.png)]
tomat IDEA
配置 Web 項目環(huán)境
環(huán)境 : IDEA+tomcat
包鏈接:tomacat 8.0.50 and jstl-1.2.jaar 存在阿里云盤大三作業(yè)
在當(dāng)前的文件過程下配置web
右鍵項目選擇添加框架;
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dVHgV65x-1640679132247)(D:\resourse\gui\Mysql\mysql.assets\image-20211228153155618.png)]
添加網(wǎng)頁項目文件
添加tomcat 本地連接
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-c9LWqHoz-1640679132248)(D:\resourse\gui\Mysql\mysql.assets\image-20211228153349097.png)]
在項目結(jié)構(gòu)里面設(shè)置依賴環(huán)境
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kJk1nn5j-1640679132248)(D:\resourse\gui\Mysql\mysql.assets\image-20211228153515516.png)]
設(shè)置依賴連接
配置web.xml 文件
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!-- 添加部分 --><display-name>FirstServlet</display-name><!-- FirstServlet類名 --><welcome-file-list><welcome-file>index.jsp</welcome-file> <!-- 歡迎界面,默認(rèn) --></welcome-file-list> <!-- <--! 聲明servlet –>--><servlet><!-- servlet的別名 --><servlet-name>first</servlet-name> <servlet-class>FirstServlet</servlet-class> <!-- 類名部分 --></servlet><!-- 將Servlet與URL綁定 --><servlet-mapping><servlet-name>first</servlet-name><url-pattern>/hi</url-pattern> <!-- 使用映射類名,瀏覽器訪問使用 --></servlet-mapping> </web-app>總結(jié):
配置web項目的時候?qū)⑾嚓P(guān)依賴進行設(shè)置有服務(wù)器Tomcat和設(shè)置jsp 時候使用的jstl 兩個文件包
在配置tomcat 的時候需要設(shè)置相關(guān)訪問設(shè)置
web 項目配置過程中將
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ec0hE21B-1640679132249)(D:\resourse\gui\Mysql\mysql.assets\image-20211228160610447.png)]
web下面可以創(chuàng)建兩個文件夾:
classes 和 lib
- classes : 在工程結(jié)構(gòu)中設(shè)置Output 路徑
- lib : 存放需要的包文件
- 本路徑下的index.jsp 是默認(rèn)的文件
- jsp 文件在這個目錄下進行創(chuàng)建,之后需要的時候進行導(dǎo)入;
總結(jié)
以上是生活随笔為你收集整理的【java实训课】web网页相关知识点总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库】数据库常见操作指令
- 下一篇: 【Git/Github】第一次提交和再次