最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

教程揭秘 | 動(dòng)力節(jié)點(diǎn)內(nèi)部Java零基礎(chǔ)教學(xué)文檔第七篇:servlet(4)

2023-11-09 09:32 作者:動(dòng)力節(jié)點(diǎn)  | 我要投稿

接上期后續(xù)

本期分享第七章節(jié)

servlet

第四篇章

已經(jīng)分享過(guò)半了,你們都跟上了嗎?

每天都在學(xué)習(xí)嘛?

有什么不會(huì)的嘛?

今日教學(xué)文檔分享來(lái)了?

今日新篇章

員工信息管理


1.?員工信息管理


1.1?介紹

用戶進(jìn)行登錄后,可以對(duì)員工信息進(jìn)行管理(增刪查改),等操作.如果用戶沒(méi)有登錄,不能訪問(wèn)員工操作頁(yè)面.并且員工操作頁(yè)面顯示當(dāng)前登錄用戶信息.

1.2?技術(shù)點(diǎn)

使用Vue+ElementUI充當(dāng)前端界面,使用Servlet+JDBC+Mysql提供數(shù)據(jù)管理控制.后端統(tǒng)一向前端返回JSON格式的數(shù)據(jù).

2.?項(xiàng)目搭建

?


2.1?統(tǒng)一前置處理

2.1.1?過(guò)濾器

由于所有的請(qǐng)求都是servlet進(jìn)行處理,但是存在一些共性問(wèn)題,例如:編碼格式,跨域響應(yīng)頭.基于這樣的情況,早期web設(shè)計(jì)者,定義一個(gè)對(duì)所有請(qǐng)求進(jìn)行過(guò)濾的組件,這個(gè)組件叫過(guò)濾器.通過(guò)實(shí)現(xiàn)過(guò)濾器的規(guī)范,將過(guò)濾器注冊(cè)到服務(wù)器,過(guò)濾器就會(huì)對(duì)相應(yīng)的項(xiàng)目中所有的請(qǐng)求進(jìn)行干預(yù)處理.

?

基于過(guò)濾器機(jī)制,可以將一些共性問(wèn)題由過(guò)濾器處理.JavaWeb中提供接口:Filter,通過(guò)實(shí)現(xiàn)Filter接口,重寫相關(guān)方法,再進(jìn)行注冊(cè),就可以使用.

?2.1.2?過(guò)濾器的實(shí)現(xiàn)

1.?實(shí)現(xiàn)Filter接口

2.?重寫相關(guān)方法:doFilter方法

3.?注冊(cè)過(guò)濾器

(1)?xml注冊(cè)

?(2)?注解注冊(cè)

?2.1.3?編碼字符集處理


2.1.4?跨域處理

?2.2?數(shù)據(jù)庫(kù)腳本

2.3?postman安裝

接口測(cè)試工具,模擬HTTP請(qǐng)求.使用postman模擬常規(guī)用戶請(qǐng)求操作,可以看到服務(wù)器返回的數(shù)據(jù),進(jìn)行接口測(cè)試.

2.4?核心代碼

2.4.1?統(tǒng)一業(yè)務(wù)結(jié)果包裝類-Result

2.4.2?數(shù)據(jù)庫(kù)連接配置文件

?

2.4.3?數(shù)據(jù)庫(kù)連接工具類

?

2.4.4?通用數(shù)據(jù)庫(kù)操作類

?

2.4.5?通用分頁(yè)結(jié)果包裝類

?

3.?登錄功能

?

3.1?servlet三大作用域

servlet三大作用域就是三個(gè)用于存儲(chǔ)數(shù)據(jù)的容器,根據(jù)其范圍劃分分為以下三類(小到大):

1.?當(dāng)前請(qǐng)求作用域

2.?當(dāng)前會(huì)話作用域

3.?當(dāng)前應(yīng)用作用域

3.1.1?當(dāng)前請(qǐng)求作用域

是指存儲(chǔ)的數(shù)據(jù)只能在同一個(gè)請(qǐng)求中訪問(wèn),因?yàn)閠omcat將每一個(gè)請(qǐng)求封裝成了HttpServletRequest對(duì)象,該對(duì)象中存在Map集合

private final Map<String, Object> attributes = new ConcurrentHashMap<>();

