Jsp技術入門指南【十三】基于 JSTL SQL 標簽庫實現 MySQL 數據庫連接與數據分頁展示

Jsp技術入門指南【十三】基于 JSTL SQL 標簽庫實現 MySQL 數據庫連接與數據分頁展示

  • 前言
  • 一、回顧SQL標簽的內容
    • 1. 什么是JSTL SQL標簽?
    • 2.為什么要用SQL標簽?
    • 3.第一步:引入SQL標簽庫
    • 4. SQL標簽的核心功能:連接數據庫
      • 標簽常用屬性:
      • 示例代碼(連接到名為“test”的數據庫):
  • 二、實例演示
    • 第一步:加入驅動包
    • 第二步:配置maven
    • 第三步:創建并導入web庫
    • 第四步:導入jsp文件
    • 第五步:根據jsp文件格式創建數據庫
    • 第六步:利用SQL標簽庫實現MySQL數據庫連接


前言

  • 在上一篇博客中,我們介紹了 JSTL 中 SQL 標簽庫和自定義標簽庫 的基礎用法。
  • 本文將結合 MySQL 數據庫連接 和 JSP 頁面數據渲染,通過完整的技術方案實現「從數據庫到前端頁面」的數據流轉。

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482


一、回顧SQL標簽的內容

我的JSTL SQL標簽詳細講解博客鏈接
Jsp技術入門指南【十一】SQL標簽庫
https://blog.csdn.net/2402_83322742/article/details/147838670
Jsp技術入門指南【九】詳細講解JSTL
https://blog.csdn.net/2402_83322742/article/details/147312023

1. 什么是JSTL SQL標簽?

首先,我們需要知道兩個關鍵詞:JSTLSQL標簽

  • JSTL:全稱是 JSP Standard Tag Library(JSP標準標簽庫),是官方提供的一套現成的“標簽工具”,專門用來簡化JSP頁面的開發。用它可以少寫很多Java代碼,讓頁面更干凈、更易讀。
  • SQL標簽:是JSTL里專門用來操作數據庫的一組標簽,比如連接數據庫、執行SQL語句、處理查詢結果等。

2.為什么要用SQL標簽?

假設你不用標簽,直接在JSP里寫Java代碼連數據庫,會像這樣(非常麻煩):

<%
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
// 然后循環取數據...
rs.close(); stmt.close(); conn.close();
%>

而用 SQL標簽,只需要幾行標簽代碼就能搞定,不用寫復雜的Java連接邏輯,對新手更友好!

3.第一步:引入SQL標簽庫

要使用SQL標簽,必須先在JSP頁面頂部“告訴瀏覽器”:我要用這個標簽庫!
添加一行代碼(固定格式,記住就行):

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
  • prefix="sql":給標簽庫起個簡稱,后面用標簽時都以 <sql:XXX> 形式調用(比如 <sql:setDataSource>)。
  • uri:標簽庫的“地址”,固定值,直接復制就行

4. SQL標簽的核心功能:連接數據庫

連接數據庫是操作數據的第一步,SQL標簽里用 <sql:setDataSource> 標簽 來配置數據庫信息,就像“告訴標簽庫你的數據庫在哪、怎么登錄”。

標簽常用屬性:

屬性名作用示例值(以MySQL為例)
driver數據庫驅動類(必須寫對!)com.mysql.cj.jdbc.Driver
url數據庫地址(格式固定)jdbc:mysql://localhost:3306/數據庫名
user數據庫用戶名root
password數據庫密碼123456

示例代碼(連接到名為“test”的數據庫):

<sql:setDataSource driver="com.mysql.cj.jdbc.Driver"url="jdbc:mysql://localhost:3306/test"user="root"password="123456" var="dbConn"  <!-- 給這個連接起個變量名,后面用 -->
/>
  • 注意:需要提前把MySQL的JDBC驅動包(比如 mysql-connector-java-8.0.28.jar)放到項目的 WEB-INF/lib 目錄下,否則會報錯!

