《Java軟件項(xiàng)目(BS架構(gòu))開發(fā)》4Servlet與歡迎頁面的實(shí)現(xiàn)_第1頁
《Java軟件項(xiàng)目(BS架構(gòu))開發(fā)》4Servlet與歡迎頁面的實(shí)現(xiàn)_第2頁
《Java軟件項(xiàng)目(BS架構(gòu))開發(fā)》4Servlet與歡迎頁面的實(shí)現(xiàn)_第3頁
《Java軟件項(xiàng)目(BS架構(gòu))開發(fā)》4Servlet與歡迎頁面的實(shí)現(xiàn)_第4頁
《Java軟件項(xiàng)目(BS架構(gòu))開發(fā)》4Servlet與歡迎頁面的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《Java軟件項(xiàng)目(BS架構(gòu))開發(fā)》4Servlet與歡迎頁面的實(shí)現(xiàn)第一頁,共29頁。學(xué)習(xí)目標(biāo)掌握定義Servlet的2種方法

如何將Servlet部署到Tomcat上

Servlet如何與客戶端交互,即Servlet如何獲得客戶端傳遞過來的參數(shù)和如何向?yàn)g覽器傳遞信息

如何在Servlet中引用(或加載)別的Servlet或JSP以及如何傳遞參數(shù)

如何在Servlet中調(diào)用別的Servlet或JSP以及如何傳遞參數(shù)

如何在Servlet中使用Cookie將信息保存在用戶的機(jī)器中

如何利用Servlet的生命周期特點(diǎn)使訪問頁面的計(jì)數(shù)器值連續(xù)

完成歡迎頁面

《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二頁,共29頁。歡迎頁面要求《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第三頁,共29頁?!皻g迎光臨聯(lián)合銀行”滾動(dòng)顯示實(shí)現(xiàn)一個(gè)顯示頁面被訪問次數(shù)的計(jì)數(shù)器HTML已經(jīng)無法實(shí)現(xiàn),需要使用動(dòng)態(tài)網(wǎng)頁技術(shù),如Servlet《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第四頁,共29頁。Servlet概述

運(yùn)行在服務(wù)器端的Web容器中的Java應(yīng)用程序

它響應(yīng)客戶端的請(qǐng)求,并把處理結(jié)果以HTML網(wǎng)頁的形式返回給客戶

Servlet可擴(kuò)展服務(wù)器的功能,如訪問數(shù)據(jù)庫《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第五頁,共29頁。Servlet的生命周期初始化階段處理客戶端請(qǐng)求階段

銷毀階段

《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第六頁,共29頁。使用Servlet的優(yōu)點(diǎn)Servlet只在第1次被請(qǐng)求執(zhí)行時(shí)才需要加載不需要?jiǎng)?chuàng)建不同的進(jìn)程來處理不同的

客戶請(qǐng)求由于Servlet就是Java程序,因此可以使用Java類庫編寫具有各種功能的Servlet平臺(tái)無關(guān)《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第七頁,共29頁。下載并安裝Tomcat首先要從SUN公司下載并安裝JDK設(shè)置環(huán)境變量JAVA_HOME=JDK的安裝目錄去Tomcat的官方網(wǎng)站或其他提供Tomcat下載的網(wǎng)址下載,可能是一個(gè)安裝包或壓縮包安裝或解壓即可《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第八頁,共29頁。ServletAPI在標(biāo)準(zhǔn)版的JDK中不包含ServletAPI可以使用J2SDKEE中的j2ee.jar或Tomcat的common\lib\servlet-api.jar都包含ServletAPI的包javax.servlet和javax.servlet.http《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第九頁,共29頁。使用ServletAPI編寫Servlet編寫Servlet小應(yīng)用程序要用到ServletAPI,ServletAPI由2個(gè)Java包javax.servlet和javax.servlet.http組成。編寫Servlet有2種方法:通過繼承javax.servlet.GenericServlet類

通過繼承javax.servlet.http.HttpServlet類