只要request對(duì)象相同,存儲(chǔ)數(shù)據(jù)Map就相同.當(dāng)在程序中,使用內(nèi)部轉(zhuǎn)發(fā)時(shí),將一個(gè)請(qǐng)求對(duì)象傳給多個(gè)servlet的service中,此時(shí)多個(gè)servlet使用的同一個(gè)請(qǐng)求級(jí)別的作用域.因?yàn)殡m然經(jīng)歷多個(gè)servlet程序,但是請(qǐng)求只有一次,并且請(qǐng)求對(duì)象和響應(yīng)對(duì)象在傳遞.

3.1.2?當(dāng)前應(yīng)用作用域

當(dāng)前應(yīng)用作用域?qū)ο?也被稱之為servlet容器對(duì)象,當(dāng)項(xiàng)目啟動(dòng)時(shí),tomcat服務(wù)器會(huì)為每一個(gè)應(yīng)用程序創(chuàng)建且只創(chuàng)建一個(gè)(有且只有一個(gè))servlet容器對(duì)象,該對(duì)象可以在當(dāng)前應(yīng)用程序中任何地方進(jìn)行訪問(wèn)(也就是在servlet中訪問(wèn)),該容器對(duì)象也存在Map容器.

獲取Servlet容器對(duì)象:this.getServletContext()

?

3.1.3?當(dāng)前會(huì)話作用域

當(dāng)前會(huì)話是指從客戶端請(qǐng)求服務(wù)器開(kāi)始,建立一個(gè)會(huì)話,會(huì)話中包含多次請(qǐng)求和響應(yīng).使用session對(duì)象表示.服務(wù)器如何知道多個(gè)請(qǐng)求是同一次會(huì)話?原理很簡(jiǎn)單,當(dāng)?shù)谝淮握?qǐng)求時(shí),服務(wù)器默默的在響應(yīng)頭中添加了一個(gè)唯一標(biāo)識(shí),以后的請(qǐng)求如果帶上了這個(gè)唯一標(biāo)識(shí).則服務(wù)器就將這批唯一標(biāo)識(shí)一致的請(qǐng)求當(dāng)做同一次會(huì)話中的請(qǐng)求.默認(rèn)會(huì)話默認(rèn)是30分鐘或者一次瀏覽器的開(kāi)啟和關(guān)閉.

因?yàn)檫@個(gè)唯一標(biāo)識(shí),本質(zhì)上服務(wù)器通過(guò)瀏覽器的Cookie機(jī)制.將唯一標(biāo)識(shí)通過(guò)響應(yīng)頭,告訴瀏覽器將這個(gè)數(shù)據(jù)存在cookie中,然后瀏覽器每次請(qǐng)求時(shí)默認(rèn)將有效的cookie帶給服務(wù)器.所以服務(wù)器就會(huì)檢查從請(qǐng)求頭中帶過(guò)來(lái)的數(shù)據(jù)JSESSIONID,如果一致說(shuō)明是同一個(gè)會(huì)話.

?


3.2?三大作用域的API

3.2.1?獲取作用域?qū)ο?/span>

?3.2.2?作用域存儲(chǔ)數(shù)據(jù)

3.2.3?獲取數(shù)據(jù)

?3.2.4?刪除數(shù)據(jù)

?3.3?會(huì)話技術(shù)-Session

session技術(shù)被稱之為會(huì)話技術(shù),當(dāng)今已經(jīng)不適用了.session技術(shù)本質(zhì)上,在服務(wù)器中開(kāi)辟一塊內(nèi)存,將找到這塊數(shù)據(jù)存儲(chǔ)的標(biāo)識(shí)返回給了瀏覽器,每次瀏覽器的請(qǐng)求,服務(wù)器進(jìn)行解析時(shí),會(huì)進(jìn)行一個(gè)檢查,檢測(cè)session有效性.由于當(dāng)今,應(yīng)用需要提高穩(wěn)定性和可用性.一般服務(wù)器多臺(tái).session本質(zhì)上JVM內(nèi)存中一塊數(shù)據(jù),多臺(tái)服務(wù)器運(yùn)行了多個(gè)JVM程序,每個(gè)JVM內(nèi)存都有自己獨(dú)立管理空間,相互無(wú)法共享.如果用戶訪問(wèn)時(shí),訪問(wèn)的是A服務(wù)器,第二次訪問(wèn)時(shí)訪問(wèn)的B服務(wù)器,就會(huì)出現(xiàn)永遠(yuǎn)不會(huì)有第二次訪問(wèn).市面上,一般使用一些中間件存儲(chǔ)會(huì)話唯一標(biāo)識(shí).