二、實例演示

接下來我們來實戰一下

在這里插入圖片描述

  • 題目要求創建一張HTML圖片上的表,并且利用SQL標簽庫實現 MySQL 數據庫連接,將數據庫表中的信息打印到顯示器上

第一步:加入驅動包

  • 首先我們按照之前的那樣加入jsp,jdbc的驅動包來構建環境

在這里插入圖片描述

<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.3</version><scope>provided</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><!-- jstl表達式依賴--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><!-- taglibs 標簽庫依賴--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency></dependencies>

在這里插入圖片描述

第二步:配置maven

  • 接著我們需要配置好自己的maven環境
  • maven環境必須是全英文,不然運行不了

我的jsp環境搭建博客
JSP技術入門指南【一】利用IDEA從零開始搭建你的第一個JSP系統
https://blog.csdn.net/2402_83322742/article/details/146980845?spm=1001.2014.3001.5501
Java-servlet-Web環境搭建(下)詳細講解利用maven和tomcat搭建Java-servlet環境
https://blog.csdn.net/2402_83322742/article/details/145998804

第三步:創建并導入web庫

  • 我們新建了一個MySQLtest的模塊,在里面單擊右鍵,打開模板設置
    在這里插入圖片描述
  • 在MySQLtest里面添加web文件
    在這里插入圖片描述
    在這里插入圖片描述
  • 然后在工件里,找到web應用程序展開型,找到我們剛剛添加的MySQLweb文件
    在這里插入圖片描述
  • 在web-INF文件里創建一個lib文件,并導入我們的庫文件
    在這里插入圖片描述
    在這里插入圖片描述

第四步:導入jsp文件

  • 首先創建jsp文件
    在這里插入圖片描述

在這里插入圖片描述-

  • 導入我們的HTML代碼

在這里插入圖片描述

