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

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

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

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

接上期后續(xù)

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

servlet

第二篇章

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

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

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

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

今日新篇章

【Servlet】

1.?工程結(jié)構(gòu)


2.?J2EE平臺(tái)

Java EE,Java平臺(tái)企業(yè)版(Java Platform Enterprise Edition),之前稱為Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名為Jakarta EE。是Sun公司為企業(yè)級(jí)應(yīng)用推出的標(biāo)準(zhǔn)平臺(tái)。Java平臺(tái)共分為三個(gè)主要版本Java EE、Java SE和Java ME。

Sun公司在1998年發(fā)表JDK1.2版本的時(shí)候,使用了新名稱Java 2 Platform,即“Java2平臺(tái)”,修改后的JDK稱為Java 2 Platform Software Developing Kit,即J2SDK。并分為標(biāo)準(zhǔn)版(Standard Edition,J2SE),企業(yè)版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此誕生。

2005年6月,JavaOne大會(huì)召開(kāi),SUN公司公開(kāi)Java SE 6。此時(shí),Java的各種版本已經(jīng)更名以取消其中的數(shù)字“2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。

隨著Java技術(shù)的發(fā)展,J2EE平臺(tái)得到了迅速的發(fā)展,成為Java語(yǔ)言中最活躍的體系之一?,F(xiàn)如今,J2EE不僅僅是指一種標(biāo)準(zhǔn)平臺(tái),它更多的表達(dá)著一種軟件架構(gòu)和設(shè)計(jì)思想。

?

2.1?J2EE平臺(tái)組件 ??

Java EE是一系列技術(shù)標(biāo)準(zhǔn)所組成的平臺(tái)(一系列規(guī)范),包括:

1.Applet - Java Applet

2.EJB - 企業(yè)級(jí)JavaBean(Enterprise Java Beans)

3.JAAS - Java Authentication and Authorization Service

4.JACC - J2EE Authorization Contract for Containers

5.JAF - Java Beans Activation Framework

6.JAX-RPC - Java API for XML-Based Remote Procedure Calls

7.JAX-WS - Java API for XML Web Services

8.JAXM - Java API for XML Messaging

9.JAXP - Java XML解析API(Java API for XML Processing)

10.JAXR - Java API for XML Registries

11.JCA - J2EE連接器架構(gòu)(J2EE Connector Architecture)

12.JDBC - Java數(shù)據(jù)庫(kù)聯(lián)接(Java Database Connectivity)

13.JMS - Java消息服務(wù)(Java Message Service)

14.JMX - Java Management

15.JNDI - Java名稱與目錄接口(Java Naming and Directory Interface)

16.JSF - Java Server Faces

17.JSP - Java服務(wù)器頁(yè)面(Java Server Pages)

18.JSTL - Java服務(wù)器頁(yè)面標(biāo)準(zhǔn)標(biāo)簽庫(kù)(Java Server Pages Standard Tag Library)

19.JTA - Java事務(wù)API(Java Transaction API)

20.JavaMail

21.Servlet - Java Servlet API

22.StAX - Streaming APIs for XML Parsers

23.WS - Web Services

3.?servlet

Servlet(Server Applet),全稱Java Servlet。是用Java編寫(xiě)的服務(wù)器端程序。其主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。狹義的Servlet是指Java語(yǔ)言實(shí)現(xiàn)的一個(gè)接口,廣義的Servlet是指任何實(shí)現(xiàn)了這個(gè)Servlet接口的類,一般情況下,人們將Servlet理解為后者。

Servlet運(yùn)行于支持Java的應(yīng)用服務(wù)器中。從實(shí)現(xiàn)上講,Servlet可以響應(yīng)任何類型的請(qǐng)求,但絕大多數(shù)情況下Servlet只用來(lái)擴(kuò)展基于HTTP協(xié)議的Web服務(wù)器。

最早支持Servlet標(biāo)準(zhǔn)的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web服務(wù)器開(kāi)始支持標(biāo)準(zhǔn)的Servlet。

3.1?Servlet的作用