《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十頁,共29頁。繼承GenericServlet定義一個(gè)新的Servlet類

重寫service()方法定義Servlet的功能案例4-1:顯示“你好”。在Service方法中通過調(diào)用參數(shù)response的方法setContentType設(shè)置返回的頁面的內(nèi)容類型和字符編碼,處理中文顯示亂碼調(diào)用response的方法getWriter獲得發(fā)送數(shù)據(jù)的輸出流對(duì)象,然后用該對(duì)象的println方法向?yàn)g覽器發(fā)送信息《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十一頁,共29頁。packagech4.servlet;importjavax.servlet.*;//importjavax.servlet.http.*;importjava.io.*;publicclassHelloWorldServletextendsGenericServlet{

publicvoidservice(ServletRequestrequest,ServletResponseresponse)throwsIOException

{ response.setContentType("text/html;charset=GB2312"); PrintWriterout=response.getWriter(); out.println("<html>"); out.println("<head><title>helloWorldServlet</title></head>"); out.println("<body>"); out.println("你好!"); out.println("</body>"); out.println("</html>"); }}《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十二頁,共29頁。將Servlet部署到Tomcat上對(duì)于Tomcat,需要手工部署:編譯生成Servlet的字節(jié)碼文件將字節(jié)碼文件復(fù)制到TOMCAT_HOME\webapps下的對(duì)應(yīng)某個(gè)應(yīng)用程序的目錄(如test2)的子目錄WEB-INF\classes目錄或其子目錄(如TOMCAT_HOME\webapps\test2\WEB-INF\

classes\ch4\servlet)中修改WEB-INF下的web.xml文件,見教材86頁,注意<servlet-class>ch4.servlet.HelloWorldServlet</servlet-class>《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十三頁,共29頁。<servlet>與</servlet>部分定義一個(gè)新的Servlet,其中<servlet-name>段指定這個(gè)servlet的名字,注意<servlet-class>段指定這個(gè)servlet對(duì)應(yīng)的類,由于這個(gè)類屬于包c(diǎn)h4.servlet,所以要給出包名<servlet-mapping>與</servlet-mapping>部分定義servlet在URL中出現(xiàn)的名字《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十四頁,共29頁。調(diào)用Servlet的2種方式在瀏覽器的地址欄中輸入Servlet的URL在表單(Form)的屬性Action中指定Servlet的URL<FORMaction=>….《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十五頁,共29頁。問題用戶在頁面上輸入姓名,如王紅,服務(wù)器端的Servlet會(huì)針對(duì)這個(gè)姓名返回一個(gè)歡迎信息,如“歡迎你,王紅!”用戶的輸入是不確定的,不能用靜態(tài)頁面完成。需要服務(wù)器端的程序,如某Servlet。程序設(shè)計(jì)需要?jiǎng)澐止δ埽耗牟糠钟渺o態(tài)網(wǎng)頁,哪部分用Servlet,它們之間如何通信(即建立關(guān)聯(lián)或聯(lián)系?如何指定服務(wù)器端的程序?服務(wù)器端程序,如某Servlet,如何獲得用戶的輸入?如何向客戶端瀏覽器返回信息?《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十六頁,共29頁。通過繼承HttpServlet定義一個(gè)新的Servlet類

重寫doGet()或者doPost()方法定義Servlet的功能案例4-2:用戶在頁面上輸入姓名,服務(wù)器端的Servlet會(huì)針對(duì)這個(gè)姓名返回一個(gè)歡迎信息。請(qǐng)求采用GET方式發(fā)送到服務(wù)器端重寫doGet()方法定義Servlet的功能通過doGet()的參數(shù)request可以獲得來自瀏覽器的相關(guān)請(qǐng)求信息,如用戶在表單中的輸入,設(shè)置頁面請(qǐng)求的字符編碼以保證正確解碼通過參數(shù)response設(shè)置送回到瀏覽器的相關(guān)信息,如設(shè)置返回頁面類型和字符編碼并獲得發(fā)送數(shù)據(jù)的輸出流對(duì)象《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十七頁,共29頁。案例4-3:功能同4-2,只是請(qǐng)求采用POST方式發(fā)送到服務(wù)器端,Servlet重寫doPost()方法定義Servlet的功能《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十八頁,共29頁。練習(xí)實(shí)現(xiàn)一個(gè)名為emailServlet的Servlet,可以接受用戶輸入的email地址并顯示:你輸入的郵箱地址是:XXXXXXXXXX用HTML實(shí)現(xiàn)一個(gè)email地址錄入界面,當(dāng)用戶提交后將調(diào)用emailServlet顯示用戶輸入的信息?!禞ava軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第十九頁,共29頁。顯示用戶前一次用同一臺(tái)機(jī)器登錄服務(wù)器的時(shí)間使用cookie技術(shù),將登錄服務(wù)器的時(shí)間保存到用戶的硬盤上,用戶下一次調(diào)用時(shí)就從用戶的硬盤上讀出來并顯示《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十頁,共29頁。在Servlet中使用cookieServletAPI中的Cookie類提供了很多方法處理cookieHttpServletRequest的getCookies()方法可以獲得存儲(chǔ)在客戶計(jì)算機(jī)上的cookieHttpServletResponse的addCookie方法,可以將cookie的數(shù)據(jù)和HTTP響應(yīng)一起發(fā)送給客戶HttpServlet的service、doGet和doPost方法的2個(gè)參數(shù)的類型分別是HttpServletRequest和HttpServletResponse《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十一頁,共29頁。讀出已經(jīng)存在的cookieCookie[]cookies=request.getCookies();for(inti=0;i<cookies.length;i++){Cookiec=cookies[i];Stringname=c.getName();Stringvalue=c.getValue();out.println(name+"="+value);}《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十二頁,共29頁。生成并設(shè)置一個(gè)cookieCookiec=newCookie(name,value);c.setMaxAge(LastSecond);response.addCookie(c);《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十三頁,共29頁。案例4-4定義一個(gè)Servlet顯示用戶前一次用同一臺(tái)機(jī)器登錄服務(wù)器的時(shí)間《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十四頁,共29頁。顯示生命周期的Servlet在Servlet的生命周期中,有幾個(gè)重要的方法:init()方法只在第1次請(qǐng)求時(shí)調(diào)用每次請(qǐng)求都會(huì)調(diào)用service()方法,service()方法根據(jù)請(qǐng)求是GET還是POST調(diào)用doGet()或doPost()方法destroy()方法只在servlet被銷毀時(shí)才調(diào)用

案例4-5:重寫init()方法,將計(jì)數(shù)器的值清0重寫doGet()方法,將計(jì)數(shù)器的值加1通過計(jì)數(shù)器的值的變化來說明Servlet的方法的調(diào)用情況《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十五頁,共29頁。案例4-6:計(jì)數(shù)連續(xù)的Servlet重寫init()方法,從文件中讀出計(jì)數(shù)值重寫doGet()方法,將計(jì)數(shù)器的值加1重寫destroy()方法,將計(jì)數(shù)值保存到文件中可以將計(jì)數(shù)值保存到數(shù)據(jù)庫中《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十六頁,共29頁。從Servlet中引用其他文件用被引用文件的URL作為參數(shù)調(diào)用request的getRequestDispatcher()方法來獲得request調(diào)度程序?qū)ο?/p>

調(diào)度程序?qū)ο蟮膇nclude()方法將資源引入并且傳遞參數(shù)案例4-7:讓用戶在輸入界面上選中一個(gè)客戶端技術(shù),然后提交給服務(wù)器端的Servlet處理,Servlet會(huì)引用一個(gè)JSP文件顯示部分信息

RequestDispatcherdispatcher=request.getRequestDispatcher("include.jsp");dispatcher.include(request,response);《Java軟件項(xiàng)目(B/S架構(gòu))開發(fā)》覃國蓉第二十七頁,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論