<%--Created by IntelliJ IDEA.User: DELLDate: 2025/5/13Time: 20:34To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1 , user-scalable=no"><title>pha-Admin</title><link rel="stylesheet" href="css/bootstrap.min.css"/><link rel="stylesheet" href="css/bootstrap-maizi.css"/><link rel="stylesheet" href="css/content-style.css"/><link rel="stylesheet" href="css/mricode.pagination.css"/><link rel="stylesheet" href="css/jquery.fancybox.css"/><link rel="stylesheet" href="css/sweetalert.css"/>
</head>
<body>
<!--導航-->
<nav class="navbar navbar-inverse navbar-fixed-top"><div class="container"><!--小屏幕導航按鈕和logo--><div class="navbar-header"><button class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="index.html" class="navbar-brand"> pha-Admin</a></div><!--小屏幕導航按鈕和logo--><!--導航--><div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li><a href="index.html"><span class="glyphicon glyphicon-home"></span>&nbsp;&nbsp;后臺首頁</a></li><li><a href="user.html"><span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp;用戶管理</a></li><li class="active"><a href="machine.html"><span class="glyphicon glyphicon-expand"></span>&nbsp;&nbsp;機器管理</a></li><li><a href="service.html"><span class="glyphicon glyphicon-tasks"></span>&nbsp;&nbsp;服務管理</a></li><li><a href="log.html"><span class="glyphicon glyphicon-list-alt"></span>&nbsp;&nbsp;日志管理</a></li><li><a href="wiki.html"><span class="glyphicon glyphicon-book"></span>&nbsp;&nbsp;使用文檔</a></li></ul><ul class="nav navbar-nav navbar-right"><li class="dropdown"><a id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">admin<span class="caret"></span></a><ul class="dropdown-menu" aria-labelledby="dLabel"><li><a href="index.html"><span class="glyphicon glyphicon-cog"></span>&nbsp;&nbsp;個人設置</a></li></ul></li><li><a href="#bbs"><span class="glyphicon glyphicon-off"></span>&nbsp;&nbsp;退出</a></li></ul></div><!--導航--></div>
</nav>
<!--導航-->
<div class="container"><div class="row"><div class="col-md-12"><div class="panel-body" style="padding: 15px 0;"><ul class="nav nav-tabs"><li class="active"><a href="#list" aria-controls="machine" role="tab" data-toggle="tab">機器列表</a></li><li><a href="#form" aria-controls="machine" role="tab" data-toggle="tab">添加機器</a></li></ul></div><div class="tab-content"><div role="tabpanel" class="tab-pane active" id="list"><div class="panel-body"><div class="row"><form><div class="col-md-3 col-lg-offset-9"><div class="input-group"><input class="form-control" type="text" value="" placeholder="用戶名" name="keyword"><span class="input-group-btn"><button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-search"></i></button></span></div></div></form></div></div><div class="panel panel-default"><div class="table-responsive"><table class="table table-bordered"><thead><tr><th class="w8p">id</th><th class="w18p">域名</th><th class="w18p">ip</th><th class="w13p">sphinx路徑</th><th class="w10p">備注</th><th class="w15p">創建時間</th><th class="w15p">操作</th></tr></thead><tbody><tr><td class="center">1</td><td>sphinx.test.com.cn</td><td>192.168.128.12</td><td>/usr/local/sphinx</td><td class="center">主機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要刪除嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">2</td><td>sphinx.test.com.cn</td><td>192.168.128.13</td><td>/usr/local/sphinx</td><td class="center">備機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">3</td><td>sphinx.video.com.cn</td><td>192.168.158.13</td><td>/usr/local/sphinx</td><td class="center">主機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">4</td><td>sphinx.test.com.cn</td><td>192.168.158.14</td><td>/usr/local/sphinx</td><td class="center">備機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr></tbody></table></div><div class="panel-footer"><div class="row"><div class="col-md-8 m-pagination" id="paginator"></div></div></div></div></div><div role="tabpanel" class="tab-pane" id="form"><div class="panel-body"><form class="form-horizontal"><div class="form-group"><label class="col-sm-1 control-label"><span class="text-danger"></span>域名</label><div class="col-sm-4"><input type="text" name="username" class="form-control" placeholder="機器域名" required></div></div><div class="form-group"><label class="col-sm-1 control-label"><span class="text-danger"> * </span>IP</label><div class="col-sm-4"><input type="email" name="email" class="form-control" placeholder="機器ip" required></div></div><div class="form-group"><label class="col-sm-1 control-label"><span class="text-danger"> * </span>Sphinx<br>安裝目錄</label><div class="col-sm-4"><input type="text" name="sphinx_path" class="form-control" placeholder="sphinx安裝目錄"></div></div><div class="form-group"><label class="col-sm-1 control-label"><span class="text-danger"></span>備注信息</label><div class="col-sm-4"><input type="text" class="form-control" placeholder="備注" required></div></div><div class="form-group"><div class="col-sm-offset-1 col-sm-10"><button type="submit" onclick="" class="btn btn-success">保存</button></div></div></form><hr></div></div></div></div></div>
</div>
<!--footer-->
<footer><div class="container"><div class="row"><div class="col-md-12"><p class="text-muted center">Copyright&nbsp;?&nbsp;2017-2018&nbsp;&nbsp;phachon@163.com&nbsp;&nbsp;</p></div></div></div>
</footer>
<!--footer-->
<script src="js/plugins/jquery/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/plugins/pagination/mricode.pagination.js"></script>
<script src="js/plugins/fancybox/jquery.fancybox.js"></script>
<script src="js/plugins/sweetalert/sweetalert.min.js"></script>
<script src="js/common/common.js"></script>
<script src="js/module/account.js"></script>
<script type="text/javascript">var pageData = [];pageData.push({'pageSize': '10', 'total': '1000', 'pageIndex': '2'});Common.paginator("#paginator", pageData);Account.bindFancyBox();
</script>
</body>
</html>
  • 可以看到HTML中
 <table class="table table-bordered"><thead><tr><th class="w8p">id</th><th class="w18p">域名</th><th class="w18p">ip</th><th class="w13p">sphinx路徑</th><th class="w10p">備注</th><th class="w15p">創建時間</th><th class="w15p">操作</th></tr></thead><tbody><tr><td class="center">1</td><td>sphinx.test.com.cn</td><td>192.168.128.12</td><td>/usr/local/sphinx</td><td class="center">主機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要刪除嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">2</td><td>sphinx.test.com.cn</td><td>192.168.128.13</td><td>/usr/local/sphinx</td><td class="center">備機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">3</td><td>sphinx.video.com.cn</td><td>192.168.158.13</td><td>/usr/local/sphinx</td><td class="center">主機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">4</td><td>sphinx.test.com.cn</td><td>192.168.158.14</td><td>/usr/local/sphinx</td><td class="center">備機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr></tbody></table>