Servlet是服務(wù)端的一個(gè)小程序,程序其作用只有2個(gè):

3.1.1?獲取客戶的請(qǐng)求信息

Servlet獲取客戶端的請(qǐng)求信息,基于ServletRequest對(duì)象,ServletRequest的子接口: HttpServletRequest。

HttpServletRequest這個(gè)接口包含:客戶端的請(qǐng)求參數(shù),客戶端的請(qǐng)求頭信息。

3.1.2?向客戶端做出響應(yīng)

Servlet向客戶端做出響應(yīng),基于ServletResponse對(duì)象,ServletResponse的子接口:HttpServletResponse。

HttpServletResponse這個(gè)接口:獲取輸出流(字節(jié)流,字符流),向客戶端返回響應(yīng)頭信息。

3.2?Servlet的使用方式

3.2.1?創(chuàng)建Servlet的3個(gè)步驟

步驟? ? ? ??

導(dǎo)入servlet-api.jar

在tomcat的lib文件夾下也有此jar包,開(kāi)發(fā)過(guò)程中為防止報(bào)錯(cuò)需要導(dǎo)入,實(shí)際運(yùn)行時(shí)需要移除此jar包避免版本沖突。

自定義類繼承HttpServlet? ? ? ? ? ? ? ? ? ? ? ?繼承后,重寫(xiě)doGet、doPost方法。

配置虛擬路徑? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??1)可以通過(guò)注解配置 ???2)通過(guò)xml形式配置

3.2.2?使用注解形式

JavaWeb開(kāi)發(fā)中,Servlet開(kāi)發(fā)配置相對(duì)繁瑣。在web3.0之后,提供一些簡(jiǎn)化web配置的數(shù)據(jù),@WebServlet就可以取代在web.xml中對(duì)servlet的配置。

3.2.3?使用xml形式

?向服務(wù)器注冊(cè)這個(gè)Servlet,servlet是要提供服務(wù)的

?1.聲明/定義servlet類

?2.servlet提供服務(wù)訪問(wèn)方式

3.2.4?兩種配置形式區(qū)別

平時(shí)開(kāi)發(fā)中能用注解形式則用注解形式。但如果類是第3方的,由于我們不能去修改第3方的源代碼,無(wú)法在類上添加注解,則使用xml形式最為合適。例如:后期SpringMVC框架中的核心類DispatcherServlet就是使用的xml形式作為配置。

3.2.5?通過(guò)Servlet輸出html標(biāo)簽等富文本信息

3.3?為什么使用tomcat加載類,而不是使用JDK自帶的加載器加載

JDK自帶的類加載器3個(gè),雙親委派.bootstrap類加載器,加載JDK核心類.Ext 擴(kuò)展類加載器,加載默認(rèn)ext目錄相關(guān)類.application類加載器加載當(dāng)前項(xiàng)目的類.雙親委派加載機(jī)制,避免重復(fù)加載,其次為了安全.因?yàn)殚_(kāi)發(fā)者可以自定義類的包名,如果定義一個(gè)與系統(tǒng)包名同名的類,自定義的類會(huì)覆蓋系統(tǒng)的類,可能到導(dǎo)致系統(tǒng)不安全.但是如果tomcat也使用雙親為加載機(jī)制加載,會(huì)導(dǎo)致如果多個(gè)web項(xiàng)目,其中類的名臣完全相同,但是實(shí)現(xiàn)不同就出現(xiàn)覆蓋.tomcat通過(guò)打破雙親委派加載機(jī)制,做到了類在應(yīng)用級(jí)別隔離.

3.4?Servlet的生命周期(重點(diǎn))

Servlet的生命周期,是指Servlet的實(shí)例的創(chuàng)建到到銷毀的過(guò)程。

代碼示例:

Tomcat服務(wù)器在加載servlet類時(shí),默認(rèn)是不會(huì)創(chuàng)建對(duì)象的.只有在servlet實(shí)際被使用時(shí),才會(huì)去創(chuàng)建對(duì)象,tomcat提供了init方法,供開(kāi)發(fā)者進(jìn)行對(duì)象屬性的設(shè)置,所以該方法被稱之為對(duì)象初始化方法.

