【java实训课】web网页相关知识点总结
文章目錄
- Mysql 基礎操作
- 操作指令
- 數據庫實驗
- DAO 模式
- DAO 封裝的增刪改查代碼
- DAO封裝的增改查測試代碼
- jsp
- java Web
- 創建一個新的工程文件
- IDEA
- 配置 Web 項目環境
- 環境 : IDEA+tomcat
- 在當前的文件過程下配置web
- 添加tomcat 本地連接
- 配置web.xml 文件
- 總結:
Mysql 基礎操作
使用方法:
方式一:
SQL:結構化查詢語言
DDL(定義),DML(操作),DQL(查詢),DCL(控制)
mysql:
操作指令
連接數據庫
// 進入mysql mysql -u root -p// 顯示數據庫 show databases; show tables;//進入某個數據表 use dataname;// 當前數據庫顯示其他數據表 show tables from mysql; 從mysql 顯示mysql// 顯示當前是在哪個數據量 show database(); //插入數據INSRERT INTO (字段名) values (插入數據值); //學習DAO模式 增刪改查web 的學習 怎么封裝jdbc; // 更新表內容 update news_users set uname='jucw' where uname='zcw'; // 刪除 delete from news_users where uname = 'jucw'; delete from 表名 where 字段匹配;- 使用where需要查找多個的時候,使用IN來匹配多個
數據庫實驗
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. 引入驅動String sql = "select * from news_users where usid = 10";Class.forName("com.mysql.cj.jdbc.Driver");// 訪問驅動管理程序con = DriverManager.getConnection("jdbc:mysql://localhost/db_news?useSSL=FALSE&serverTimezone=Asia/Shanghai","root","123456");Statement stmt = con.createStatement();rs = stmt.executeQuery(sql); // 這里返回了第一條記錄數據while(rs.next()) //這里rs 已經是第二條數據,{// 使用游標獲取當前行,每次往下移動//獲取當前行的每一列數據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{ // 插入數據System.out.println("\t插入數據 ");// 1. 創建執行語句String sql1 = "insert into news_users(uname, upwd) values('zcw', '123456')";// 2. 聲明用于執行數據庫語句Statement stmt = con.createStatement();// statement 來執行數據庫// 3. 將數據執行插入到數據庫stmt.executeUpdate(sql1);System.out.println("\t數據更新成功+'zcw', '123456'!!!");}catch (Exception e){e.printStackTrace();}try{ // 插入數據System.out.println("\t統計數據: ");// 1. 創建執行語句String sql1 = "select COUNT(*) from news_users";// 2. 聲明用于執行數據庫語句Statement stmt = con.createStatement();// statement 來執行數據庫// 3. 將數據執行插入到數據庫rs = stmt.executeQuery(sql1);rs.next();int c = rs.getInt(1);System.out.println("\tcount:"+c);}catch (Exception e){e.printStackTrace();}try{ // 插入數據System.out.println("\t統計數據: ");// 1. 創建執行語句String sql1 = "DELETE FROM news_users where usid = 16";// 2. 聲明用于執行數據庫語句Statement stmt = con.createStatement();// statement 來執行數據庫// 3. 將數據執行插入到數據庫int row = stmt.executeUpdate(sql1);System.out.println("\t刪除了:"+row);System.out.println();}catch (Exception e){e.printStackTrace();}} }DAO 模式
-
Data Access Object 數據訪問對象,數據訪問層,持久層
-
orm 框架:object relational mapping 對象關系映射
作用: 程序怎么操作數據庫表的記錄, 程序中設計實體模型,看出是數據庫表在程序中的一種體現
orm 映射內容:
-
通用DAO
打開數據庫的連接
關閉數據庫的連接
-
DAO的實現
表 ----- 用戶的實體類
-
preparedStatement :預處理的接口
- 通過占位符設參數
-
定義函數
-
查找用戶
String sql = "select * from 表名 where usid=?"; //傳進來的參數是id#使用prepareStatement 可以預編譯sql #設置占位符的參數 pre.setInt(1,id) # 這里的占位符跟format 是一樣的,指定的位置是第幾個參數 # 開始執行參數 rs = pre.executeQuery() # 這里不同于Statement 不用傳進來sql使用try catch finally 最終在finally關閉連接 -
添加用戶
# 需要傳進來兩個參數 用戶名和密碼 String sql = "Insert into 表名(uname, upwd) value (?,?)" # 在這里占位# 預編譯sql # 設置占位符的值 pre.setString(1, user.getUsername()); #傳進來數據 pre.setString(2, user.getUserpwd()); # 傳進來密碼 -
修改用戶數據
# 將所有數據重新寫入一邊 #一行設置 -
刪除數據
# 根據指定的id把用戶數據刪除 pre.setInt(1,id); # 將sql 語句的值補充完整
-
?
-
測試的時候:
-
添加用戶
- 創建新的用戶類,設置新的用戶信息,將新的用戶信息傳到添加函數里面去;
-
-
刪除用戶
-
根據指定的id找到指定的用戶
-
將指定的用戶添加到刪除函數里面,返回刪除的行數
-
修改用戶數據
- 根據id查找到指定的用戶
- 將找到的用戶添加到修改函數里,返回刪除的行數
-
查找用戶
- 根據指定的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); //預編譯sql//設置占位符參數pstmt.setInt(1, id);rs = pstmt.executeQuery();if(rs.next()) { //移動數據庫游標 ,往下移一行//獲取當前行的每一列的數據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 返回影響行數*/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); //預編譯sql 使用占位符//設置占位符參數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 返回影響行數*/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); //預編譯sql // 給預編譯占位符設置初始值//設置占位符參數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); //預編譯sql//設置占位符參數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());}// 添加數據 // entry.Users user = new entry.Users(); // user.setUsername("jucw"); // user.setPassword("1323"); // int row = userDao.addUser(user); // System.out.println("\t 第"+row+"行添加數據!!!");// 刪除 // entry.Users user = userDao.findUsersById(id); // int row = userDao.updateUser(user); // System.out.println("\t 成功刪除第"+row+"行數據!!!");// 修改密碼數據 // int id = 3; // entry.Users user = userDao.findUsersById(id); // 查找到用戶的Id // user.setPassword("5201314"); // int row = userDao.updateUser(user); // System.out.println("\t 更新第"+row+"行數據成功");// 查找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
-
作用:主要是呈現動態內容,也可以接受請求做出響應
-
jsp 頁面元素
- html 元素
- java 腳本: 小腳本 表達式
- jsp 頁面上的標簽技術:jstl ,el表達式
-
jsp運行流程:
? jsp 轉義成,java類(servelet)
? java 通過jvm編譯成.class 文件
? jvm 執行.class 文件 生成html 文件返回給客戶端
java Web
- 目標:主要開發動態網頁,交互性,和數據庫進行交互
servele / jsp 是一對
-
javaweb 運行環境
- jre javaweb
- jre javaweb
-
servelet = server + let
服務器的小程序,是一個Java類運行在服務器上;
是應用程序和數據庫之間的中間件
- Web 工程目錄結構
?
-
MCV 模式
- Model 模型
- View 視圖
- Controller 控制器
-
訪問路徑:
https://localhost:8080/目錄的路徑/文件路徑
接受請求之后做出響應;
改為server 接受請求的方法
請求和響應
// 設置響應的編碼 response.setContetType("text/html,charset=utf8");//網頁的輸出流 PrintWriter out = response.getWriter(); out.print("這是第一個程序"); out.flush(); out.close();創建一個新的工程文件
- 導包
- 創建新聞流
IDEA
- 數據庫連接
- [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9FqxL5W9-1640679132246)(D:\resourse\gui\Mysql\mysql.assets\image-20211228102155741.png)]
tomat IDEA
配置 Web 項目環境
環境 : IDEA+tomcat
包鏈接:tomacat 8.0.50 and jstl-1.2.jaar 存在阿里云盤大三作業
在當前的文件過程下配置web
右鍵項目選擇添加框架;
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dVHgV65x-1640679132247)(D:\resourse\gui\Mysql\mysql.assets\image-20211228153155618.png)]
添加網頁項目文件
添加tomcat 本地連接
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-c9LWqHoz-1640679132248)(D:\resourse\gui\Mysql\mysql.assets\image-20211228153349097.png)]
在項目結構里面設置依賴環境
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kJk1nn5j-1640679132248)(D:\resourse\gui\Mysql\mysql.assets\image-20211228153515516.png)]
設置依賴連接
配置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> <!-- 歡迎界面,默認 --></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>總結:
配置web項目的時候將相關依賴進行設置有服務器Tomcat和設置jsp 時候使用的jstl 兩個文件包
在配置tomcat 的時候需要設置相關訪問設置
web 項目配置過程中將
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ec0hE21B-1640679132249)(D:\resourse\gui\Mysql\mysql.assets\image-20211228160610447.png)]
web下面可以創建兩個文件夾:
classes 和 lib
- classes : 在工程結構中設置Output 路徑
- lib : 存放需要的包文件
- 本路徑下的index.jsp 是默認的文件
- jsp 文件在這個目錄下進行創建,之后需要的時候進行導入;
總結
以上是生活随笔為你收集整理的【java实训课】web网页相关知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库】数据库常见操作指令
- 下一篇: 【Git/Github】第一次提交和再次