3.3.1?session相關(guān)API

?

3.4?會(huì)話技術(shù)Cookie

cookie這個(gè)技術(shù),也被稱之為客戶端緩存技術(shù).cookie技術(shù)本質(zhì)上瀏覽器的一個(gè)機(jī)制.是和HTTP協(xié)議的一個(gè)約定.每次瀏覽器在請(qǐng)求時(shí),如果發(fā)現(xiàn)響應(yīng)頭中存在Set-Cookie的頭,則會(huì)將相關(guān)數(shù)據(jù)存儲(chǔ)在瀏覽器的緩存中(默認(rèn)存儲(chǔ)在瀏覽器內(nèi)存中),如果Set-Cookie這個(gè)響應(yīng)頭的數(shù)據(jù)設(shè)置了有效時(shí)間,瀏覽器還會(huì)將數(shù)據(jù)存儲(chǔ)在本地磁盤.

每次瀏覽器在請(qǐng)求時(shí),會(huì)去檢查存放cookie數(shù)據(jù)空間,看是否有需要帶給服務(wù)器的cookie數(shù)據(jù).如果有,則使用請(qǐng)求頭:cookie帶給服務(wù)器.

瀏覽器會(huì)從時(shí)間,域名,資源路徑等多個(gè)方面進(jìn)行檢查.

當(dāng)前cookie也不太適用,因?yàn)閏ookie的本質(zhì)是數(shù)據(jù)存在客戶端,首先可能存在安全問(wèn)題,其次,當(dāng)今是多終端時(shí)代(手機(jī)/平板/電腦/手表),如果數(shù)據(jù)存在客戶端,很難實(shí)現(xiàn)數(shù)據(jù)共享.

3.4.1?Cookie的Api

Cookie中數(shù)據(jù)key=value形式,可以通過(guò)構(gòu)造器創(chuàng)建Cookie對(duì)象,通過(guò)響應(yīng)頭將cookie添加到響應(yīng)中.

3.5?session和cookie比較

首先session和cookie都能夠存儲(chǔ)數(shù)據(jù),但是session存儲(chǔ)在服務(wù)器內(nèi)存中,cookie是存儲(chǔ)在瀏覽器中,相對(duì)而言session存儲(chǔ)數(shù)據(jù)的安全性高于cookie.

但是session是依賴cookie實(shí)現(xiàn)的.因?yàn)椴檎襰ession的唯一標(biāo)識(shí)存儲(chǔ)在cookie中的,session基于cookie.

3.6?應(yīng)用

3.6.1?驗(yàn)證碼功能


3.6.2?用戶登錄功能

4.?員工信息管理

?

4.1?后端數(shù)據(jù)接口

所有的后端數(shù)據(jù)接口開(kāi)發(fā)完成后,每開(kāi)發(fā)一個(gè)必須使用postman進(jìn)行一次測(cè)試.這樣的做的目的,確保后端程序沒(méi)有問(wèn)題.

4.1.1?部門列表接口

4.1.1.1?servlet

?4.1.1.2?Service

4.1.1.3?Dao

?4.1.2?員工分頁(yè)接口

4.1.2.1?查詢實(shí)體類

4.1.2.2?servlet

4.1.2.3?service

4.1.2.4?dao

?

4.1.3?新增員工接口

4.1.3.0.1?servlet

4.1.3.0.2?service


4.1.3.0.3?dao

4.1.3.1?修改員工接口

4.1.3.1.1?servlet

?

?

4.1.3.1.2?service

?

?

4.1.3.1.3?dao

?

4.1.3.2?刪除員工信息接口

4.1.3.2.1?servlet

?

4.1.3.2.2?service

?

4.1.3.2.3?dao

p


?

4.2?前端界面

4.2.1?登錄界面

?

4.2.2?數(shù)據(jù)頁(yè)面

?

?

5.?監(jiān)聽(tīng)器

5.1?ServletContext監(jiān)聽(tīng)器

?


在Javaweb中監(jiān)聽(tīng)器是只對(duì)Java的三大作用域進(jìn)行監(jiān)視的組件,監(jiān)視3大作用域的生命周期和屬性變化。