每次訪問(wèn)時(shí),具體的訪問(wèn)業(yè)務(wù),tomcat會(huì)將訪問(wèn)的數(shù)據(jù)進(jìn)行封裝,封裝為HttpServletRequest對(duì)象和HttpServletResponse對(duì)象,然后調(diào)用service方法.

當(dāng)tomcat服務(wù)器停止時(shí),又會(huì)去調(diào)用destroy方法.開(kāi)發(fā)者,在這個(gè)方法中釋放資源,留遺書(shū).

init方法執(zhí)行一次,如果在配置中配置load-on-startup,則tomcat在啟動(dòng)時(shí)就會(huì)創(chuàng)建servlet對(duì)象,調(diào)用init方法.

service方法,會(huì)執(zhí)行多次,只有有請(qǐng)求就會(huì)執(zhí)行service方法.請(qǐng)求數(shù)據(jù)會(huì)被封裝到HttpServletRequest對(duì)象中,響應(yīng)數(shù)據(jù)會(huì)被封裝到HttpServletResponse對(duì)象中。

destroy,servlet對(duì)象銷毀方法,當(dāng)tomcat服務(wù)器停止時(shí)調(diào)用.可以釋放資源.

3.5?Servlet線程安全問(wèn)題

Servlet本質(zhì)是單例模式,如果存在多個(gè)并發(fā)請(qǐng)求,所有請(qǐng)求使用同一個(gè)對(duì)象,如果請(qǐng)求中使用了對(duì)象的成員變量,則可能出現(xiàn)數(shù)據(jù)不一致的情況,servlet是非線程安全的.

解決方案:

1.?不要在servlet使用成員變量.

2.?使用ThreadLocal,線程局部變量存儲(chǔ)當(dāng)前線程自己的數(shù)據(jù).

3.6?Servlet初始化參數(shù)配置

3.7?Servlet的Api

3.7.1?Servlet的請(qǐng)求Api

3.7.1.1?獲取請(qǐng)求行數(shù)據(jù)

3.7.1.2?請(qǐng)求頭數(shù)據(jù)

3.7.1.3?獲取網(wǎng)絡(luò)信息

3.7.1.4?請(qǐng)求參數(shù)

3.7.1.5?Servlet內(nèi)部轉(zhuǎn)發(fā)

Servlet內(nèi)部轉(zhuǎn)發(fā)是指當(dāng)前servlet將請(qǐng)求和響應(yīng)信息移交其他的servlet進(jìn)行處理.對(duì)于請(qǐng)求方而言,只需要請(qǐng)求一次,但是實(shí)際上經(jīng)歷多個(gè)具體servlet(具體次數(shù)要看實(shí)際的轉(zhuǎn)發(fā)次數(shù)).瀏覽器的URL地址不會(huì)發(fā)生變化,并且servlet之間可以進(jìn)行參數(shù)傳遞操作.

這種內(nèi)部轉(zhuǎn)發(fā)的方式,由于將請(qǐng)求對(duì)象進(jìn)行了傳遞,在實(shí)際開(kāi)發(fā)中使用的比較多的.但是又由于URL地址沒(méi)有發(fā)生變化,所以一旦瀏覽器進(jìn)行刷新操作,之前所有相關(guān)的程序會(huì)重新執(zhí)行.首先會(huì)導(dǎo)致無(wú)意義資源消耗,其次可能導(dǎo)致臟數(shù)據(jù).

能不使用內(nèi)部轉(zhuǎn)發(fā)就不要使用內(nèi)部轉(zhuǎn)發(fā).

3.7.2?Servlet的響應(yīng)Api

在servlet中,請(qǐng)求對(duì)象和響應(yīng)對(duì)象是成對(duì)出現(xiàn)的.哪怕沒(méi)有數(shù)據(jù)的響應(yīng)數(shù)據(jù),tomcat服務(wù)器會(huì)先為每一個(gè)請(qǐng)求對(duì)象創(chuàng)建相應(yīng)的響應(yīng)對(duì)象,只是響應(yīng)內(nèi)容默認(rèn)空的.在實(shí)際操作中,只需要向響應(yīng)對(duì)象中提供數(shù)據(jù)即可.

