Java Web項目(一)

框架

java web項目總工分為兩部分:客戶端(前端)和服務端(后端)

客戶端發起請求,服務端接受請求并進行處理

發起請求的方式:from表單、jQuery + ajax

from表單 造成全局的變化,在發起請求時所有的數據都會被修改

jQuery + ajax 可以做到局部更新

tomcat是一個服務器,時刻等待請求到來

關系如圖所示

項目的工作流程類似于去飯店吃飯,

url 是請求路徑,相當于找指定的飯店,找到指定的服務員

type 是請求參數(有get? post 等),相當于指定服務方式

data 是攜帶的參數,相當于特定要求

success 是成功的回調函數,相當于上菜

服務端

接收參數,相當于接受菜單

邏輯處理,提供對應的服務,相當于后廚的加工

(如果需要)操作數據庫,數據庫就相當于倉庫

返回數據,即上菜

注:所有的信息不是存在后端,而是存在數據庫

get和post的區別

1.傳參方式不同

? ?post 傳參用data域

? ?get? 則在url中傳參?

? ?格式? ? url:" 對應Servlet類文件名?要傳的參數=參數值 "

? ?當參數不止一個時,用&? 等連接符

2.發起范圍不同

? ?get :只要能寫地址的地方都可以發起get請求(包括url 、瀏覽器的地址欄、前端中的<a href="? "></a>標簽.....)

? ?post: 請求發起需要ajax+jquery? ?或者form表單(現不用)

3.常用作用范圍

get常用于查找

post 常用于查找以外的功能,如添加、修改、刪除等

servlet

servlet 相當于小服務員,同時處理服務端的多種操作,對少量數據進行處理,數據量太大時效果不好

有軟件可將servlet的角色拆分開,分成controller 、 service 、 dao

controller專門接受客戶端的信息,和客戶端進行交互

service 進行各種各樣的邏輯處理

dao 專門操作數據庫,做處理后將內容返回service

service再將信息返回controller

controller再返回到客戶端

Navicat?

Mysql? ? ? 數據庫

Navicat? ?數據庫的可視化工具

表中一般有一個"id" 作為主鍵,一般默認勾選使用"不是null鍵",即自動遞增

數據庫中的表的關系

一對一

該情況下經常把兩個表合并成一張表,即將

妻子表
idnameage
1qqq26
2www36
3eee27
丈夫表
idnameage
1aaa34
2sss27
3ddd28

變為

idWnameWageMnameMage
1qqq26sss27
2eee27aaa34
3www36ddd28

但方法不唯一,包括存外鍵、新建表格等

外鍵就是當前表格中的一個字段,但其取值有嚴格要求,必須來自于對應的另一張表中的主鍵

一對多

合成一張表時數據冗余

常用方法:把多的表設置外鍵,(少的表設置外鍵也會數據冗余)

有時也額外創造一張表存儲關系,但是效率不如上述方法高

如:學生表和班級表

班級表
idc_name總分
1一班30
2二班36
3三班27
學生表
idnameagec_id
1aaa131
2sss143
3ddd152
4zzz123
5xxx141
6ccc152

多對多

無論是兩張表合并,還是在一張表上單獨加外鍵,都會造成數據只能使用新建表存外鍵的方式

例如:學生表和課程表

課程表
idc_name總分
1java30
2數據結構36
3python27
學生表
idnameage
1aaa13
2sss14
3ddd15
4zzz12
5xxx14
6ccc15

選課表

s_idc_id
13
12
33
41
......

操作數據庫

操作數據庫需要對應的驅動,

比如: Mysql驅動Mysql數據庫

? ? ? ? ? ??SqlServerl驅動SqlServerl數據庫

因此為了簡化操作,對驅動進行了規范:JDBC

操作數據庫步驟:

1.加載驅動

Class.forName("com,mysql.jdbc.Driver")? ?----5.版本

Class.forName("com,mysql.cj.jdbc.Driver")? ?----8.版本

可能會報錯,因為沒有驅動

解決方法:

<1>異常拋出

? ?但是在調方法時可能再次產生異常,所以可以調方法時繼續拋出異常,也可以使用方法二

<2>try....catch....捕獲異常

? ?使用該方法時,正常情況下執行try中的內容,一旦有異常時,異常會被捕獲并執行catch中的內容

catch(捕獲指定異常內容)

eg:catch(ClassNotFoundException e)? 指定捕獲沒有找到class的異常

? ? ? ??catch(SQLException e)? 指定捕獲sql的異常

? ? ? ??catch(Exception e)? 捕獲所有的異常

2.添加用戶信息和url

?? ??? ??? ?String url="jdbc:mysql://localhost:端口號/需要連接的數據庫";
?? ??? ??? ?String username ="root";? ? --->? ?賬號一般情況下默認為root
?? ??? ??? ?String password ="10027018";? ?----> 密碼自設