在這里插入圖片描述

只能是靜態的,接下來我們需要將這里的代碼修改為與數據庫連接,并遍歷打印數據庫里面表的信息

第五步:根據jsp文件格式創建數據庫

  • 完成上面的代碼之后,我們接著創建一個數據庫,點擊數據庫按鈕
    在這里插入圖片描述
  • 然后找到加號,點擊數據源,找到MySQL
    在這里插入圖片描述
  • 在里面輸入我們的密碼和用戶名
    在這里插入圖片描述
  • 找到部署架構,里面就有我們的數據庫文件
    在這里插入圖片描述
    在這里插入圖片描述
  • 在數據庫里根據我們的HTML表格格式創建一張表
  • 新建查詢語句

在這里插入圖片描述

CREATE TABLE sphinx_info (id INT AUTO_INCREMENT PRIMARY KEY,domain VARCHAR(255) NOT NULL,ip VARCHAR(45) NOT NULL,sphinx_path VARCHAR(255) NOT NULL,remark VARCHAR(255) NOT NULL,create_time DATETIME NOT NULL,operation VARCHAR(20)
);
  • 然后加入數據
INSERT INTO sphinx_info (domain, ip, sphinx_path, remark, create_time, operation)
VALUES 
('sphinx.demo1.com', '192.168.100.1', '/usr/local/sphinx', '主機', '2025-05-13 09:30:00', '?刪除'),
('sphinx.demo2.net', '192.168.100.2', '/usr/local/sphinx', '備機', '2025-05-13 09:35:00', '?刪除'),
('sphinx.demo3.org', '192.168.100.3', '/usr/local/sphinx', '主機', '2025-05-13 09:40:00', '?刪除'),
('sphinx.demo4.cn', '192.168.100.4', '/usr/local/sphinx', '備機', '2025-05-13 09:45:00', '?刪除'),
('sphinx.demo5.io', '192.168.100.5', '/usr/local/sphinx', '主機', '2025-05-13 09:50:00', '?刪除');

在這里插入圖片描述

第六步:利用SQL標簽庫實現MySQL數據庫連接

  • 首先在表頭添加
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>//核心標簽聲明<c:forEach>屬于 JSTL 核心標簽庫,必須顯式聲明才能使用。若缺少此聲明,會導致標簽無法解析,數據無法遍歷顯示
  • 然后找到我們的jsp文件,將里面需要修改的代碼
 <tbody><tr><td class="center">1</td><td>sphinx.test.com.cn</td><td>192.168.128.12</td><td>/usr/local/sphinx</td><td class="center">主機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要刪除嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">2</td><td>sphinx.test.com.cn</td><td>192.168.128.13</td><td>/usr/local/sphinx</td><td class="center">備機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">3</td><td>sphinx.video.com.cn</td><td>192.168.158.13</td><td>/usr/local/sphinx</td><td class="center">主機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr><tr><td class="center">4</td><td>sphinx.test.com.cn</td><td>192.168.158.14</td><td>/usr/local/sphinx</td><td class="center">備機</td><td class="center">2017-03-28 12:21:09</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>刪除</a></td></tr></tbody>
  • 修改為我們的 SQL 標簽庫實現 的代碼