3.7.2.1?響應(yīng)對(duì)象的核心Api

HttpServletResponse核心api就是獲取輸出流.由于輸出的數(shù)據(jù)可能是字符串也可能是字節(jié).提供兩個(gè)方法,但是注意,兩個(gè)輸出流實(shí)際使用只能使用其中的一個(gè).

3.7.2.2?重定向和內(nèi)部轉(zhuǎn)發(fā)

3.7.2.3?向響應(yīng)頭添加數(shù)據(jù)

3.8?html與servlet相互跳轉(zhuǎn)總結(jié)

描述

html跳html

a標(biāo)簽、js(location.href=’xxx’)、form表單的action屬性

html跳servlet

a標(biāo)簽、js(location.href=’xxx’)、form表單的action屬性

servlet跳html

重定向:response.sendRedirect("/頁(yè)面路徑");

轉(zhuǎn)發(fā):request.getRequestDispatcher("/views/demo3.jsp").forward(request,response);

servlet跳servlet

推薦重定向

3.8.1?練習(xí)1

demo1.html---->點(diǎn)擊a標(biāo)簽----->demo2.html------>OneServlet------>TwoServlet----->demo3.html

3.8.2?練習(xí)2

demo1.html-------->不做任何點(diǎn)擊跳------->demo2.html------->點(diǎn)擊a標(biāo)簽------>demo3.html----->

不做任何點(diǎn)擊----->OneServlet---------->TwoServlet------->demo4.html----->點(diǎn)擊button按鈕---->跳demo1.html

?

3.9?用戶登錄案例

用戶在界面輸入用戶名和密碼,servlet接收用戶輸入的用戶名和密碼,與數(shù)據(jù)庫(kù)中的用戶信息進(jìn)行對(duì)比,如果用戶名和密碼都正確.跳轉(zhuǎn)到登錄成功頁(yè)面,否則返回登錄頁(yè)面.

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

前端界面:HTML.數(shù)據(jù)存儲(chǔ):mysql.訪問(wèn)數(shù)據(jù)庫(kù)使用JDBC.接收用戶數(shù)據(jù)使用servlet.

3.9.2?前期準(zhǔn)備

3.9.2.1?數(shù)據(jù)庫(kù)準(zhǔn)備

創(chuàng)建數(shù)據(jù)庫(kù)erp

創(chuàng)建用戶表user

?

3.9.3?導(dǎo)入相關(guān)jar包

mysql驅(qū)動(dòng)包

?


3.9.4?引入相關(guān)的工具類

3.9.4.1?數(shù)據(jù)庫(kù)配置文件

3.9.4.2?BaseDao

3.9.4.3?DButil

3.9.4.4?PageInfo

3.9.5?數(shù)據(jù)操作類-dao

3.9.5.1?UserDao

?

3.9.6?數(shù)據(jù)控制類-servlet

3.9.6.1?UserServlet


3.9.7?前端頁(yè)面

3.9.7.1?登錄頁(yè)面-index.html

?

3.9.7.2?登錄成功頁(yè)面-success.html

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

下期會(huì)分享

第七章節(jié)

servlet

第三篇章

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

下期見(jiàn)!


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

分享到微博請(qǐng)遵守國(guó)家法律
汤原县| 武鸣县| 怀集县| 来凤县| 大港区| 彰化县| 房山区| 九台市| 抚顺市| 余姚市| 翁牛特旗| 左云县| 河间市| 土默特左旗| 贺兰县| 桐梓县| 苗栗市| 松阳县| 磴口县| 沙雅县| 华阴市| 济源市| 望谟县| 林州市| 舞阳县| 宜丰县| 佛教| 留坝县| 张家界市| 花莲县| 乌海市| 六枝特区| 南康市| 禄劝| 赫章县| 开化县| 兴仁县| 宾川县| 金坛市| 水城县| 犍为县|