3.驅動管理類調用方法進行連接,得到連接對象(一般繼續拋出異常)

驅動管理類? ? ?----->? ?DriverManager

調方法? ? ? ? ? ? ----->? ?DriverManager.getConnection(url,username,password);

連接類? ? ? ? ? ? ----->? ?Connection

4.創建執行sql的對象

? ?其對應的類為Statement

? ?用createStatement()方法

5.執行sql語句

? ? executeQuery(sql)? ? ? ? ?---->執行查找的方法

? ??executeUpdate(sql)? ? ? ?---->執行修改的方法,會返回受影響的行數

? ??

? ? ResultSet? ? ---->結果集? ?用于處理結果

6.對結果進行處理

? ? 獲取指定某項下的數據,需要調方法getInt("數據名")? ?Int根據數據類型變化

7.關閉/釋放資源

? ?資源名.close()

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

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

相關文章

Dify部署內網時遇到的代理問題及解決辦法

大家知道&#xff0c;在公網環境下利用docker安裝dify源碼鏡像比較容易&#xff0c;詳見我之前的文章&#xff0c;基于dify開發agent、workflow等非常方便&#xff0c;本次想著在內部網絡環境下也完成部署&#xff0c;以方便更多的人使用&#xff0c;但在部署到內網環境下&…

多節點監控的docker管理面板Portainer安裝指南:家庭云計算專家

背景 Portainer 是一個輕量級且功能強大的容器管理面板&#xff0c;專為 Docker 和 Kubernetes 環境設計。它通過直觀的 Web 界面簡化了容器的部署、管理和監控&#xff0c;即使是非技術用戶也能輕松上手。Portainer 支持多節點管理&#xff0c;允許用戶從一個中央控制臺管理多…

Linux內核哈希表學習筆記

前沿 近期項目中需要給自定義的驅動增加一個功能存儲相關的數據信息。結合實際業務層面,最終決定采用哈希表的結構來存儲。因為其具備快速查找,插入和刪除。其實現原理通過散列函數映射到指定位置。時間復雜度O(1).而且運算速度也快,很適合處理大量的數據場景。但是其也有一…

對于在線教育或知識付費類網站視頻處理方案

一、視頻格式&#xff1a; 1. 推薦格式&#xff1a;HLS&#xff08;HTTP Live Streaming&#xff09; 優勢?&#xff1a; ?自適應碼率?&#xff1a;根據用戶網絡狀況自動切換清晰度&#xff0c;避免卡頓。?廣泛兼容性?&#xff1a;iOS/macOS 原生支持&#xff0c;Android…

Deepseek輸出的內容如何直接轉化為word文件?

我們有時候會直接利用deepseek翻譯別人的文章或者想將deepseek輸出的內容直接復制到word文檔里。但是文本格式和word是不對應的。這時候需要輸入如下命令&#xff1a; 以上翻譯內容的格式和排版要求如下&#xff1a; 1、一級標題 字體為黑體&#xff08;三號&#xff09;&…

【Vue】組件通信(Props/Emit、EventBus、Provide/Inject)

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;Vue 文章目錄 1. Props/Emit 父子組件通信1.1 Props 向下傳遞數據1.2 Emit 向上傳遞事件 2. EventBus 跨組件通信2.1 創建事件總線2.2 使用事件總線2.3 EventBus 優缺點 3. Provide/Inject 深層組件通信3.1 基本使用3.2 響應式處…

vulnhub sunset系列靶機合集(部分)

描述&#xff1a;該合集包含sunset系列適合新手的四個靶機&#xff08;sunset:1、dusk、sunrise、noontide&#xff09;的滲透全過程。 靶機下載地址&#xff1a;Vulnerable By Design - Search: sunset ~ VulnHubhttps://www.vulnhub.com/?qsunset sunset:1 滲透過程 信息…

【MySQL】MySQL的基礎語法及其語句的介紹

1、基礎語法 mysql -h【主機名】 -u【用戶名】 -p //登錄MySQL exit或quit; //退出MySQL show database; //查看MySQL下的所有數據庫 use 【數據庫名】; //進入數據庫 show tables; //查看數據庫下的所有表名 *MySQL的啟動和關閉 &am…

2025-4-20-C++ 學習 數組(1)

數組 2025-4-20-C++ 學習 數組(1)P1428 小魚比可愛題目描述輸入格式輸出格式輸入輸出樣例 #1輸入 #1輸出 #1說明/提示題解代碼P1427 小魚的數字游戲題目描述輸入格式輸出格式輸入輸出樣例 #1輸入 #1輸出 #1說明/提示數據規模與約定題解代碼P5727 【深基5.例3】冰雹猜想題目描…

ESP-ADF外設子系統深度解析:esp_peripherals組件架構與核心設計(顯示輸出類外設之LCD)