<tbody><!-- 配置數據源 --><sql:setDataSourcevar="dbConn"driver="com.mysql.cj.jdbc.Driver"url="jdbc:mysql://localhost:3306/2023se3"user="root"password="123456"/><!-- 執行查詢 --><sql:query dataSource="${dbConn}" var="sphinxRs">SELECT id, domain, ip, sphinx_path, remark, create_time, operationFROM sphinx_info</sql:query><!-- 遍歷結果 --><c:forEach items="${sphinxRs.rows}" var="row"><tr><td class="center">${row.id}</td><td>${row.domain}</td><td>${row.ip}</td><td>${row.sphinx_path}</td><td class="center">${row.remark}</td><td class="center">${row.create_time}</td><td class="center"><a href="deleteSphinx.jsp?id=${row.id}" onclick="return confirm('確認要刪除嗎?')"><i class="glyphicon glyphicon-remove"></i>${row.operation}</a></td></tr></c:forEach></tbody>
  • 下面我們來詳細講解一下代碼
<sql:setDataSourcevar="dbConn"driver="com.mysql.cj.jdbc.Driver"url="jdbc:mysql://localhost:3306/2023se3"user="root"password="123456"
/>
  • 借助 <sql:setDataSource> 標簽,創建了一個名為 dbConn 的數據源對象。
  • 該對象使用 MySQL 驅動程序,連接到本地 3306 端口的 2023se3 數據庫,登錄用戶為 root,密碼是 123456
<sql:query dataSource="${dbConn}" var="sphinxRs">SELECT id, domain, ip, sphinx_path, remark, create_time, operationFROM sphinx_info
</sql:query>
  • 利用 <sql:query> 標簽執行 SQL 查詢操作。
  • sphinx_info 表中選取 7 個字段的數據。
  • 查詢結果會存放在 sphinxRs 變量里,這個變量是一個包含多行數據的集合。
<c:forEach items="${sphinxRs.rows}" var="row"><tr><td class="center">${row.id}</td><td>${row.domain}</td><td>${row.ip}</td><td>${row.sphinx_path}</td><td class="center">${row.remark}</td><td class="center">${row.create_time}</td><td class="center"><a href="deleteSphinx.jsp?id=${row.id}" onclick="return confirm('確認要刪除嗎?')"><i class="glyphicon glyphicon-remove"></i>${row.operation}</a></td></tr>
</c:forEach>
  • <c:forEach> 標簽會遍歷結果集里的每一行數據。

  • 針對每一行數據,都會生成一個 <tr>(表格行)。

  • 每個 <td>(表格單元格)會顯示對應字段的值,像 ID、域名、IP 等。

  • 最后一列是操作列,包含一個刪除鏈接,點擊該鏈接會調用 deleteSphinx.jsp 并附帶當前行的 ID。

  • onclick 事件會彈出確認對話框,防止用戶誤操作。

  • 然后點擊運行
    在這里插入圖片描述

  • 可以看到我們的數據庫信息成功打印到屏幕上了

在這里插入圖片描述


以上就是這篇博客的全部內容,下一篇我們將繼續探索JSP的更多精彩內容。

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482

非常感謝您的閱讀,喜歡的話記得三連哦

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81515.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81515.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

羽毛球訂場小程序源碼介紹

基于ThinkPHP、FastAdmin以及UniApp開發的羽毛球訂場小程序源碼&#xff0c;這款小程序旨在為羽毛球愛好者提供便捷的場地預訂服務。 該小程序前端采用UniApp框架開發&#xff0c;具有良好的跨平臺兼容性&#xff0c;可以一鍵發布至iOS和Android平臺&#xff0c;極大地提高了開…

