《Java Web開(kāi)發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第5章 Java Servlet基礎(chǔ)_第1頁(yè)
《Java Web開(kāi)發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第5章 Java Servlet基礎(chǔ)_第2頁(yè)
《Java Web開(kāi)發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第5章 Java Servlet基礎(chǔ)_第3頁(yè)
《Java Web開(kāi)發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第5章 Java Servlet基礎(chǔ)_第4頁(yè)
《Java Web開(kāi)發(fā)從入門到實(shí)戰(zhàn)(IntelliJ IDEA版·微課視頻版)》 課件 第5章 Java Servlet基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章JavaServlet基礎(chǔ)學(xué)習(xí)目的與要求本章主要介紹Java

Servlet的基礎(chǔ)知識(shí),包括部署Servlet、Servlet的生命周期、JSP頁(yè)面如何訪問(wèn)Servlet、重定向與轉(zhuǎn)發(fā)等。通過(guò)本章的學(xué)習(xí),熟練掌握Servlet對(duì)象的創(chuàng)建與運(yùn)行,理解Servlet的生命周期與工作原理?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.1Servlet類與Servlet對(duì)象編寫一個(gè)Servlet類很簡(jiǎn)單,只要繼承jakarta.servlet.http包中的HttpServlet類,并重寫響應(yīng)HTTP請(qǐng)求的方法即可。HttpServlet類實(shí)現(xiàn)了Servlet接口,實(shí)現(xiàn)了響應(yīng)用戶請(qǐng)求的接口方法。HttpServlet類的一個(gè)子類習(xí)慣地稱為一個(gè)Servlet類,這樣的子類創(chuàng)建的對(duì)象又習(xí)慣地稱為servlet對(duì)象?!纠?-1】一個(gè)簡(jiǎn)單的Servlet類?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行要想讓W(xué)eb服務(wù)器使用Servlet類編譯后的字節(jié)碼文件創(chuàng)建Servlet對(duì)象處理用戶請(qǐng)求,必須先為Web服務(wù)器部署Servlet。部署Servlet,目前有兩種方式:一是在web.xml中部署Servlet;一是基于注解的方式部署Servlet?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.2.1在web.xml中部署Servletweb.xml文件由Web服務(wù)器負(fù)責(zé)管理,該文件是Web應(yīng)用的部署描述文件,包含如何將用戶請(qǐng)求URL映射到Servlet。因此,可以在Web項(xiàng)目的web\WEB-INF\web.xml文件中,部署自己的Servlet。<servlet> <servlet-name>firstServlet</servlet-name> <servlet-class>servlet.FirstServlet</servlet-class></servlet><servlet-mapping> <servlet-name>firstServlet</servlet-name> <url-pattern>/firstServlet</url-pattern></servlet-mapping>《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.2.2基于注解的方式部署Servlet從5.2.1節(jié)可知,每開(kāi)發(fā)一個(gè)Servlet,都要在web.xml文件中部署Servlet才能夠使用。這樣會(huì)給Web工程的維護(hù)帶來(lái)非常大的麻煩。從Servlet3.0開(kāi)始提供了注解@WebServlet,使得不再需要在web.xml文件中進(jìn)行Servlet的部署描述,簡(jiǎn)化開(kāi)發(fā)流程。本書(shū)中后續(xù)的Servlet都是基于注解的方式部署。注解雖然方便了開(kāi)發(fā)人員,但在后期會(huì)讓維護(hù)和調(diào)試成本增加。為方便后期維護(hù),建議開(kāi)發(fā)人員部署Servlet時(shí)把@WebServlet的屬性u(píng)rlPatterns的值設(shè)置為Servlet類的名字。例如:@WebServlet(name="secondServlet",urlPatterns={"/secondServlet"})publicclassSecondServletextendsHttpServlet{}《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

1.@WebServlet@WebServlet用于將一個(gè)類聲明為Servlet對(duì)象,該注解將會(huì)在部署時(shí)被Web容器處理,Web容器根據(jù)具體屬性將相應(yīng)的類部署為Servlet對(duì)象。《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

屬性名類

型描