目錄 ESP-ADF外設子系統深度解析&#xff1a;esp_peripherals組件架構與核心設計&#xff08;顯示輸出類外設之LCD&#xff09;簡介模塊概述功能定義架構位置核心特性 LCD外設分析LCD外設概述LCD外設層次架構圖 LCD外設API和數據結構外設層API公共API內部數據結構 LCD外設配置選…

面試題:循環引用兩個節點相互引用,如何判斷哪個用 shared_ptr?哪個用 weak_ptr?

目錄 1.引言 2.原理 3.所有權模型與指針選擇 4.復雜場景的決策策略 5.注意事項 6.總結 1.引言 當兩個對象通過 shared_ptr 相互引用時&#xff0c;會產生循環引用問題&#xff0c;導致內存泄漏。因為這兩個對象的引用計數永遠不會變為 0&#xff0c;即使它們在程序的其他…

QT聊天項目DAY06

1.從git上同步項目 編譯測試&#xff0c;編譯通過 Post請求測試 測試成功 2. email is 打印有問題&#xff0c;檢查 解析結果是存儲在jsonResult中的&#xff0c;修改 3. 客戶端實現Post驗證碼請求 3.1 同步Qt客戶端項目 檢查QT版本&#xff0c;由于我在公司用的還是QT5.12.9…

PHP騰訊云人臉核身獲取FaceId

參考騰訊云官方文檔&#xff1a; 人臉核身 合作方后臺上傳身份信息_騰訊云 前提&#xff1a;已經獲取了SIGN Ticket。獲取參考文檔&#xff1a; PHP騰訊云人臉核身獲取SIGN Ticket-CSDN博客 public function getTxFaceId($uid,$name,$idNo){$appId ;$userId $uid;$nonce …

用 Deepseek 寫的uniapp油耗計算器

下面是一個基于 Uniapp 的油耗計算器實現&#xff0c;包含 Vue 組件和頁面代碼。 1. 創建頁面文件 在 pages 目錄下創建 fuel-calculator 頁面&#xff1a; <!-- pages/fuel-calculator/fuel-calculator.vue --> <template><view class"container"…

Redis ④-通用命令

Redis 是一個 客戶端-服務器 結構的程序&#xff0c;這與 MySQL 是類似的&#xff0c;這點需要牢記&#xff01;&#xff01;&#xff01; Redis 固然好&#xff0c;但也不是任何場景都適合使用 Redis&#xff0c;一定要根據當前的業務需求來選擇是否使用 Redis Redis 通用命令…

HarmonyOs學習 環境配置后 實驗1:創建項目Hello World

HarmonyOS開發入門&#xff1a;環境配置與Hello World實驗 實驗目標 掌握HarmonyOS開發環境配置&#xff0c;創建首個HarmonyOS應用并實現"Hello World"界面展示 實驗準備 已安裝DevEco Studio開發環境已配置HarmonyOS開發依賴項熟悉基本TypeScript/ArkTS語法&am…

HTTP:十.cookie機制

Cookie概念及類型 HTTP cookie,簡稱cookie,又稱數碼存根、“網站/瀏覽+魔餅/魔片”等,是瀏覽網站時由網絡服務器創建并由網頁瀏覽器存放在用戶計算機或其他設備的小文本文件。Cookie使Web服務器能在用戶的設備存儲狀態信息(如添加到在線商店購物車中的商品)或跟蹤用戶…

記錄小程序第一次調用Api,基于騰訊云Serverless函數,實現小程序的成功接入api,以及數據調用

目錄 創建騰訊云個人賬戶新建severless應用建立函數URL小程序中調用api示例 創建騰訊云個人賬戶 百度搜索即可&#xff0c;并注冊 新建severless應用 作者以github下載的某Api為例&#xff0c;這里不展示具體Api&#xff0c;只關注操作即可&#xff0c;相信都是互通的 在騰…

ES6 第一講 變量定義 堆與棧 字符串的擴展和數值型的擴展

文章目錄 1.ES6變量定義2.ES6堆和棧3.字符串的擴展3.1 模板字符串3.2 判斷是否以指定的字符串開頭或結尾3.3 字符串重復輸出3.4 填充方法3.5 去除前后字符串空格3.6 返回參數指定位置的字符 4. 數值型的擴展4.1 二進制0B 八進制0O4.2 判斷是否是一個無窮大的數字 &#xff08;判…

LeetCode第158題_用Read4讀取N個字符 II

LeetCode 第158題&#xff1a;用Read4讀取N個字符 II 題目描述 給你一個文件&#xff0c;并且該文件只能通過給定的 read4 方法來讀取&#xff0c;請實現一個方法來讀取 n 個字符。 read4 方法&#xff1a; API read4 可以從文件中讀取 4 個連續的字符&#xff0c;并且將它…