Unreal Engine: Windows 下打包 AirSim項目 為 Linux 平臺項目

環境&#xff1a; Windows: win10, UE4.27, Visual Studio 2022 Community.Linux: 22.04 windows環境安裝教程&#xff1a; 鏈接遇到的問題&#xff08;問題&#xff1a;解決方案&#xff09; 點擊Linux打包按鈕&#xff0c;跳轉至網頁而不是執行打包流程&#xff1a;用VS打開項…

SpringBoot 3.x 集成 MyBatisPlus

文章目錄 集成 MyBatisPlus第 1 步:創建 SpringBoot 項目第 2 步:添加 MyBatisPlus 依賴第 3 步:編寫 CRUD 代碼創建 Entity創建 Mapper創建 Service編寫 Controller第 4 步:執行初始化 SQL第 5 步:配置第 6 步:測試測試 ControllerMapper 層單元測試參考?? 目標 1:基…

java基礎-抽象類和抽象方法

1.abstract 可以修飾&#xff1a;類、方法 &#xff08;1&#xff09;修飾類&#xff1a; 類不能被實例化&#xff1b; 抽象類一定有構造器&#xff0c;便于子類實例化時調用&#xff1b; &#xff08;2&#xff09;修飾方法&#xff1a;抽象方法 只有方法的聲明&#xff…

解決電腦問題(8)——網絡問題

電腦網絡出現問題的原因較為復雜&#xff0c;以下是從網絡連接、網絡配置以及網絡環境等方面的常見問題及解決方法&#xff1a; 網絡連接問題 檢查物理連接&#xff1a;對于有線網絡&#xff0c;檢查網線是否插好&#xff0c;網線有無破損、斷裂等情況。對于無線網絡&#xff…

ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出現問題】解決方案

ping baidu.coom可以通&#xff0c;ping www.baidu.com不通【DNS出現問題】解決方案 檢查IPV6是否有問題 # 1. 檢查 IPv6 地址&#xff0c;記住網絡接口的名稱 ip -6 addr show# 2. 測試本地 IPv6&#xff0c;eth0換成自己的網絡接口名稱 ping6 ff02::1%eth0# 3. 檢查路由 ip…

【AI生成PPT】使用ChatGPT+Overleaf自動生成學術論文PPT演示文稿

【AI生成PPT】使用ChatGPTOverleaf自動生成學術論文PPT演示文稿 文章摘要&#xff1a;使用ChatGPTBeamer自動生成學術論文PPT演示文稿??Beamer??是什么Overleaf編輯工具ChatGPT生成Beamer Latex代碼論文獲取prompt設計 生成結果 文章摘要&#xff1a; 本文介紹了一種高效利…

JVM 垃圾回收器

以下是對主流 JVM 垃圾回收器的詳細解析&#xff0c;涵蓋 一、Serial GC&#xff08;單線程串行回收器&#xff09; 二、Parallel GC&#xff08;吞吐量優先回收器&#xff09; 三、CMS&#xff08;Concurrent Mark Sweep&#xff0c;低延遲回收器&#xff09; 四、G1&…

從零開始學習three.js(21):一文詳解three.js中的矩陣Matrix和向量Vector

一、三維世界的數學基石 在Three.js的三維世界里&#xff0c;所有視覺效果的實現都建立在嚴密的數學基礎之上。其中向量&#xff08;Vector&#xff09; 和矩陣&#xff08;Matrix&#xff09; 是最核心的數學工具&#xff0c;它們就像構建數字宇宙的原子與分子&#xff0c;支…

ArcGIS Pro 3.4 二次開發 - 內容