述nameString指定Servlet的name屬性,等價(jià)于<servlet-name>。如果沒(méi)有顯式指定,則該Servlet的取值即為類的全名。valueString[]該屬性等價(jià)于urlPatterns屬性。兩個(gè)屬性不能同時(shí)使用。urlPatternsString[]指定一組Servlet的URL匹配模式。等價(jià)于<url-pattern>標(biāo)簽。loadOnStartupint指定Servlet的加載順序,等價(jià)于<load-on-startup>標(biāo)簽。initParamsWebInitParam[]指定一組Servlet初始化參數(shù),等價(jià)于<init-param>標(biāo)簽。以上所有屬性均為可選屬性,但是vlaue或者urlPatterns通常是必需的,且二者不能共存,如果同時(shí)指定,通常是忽略value的取值??墒褂煤?jiǎn)化注解,如@WebServlet("/secondServlet"),其中“/secondServlet”為請(qǐng)求的URL,即urlPatterns屬性值。【例5-2】基于注解的Servlet類——SecondServlet。2.@WebInitParam@WebInitParam注解通常不單獨(dú)使用,而是配合@WebServlet和@WebFilter(第6章講解)使用。它的作用是為Servlet或Filter指定初始化參數(shù),這等價(jià)于web.xml中<servlet>的<init-param>子標(biāo)簽。《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

屬性名類

型是否可選描

述nameString否指定參數(shù)的名字,等價(jià)于<param-name>。valueString否指定參數(shù)的值,等價(jià)于<param-value>。@WebServlet(name="thirdServlet",urlPatterns={"/thirdServlet"},initParams={@WebInitParam(name="firstParam",value="one"),@WebInitParam(name="secondParam",value="two")})5.2.3實(shí)踐環(huán)節(jié)——@WebServlet的應(yīng)用首先,將web.xml文件中有關(guān)Servlet的部署代碼刪除,然后使用注解的方式部署例5-1的Servlet,并運(yùn)行部署后的Servlet。《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.3Servlet的生命周期1.初始化Servlet對(duì)象當(dāng)Servlet對(duì)象第一次被請(qǐng)求加載時(shí),服務(wù)器會(huì)創(chuàng)建一個(gè)Servlet對(duì)象,該Servlet對(duì)象調(diào)用init()方法完成必要的初始化工作。2.service方法響應(yīng)請(qǐng)求創(chuàng)建的Servlet對(duì)象再調(diào)用service方法響應(yīng)客戶的請(qǐng)求。3.Servlet對(duì)象死亡當(dāng)服務(wù)器關(guān)閉時(shí),Servlet對(duì)象調(diào)用destroy()方法使自己消亡。從上面三個(gè)過(guò)程來(lái)看,init()方法只能被調(diào)用一次,即在Servlet第一次被請(qǐng)求加載時(shí)調(diào)用該方法。當(dāng)客戶端請(qǐng)求Servlet服務(wù)時(shí),服務(wù)器將啟動(dòng)一個(gè)新的線程,在該線程中,Servlet對(duì)象調(diào)用service()方法響應(yīng)客戶端的請(qǐng)求。那么多客戶端請(qǐng)求Servlet服務(wù)時(shí),服務(wù)器會(huì)怎么辦呢?服務(wù)器會(huì)為每個(gè)客戶端啟動(dòng)一個(gè)新的線程,在每個(gè)線程中,Servlet對(duì)象調(diào)用service()方法響應(yīng)客戶端的請(qǐng)求。也就是說(shuō),每個(gè)客戶端請(qǐng)求都會(huì)導(dǎo)致service()方法被調(diào)用執(zhí)行,分別運(yùn)行在不同的線程中?!纠?-3】Servlet接口的init()、service()和destroy()方法?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet可以通過(guò)JSP頁(yè)面的表單或超鏈接請(qǐng)求某個(gè)Servlet。通過(guò)JSP頁(yè)面訪問(wèn)Servlet的好處是,JSP頁(yè)面負(fù)責(zé)頁(yè)面的靜態(tài)信息處理,動(dòng)態(tài)信息處理由Servlet完成。1.通過(guò)表單訪問(wèn)Servlet假設(shè)在JSP頁(yè)面中,有如下表單:<formaction="isLogin"method="post">……</form>那么該表單的處理程序(action)就是一個(gè)Servlet,為該Servlet部署時(shí),@WebServlet