監(jiān)視作用域?qū)ο蟮膭?chuàng)建和銷毀,監(jiān)視作用域?qū)ο笾械娜萜鞯臄?shù)據(jù)的變化.JavaWeb分別提供2類接口:

1.?生命周期監(jiān)聽(tīng)接口

2.?屬性變化監(jiān)聽(tīng)接口

生命周期監(jiān)聽(tīng)接口:

ServletContextListener : 監(jiān)聽(tīng)ServletContext的生命周期

HttpSessionListener : 監(jiān)聽(tīng)HttpSession的生命周期

ServletRequestListener :監(jiān)聽(tīng)每個(gè)HttpServletRequest對(duì)象的生命周期

在生命周期變化中,只有2個(gè)方法:創(chuàng)建和銷毀

屬性變化監(jiān)聽(tīng)接口:

ServletContextAttributeListener : 監(jiān)聽(tīng)ServletContext屬性變化

HttpSessionAttributeListener : 監(jiān)聽(tīng)HttpSession的屬性變化

ServletRequestAttributeListener : 監(jiān)聽(tīng)HttpServletRequest的屬性變化

在屬性變化中,只有3個(gè)方法:新增/刪除/修改

5.1.1?生命周期監(jiān)聽(tīng)器

5.1.1.1?ServletContextListener

ServletContext對(duì)象生命周期監(jiān)聽(tīng)器,初始化方法,在應(yīng)用程序啟動(dòng)時(shí)調(diào)用.因?yàn)镾ervletContext是全局作用域,全局有些只有一個(gè).其中銷毀方法在應(yīng)用程序停止時(shí)調(diào)用.

5.1.1.2?HttpSessionListener

在創(chuàng)建Session對(duì)象時(shí)調(diào)用初始化方法,當(dāng)session銷毀時(shí)調(diào)用銷毀方法

5.1.1.3?ServletRequestListener

在HttpServletRequst對(duì)象創(chuàng)建時(shí)調(diào)用初始化方法,service結(jié)束時(shí),就會(huì)調(diào)用銷毀方法.

5.1.2?屬性變化監(jiān)聽(tīng)器

當(dāng)作用域的Map容器中,有新增的屬性值時(shí),觸發(fā)新增的方法,如果有屬性值被刪除時(shí),觸發(fā)刪除的方法,如果添加了一個(gè)屬性值,覆蓋了之前的屬性值則觸發(fā)修改方法.

5.2?應(yīng)用

5.2.1?實(shí)現(xiàn)相關(guān)監(jiān)聽(tīng)器接口

5.2.2?監(jiān)聽(tīng)器注冊(cè)

5.2.2.1?xml配置

?5.2.2.2?注解

?5.3?監(jiān)聽(tīng)器場(chǎng)景

由于ServletContextListener在項(xiàng)目啟動(dòng)時(shí)就可以調(diào)用初始化方法,將一些耗時(shí)的操作進(jìn)行全局化初始化,例如:初始化連接池.將比較大復(fù)雜對(duì)象初始化,可以使用ServletContextListener在項(xiàng)目啟動(dòng)時(shí)進(jìn)行完成,具體的業(yè)務(wù)中只需要實(shí)際使用即可.



更多干貨我們下期再說(shuō)!

下期會(huì)分享

第八章節(jié)

Maven

相關(guān)知識(shí)~

下期見(jiàn)!


教程揭秘 | 動(dòng)力節(jié)點(diǎn)內(nèi)部Java零基礎(chǔ)教學(xué)文檔第七篇:servlet(4)的評(píng)論 (共 條)

使用qq登录你需要登录后才可以评论。
宁南县| 武强县| 平度市| 大石桥市| 凉城县| 洪江市| 扶绥县| 阜阳市| 福建省| 甘谷县| 普兰县| 大关县| 喜德县| 龙江县| 印江| 镇康县| 大宁县| 正宁县| 泾源县| 宁城县| 株洲县| 仲巴县| 桐城市| 电白县| 明光市| 建德市| 梅州市| 赤城县| 中阳县| 九龙县| 普安县| 吉林市| 廉江市| 庄浪县| 卢龙县| 衡水市| 江西省| 莒南县| 象州县| 吉林省| 彰化县|