環境&#xff1a;ArcGIS Pro SDK 3.4 .NET 8 文章目錄 內容1 工程1.1 創建一個空工程1.2 使用指定名稱創建新工程1.3 使用Pro的默認設置創建新工程1.4 使用自定義模板文件創建新工程1.5 使用 ArcGIS Pro 提供的模板創建工程1.6 打開現有工程1.7 獲取當前工程1.8 獲取當前工程的…

【Python-Day 15】深入探索 Python 字典 (下):常用方法、遍歷、推導式與嵌套實戰

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

31、魔法生物圖鑒——React 19 Web Workers

一、守護神協議&#xff08;核心原理&#xff09; 1. 靈魂分裂術&#xff08;線程架構&#xff09; // 主組件中初始化Workerconst workerRef useRef(null);?useEffect(() > {workerRef.current new Worker(new URL(./creatureWorker.js, import.meta.url));workerRef.…

Spark SQL 之 Antlr grammar 具體分析

src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBaseLexer.g4 BACKQUOTED_IDENTIFIER: ` ( ~` | `` )* `;src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBaseParser.g4 queryPrimary:

低功耗:XILINX FPGA如何優化功耗?

優化Xilinx FPGA及其外圍電路的功耗需要從硬件設計、軟件配置和系統級優化三個層面綜合考慮。以下是具體的優化策略&#xff0c;涵蓋硬件和軟件方面&#xff1a; 一、硬件層面的功耗優化 選擇低功耗FPGA型號 選擇Xilinx低功耗系列芯片&#xff0c;如7系列中的Artix-7&#xff…

深入理解 ZAB:ZooKeeper 原子廣播協議的工作原理

目錄 ZAB 協議&#xff1a;ZooKeeper 如何做到高可用和強一致&#xff1f;&#x1f512;ZAB 協議的核心目標 &#x1f3af;ZAB 協議的關鍵概念 &#x1f4a1;ZAB 協議的運行階段 &#x1f3ac;階段一&#xff1a;Leader 選舉 (Leader Election) &#x1f5f3;?階段二&#xff…

OpenHarmony外設驅動使用 (五),Fingerprint_auth

OpenHarmony外設驅動使用 &#xff08;五&#xff09; Fingerprint_auth 概述 功能簡介 指紋認證是端側設備不可或缺的功能&#xff0c;為設備提供用戶認證能力&#xff0c;可應用于設備解鎖、支付、應用登錄等身份認證場景。用戶注冊指紋后&#xff0c;指紋認證模塊就可為設…

前端(vue)學習筆記(CLASS 6):路由進階

1、路由的封裝抽離 將之前寫在main.js文件中的路由配置與規則抽離出來&#xff0c;放置在router/index.js文件中&#xff0c;再將其導入回main.js文件中&#xff0c;即可實現路由的封裝抽離 例如 //index.js import { createMemoryHistory, createRouter } from vue-routerim…

前后端交互中的絕對路徑和相對路徑

前端 <form action"hello" method"post"> 1. 不加斜杠 &#xff08;相對路徑&#xff0c;如 action"hello"&#xff09; 解析規則&#xff1a;基于當前頁面的 URL 路徑部分 進行拼接。 假設當前頁面 URL 是 http://域名:端口/應用上下文…

在Odoo 18中創建進度條指南

在Odoo 18中創建進度條指南 一、創建進度條模板 首先在名為 progress_bar_widget.xml 的文件中定義一個名為 ProgressBarWidget 的新模板。該模板使用兩個CSS類&#xff1a;progress-bar-inner 用于樣式化進度條&#xff0c;progress_number 用于顯示進度百分比。您可以根據需…

Linux grep 命令詳解:常用選項、參數及實戰場景

一、grep 命令簡介 grep&#xff08;Global Regular Expression Print&#xff09;是 Linux 中用于文本搜索的核心工具&#xff0c;支持正則表達式&#xff0c;能快速定位文件中的目標內容。 二、常用選項&#xff08;Options&#xff09;及英文對照 | 選項 | 英文全稱 | 作用 …