的urlPatterns屬性值為“{"/isLogin"}”。《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet2.通過(guò)超鏈接訪問(wèn)Servlet在JSP頁(yè)面中,可以單擊超鏈接,訪問(wèn)Servlet對(duì)象,同時(shí)也可以通過(guò)超鏈接向Servlet提交信息,例如,<ahref="loginServlet?user=taipingle&&pwd=zhenzuile">查看用戶名和密碼</a>,“查看用戶名和密碼”這個(gè)超鏈接就將user=taipingle和pwd=zhenzuile兩個(gè)信息提交給Servlet處理?!纠?-4】編寫JSP頁(yè)面login.jsp,在該頁(yè)面中通過(guò)表單向urlPatterns為“{"/loginServlet"}”的Servlet(由LoginServlet類負(fù)責(zé)創(chuàng)建)提交用戶名和密碼,Servlet負(fù)責(zé)判斷輸入的用戶名和密碼是否正確,并把判斷結(jié)果返回?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.5doGet()和doPost()方法當(dāng)服務(wù)器接收到一個(gè)Servlet請(qǐng)求時(shí),就會(huì)產(chǎn)生一個(gè)新線程,在這個(gè)線程中讓Servlet對(duì)象調(diào)用service()方法為請(qǐng)求作出響應(yīng)。service()方法首先檢查HTTP請(qǐng)求類型(get或post),并在service()方法中根據(jù)用戶的請(qǐng)求方式,對(duì)應(yīng)地再調(diào)用doGet()或doPost()方法。HTTP請(qǐng)求類型為get方式時(shí),service()方法調(diào)用doGet()方法響應(yīng)用戶請(qǐng)求;HTTP請(qǐng)求類型為post方式時(shí),service()方法調(diào)用doPost()方法響應(yīng)用戶請(qǐng)求。因此,在Servlet類中,沒(méi)有必要重寫service()方法,直接繼承即可。在Servlet類中重寫doGet()或doPost()方法來(lái)響應(yīng)用戶的請(qǐng)求,這樣可以增加響應(yīng)的靈活性,同時(shí)減輕服務(wù)器的負(fù)擔(dān)?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.5doGet()和doPost()方法【例5-5】編寫JSP頁(yè)面inputLader.jsp,在該頁(yè)面中使用表單向urlPatterns為“{"/getLengthOrAreaServlet"}”的Servlet提交矩形的長(zhǎng)與寬。Servlet(由GetLengthOrAreaServlet負(fù)責(zé)創(chuàng)建)處理手段依賴表單提交數(shù)據(jù)的方式,當(dāng)提交方式為get時(shí),Servlet計(jì)算矩形的周長(zhǎng),當(dāng)提交方式為post時(shí),Servlet計(jì)算矩形的面積?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.6重定向與轉(zhuǎn)發(fā)重定向是將用戶從當(dāng)前JSP頁(yè)面或Servlet定向到另一個(gè)JSP頁(yè)面或Servlet,以前的request中存放的信息全部失效,并進(jìn)入一個(gè)新的request作用域;轉(zhuǎn)發(fā)是將用戶對(duì)當(dāng)前JSP頁(yè)面或Servlet的請(qǐng)求轉(zhuǎn)發(fā)給另一個(gè)JSP頁(yè)面或Servlet,以前的request中存放的信息不會(huì)失效?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.6.1重定向在Servlet中通過(guò)調(diào)用HttpServletResponse類中的方法sendRedirect(String

location)來(lái)實(shí)現(xiàn)重定向,重定向的目標(biāo)頁(yè)面或Servlet(由參數(shù)location指定),無(wú)法從以前的request對(duì)象中獲取用戶提交的數(shù)據(jù)。《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.6.2轉(zhuǎn)發(fā)jakarta.servlet.RequestDispatcher對(duì)象可以將用戶對(duì)當(dāng)前JSP頁(yè)面或Servlet的請(qǐng)求轉(zhuǎn)發(fā)給另一個(gè)JSP頁(yè)面或Servlet。實(shí)現(xiàn)轉(zhuǎn)發(fā)需要兩個(gè)步驟:1.獲得RequestDispatcher對(duì)象在當(dāng)前JSP頁(yè)面或Servlet中,使用request對(duì)象調(diào)用publicRequestDispatchergetRequestDispatcher(Stringurl)方法返回一個(gè)RequestDispatcher對(duì)象,其中參數(shù)url就是要轉(zhuǎn)發(fā)的JSP頁(yè)面或Servlet的地址,例如:

RequestDispatcher

dis=request.getRequestDispatcher("dologin");2.RequestDispatcher對(duì)象調(diào)用forward()方法實(shí)現(xiàn)轉(zhuǎn)發(fā)獲得RequestDispatcher對(duì)象之后,就可以使用該對(duì)象調(diào)用publicvoidforward(ServletRequestrequest,ServletResponseresponse)方法將用戶對(duì)當(dāng)前JSP頁(yè)面或Servlet的請(qǐng)求轉(zhuǎn)發(fā)給RequestDispatcher對(duì)象所指定的JSP頁(yè)面或Servlet。例如:

dis.forward(request,response);《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

重定向與轉(zhuǎn)發(fā)示例【例5-6】編寫JSP頁(yè)面redirectForward.jsp,在該JSP頁(yè)面中通過(guò)表單向urlPatterns為“{"/redirectForwardServlet"}”的Servlet(由RedirectForwardServlet負(fù)責(zé)創(chuàng)建)提交用戶名和密碼。如果用戶輸入的數(shù)據(jù)不完整,redirectForwardServlet將用戶重定向到redirectForward.jsp頁(yè)面;如果用戶輸入的數(shù)據(jù)完整,redirectForwardServlet將用戶對(duì)redirectForward.jsp頁(yè)面的請(qǐng)求轉(zhuǎn)發(fā)給urlPatterns為“{"/showServlet"}”的Servlet(由ShowServlet負(fù)責(zé)創(chuàng)建),showServlet顯示用戶輸入的信息。《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.6.3實(shí)踐環(huán)節(jié)——登錄驗(yàn)證編寫登錄頁(yè)面login_1.jsp,在該JSP頁(yè)面中通過(guò)表單向urlPatterns為“{"/loginServlet_1"}”的Servlet(由LoginServlet_1類負(fù)責(zé)創(chuàng)建)提交用戶名和密碼。如果用戶輸入的數(shù)據(jù)不完整,loginServlet_1將用戶重定向到login_1.jsp頁(yè)面;如果用戶輸入的數(shù)據(jù)完整并正確(用戶名“zhangsan”,密碼“123”),loginServlet_1將用戶的請(qǐng)求轉(zhuǎn)發(fā)給loginSuccess_1.jsp頁(yè)面,loginSuccess_1.jsp頁(yè)面顯示用戶輸入的信息?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.7在JavaServlet中使用session在Servlet中獲得當(dāng)前請(qǐng)求的會(huì)話對(duì)象可通過(guò)調(diào)用HttpServletRequest的getSession()方法實(shí)現(xiàn),例如:HttpSession

session

=request.getSession(true);//若存在會(huì)話則返回該會(huì)話,否則新建一個(gè)會(huì)話。或HttpSessionsession=request.getSession(false);//若存在會(huì)話則返回該會(huì)話,否則返回null。經(jīng)常情況下,通過(guò)第一種方式獲得session,即指定getSession()的參數(shù)為true。缺省參數(shù)為true,即request.getSession(true)等同于request.getSession()?!纠?-7】編寫JSP頁(yè)面useSession.jsp,在該頁(yè)面中通過(guò)表單向名為useSession的Servlet對(duì)象(由UseSessionServlet類負(fù)責(zé)創(chuàng)建)提交用戶名,useSession將用戶名存入用戶的session對(duì)象中,然后用戶請(qǐng)求另一個(gè)Servlet對(duì)象showName(由ShowNameServlet類負(fù)責(zé)創(chuàng)建),showName從用戶的session對(duì)象中取出存儲(chǔ)的用戶名,并顯示在瀏覽器中?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

目錄《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.1Servlet類與Servlet對(duì)象5.2Servlet對(duì)象的創(chuàng)建與運(yùn)行5.3Servlet的生命周期5.4通過(guò)JSP頁(yè)面訪問(wèn)Servlet5.5doGet()和doPost()方法5.6重定向與轉(zhuǎn)發(fā)5.7在JavaServlet中使用session5.8基于Servlet的MVC模式5.8.1MVC模式MVC是Model、View、Controller的縮寫,分別代表Web應(yīng)用程序中的三種職責(zé): 模型——用于存儲(chǔ)數(shù)據(jù)以及處理用戶請(qǐng)求的業(yè)務(wù)邏輯。 視圖——向控制器提交數(shù)據(jù),顯示模型中的數(shù)據(jù)。 控制器——根據(jù)視圖提出的請(qǐng)求,判斷將請(qǐng)求和數(shù)據(jù)交給哪個(gè)模型處理,處理后的有關(guān)結(jié)果交給哪個(gè)視圖更新顯示?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

2.基于Servlet的MVC模式基于Servlet的MVC模式的具體實(shí)現(xiàn)如下: 模型:一個(gè)或多個(gè)JavaBean對(duì)象,用于存儲(chǔ)數(shù)據(jù)(實(shí)體模型,由JavaBean類創(chuàng)建)和處理業(yè)務(wù)邏輯(業(yè)務(wù)模型,由一般的Java類創(chuàng)建)。 視圖:一個(gè)或多個(gè)JSP頁(yè)面,向控制器提交數(shù)據(jù)和為模型提供數(shù)據(jù)顯示,JSP頁(yè)面主要使用HTML標(biāo)記和JavaBean標(biāo)記來(lái)顯示數(shù)據(jù)。 控制器:一個(gè)或多個(gè)Servlet對(duì)象,根據(jù)視圖提交的請(qǐng)求進(jìn)行控制,即將請(qǐng)求轉(zhuǎn)發(fā)給處理業(yè)務(wù)邏輯的JavaBean,并將處理結(jié)果存放到實(shí)體模型JavaBean中,輸出給視圖顯示?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

瀏覽器Web服務(wù)器HTMLJSP(視圖)Servlet(控制器)JavaBean(模型)數(shù)據(jù)庫(kù)請(qǐng)求響應(yīng)請(qǐng)求顯示數(shù)據(jù)存儲(chǔ)數(shù)據(jù)處理數(shù)據(jù)圖5.6JSP中的MVC模式5.8.2使用JSP、Servlet、JavaBean實(shí)現(xiàn)MVC【例5-8】使用MVC模式實(shí)現(xiàn)簡(jiǎn)單的用戶登錄驗(yàn)證程序,其中包括實(shí)體模型User、業(yè)務(wù)模型UserCheck、控制器LoginCheckServlet和兩個(gè)視圖頁(yè)面,即登錄頁(yè)面和登錄成功頁(yè)面?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

5.8.3模型周期在基于Servlet的MVC模式中,控制器Servlet創(chuàng)建的實(shí)體模型JavaBean也涉及到生命周期,生命周期分別為request、session和application?!禞avaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

request周期的模型(1)創(chuàng)建模型并把數(shù)據(jù)保存到模型中Useruser=newUser();//實(shí)例化模型useruser.setName(name);//把數(shù)據(jù)存在模型user中user.setPwd(pwd);//把數(shù)據(jù)存在模型user中(2)將模型保存到request對(duì)象中并轉(zhuǎn)發(fā)給視圖JSPrequest.setAttribute("user",user);//把裝有數(shù)據(jù)的模型user輸出給視圖loginSuccess.jsp頁(yè)面RequestDispatcherdis=request.getRequestDispatcher("loginSuccess.jsp");dis.forward(request,response);(3)視圖更新<jsp:useBeanid="user"type="dto.User"scope="request"/><jsp:getPropertyproperty="name"name="user"/>《JavaWeb開(kāi)發(fā)從入門到實(shí)戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒

主編,清華大學(xué)出版社,2024

session周期的模型(1)創(chuàng)建模型并把數(shù)據(jù)保存到模型中Useruser=newUser();//實(shí)例化模型useruser.setName(name);//把數(shù)據(jù)存在模型user中user.setPwd(pwd);//把數(shù)據(jù)存在模型user中(2)將模型保存到session對(duì)象中并轉(zhuǎn)發(fā)給視圖JSPsession.setAttribute("user",user);//把裝有數(shù)據(jù)的模型user輸出給視圖loginSuccess.jsp頁(yè)面RequestDispatcherdis=request.getRequest

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論