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

下載本文檔

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

文檔簡介

1、Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,第4章 Servlet與歡迎頁面的實現(xiàn),Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,學(xué)習(xí)目標,掌握 定義Servlet的2種方法 如何將Servlet部署到Tomcat上 Servlet如何與客戶端交互,即Servlet如何獲得客戶端傳遞過來的參數(shù)和如何向瀏覽器傳遞信息 如何在Servlet中引用(或加載)別的Servlet或JSP以及如何傳遞參數(shù) 如何在Servlet中調(diào)用別的Servlet或JSP以及如何傳遞參數(shù) 如何在Servlet中使用Cookie將信息保存在用戶的機器中 如何利用Servlet的生命周期特點使訪問頁面的計數(shù)器值連續(xù) 完成 歡

2、迎頁面,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,歡迎頁面要求,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,“歡迎光臨聯(lián)合銀行”滾動顯示 實現(xiàn)一個顯示頁面被訪問次數(shù)的計數(shù)器 HTML已經(jīng)無法實現(xiàn),需要使用動態(tài)網(wǎng)頁技術(shù),如Servlet,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,Servlet概述,運行在服務(wù)器端的Web容器中的Java應(yīng)用程序 它響應(yīng)客戶端的請求,并把處理結(jié)果以HTML網(wǎng)頁的形式返回給客戶 Servlet可擴展服務(wù)器的功能,如訪問數(shù)據(jù)庫,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,Servlet的生命周期,初始化階段 處理客戶端請求階段 銷毀階段,Java軟件項目(B/S架

3、構(gòu))開發(fā) 覃國蓉,使用Servlet的優(yōu)點,Servlet只在第1次被請求執(zhí)行時才需要加載 不需要創(chuàng)建不同的進程來處理不同的 客戶請求 由于Servlet就是Java程序,因此可以使用Java類庫編寫具有各種功能的Servlet 平臺無關(guān),Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,下載并安裝Tomcat,首先要從SUN 公司下載并安裝JDK 設(shè)置環(huán)境變量JAVA_HOME=JDK的安裝目錄 去Tomcat的官方網(wǎng)站或其他提供Tomcat下載的網(wǎng)址下載,可能是一個安裝包或壓縮包 安裝或解壓即可,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,Servlet API,在標準版的JDK中不包含Serv

4、let API 可以使用J2SDKEE中的j2ee.jar或Tomcat的commonlibservlet-api.jar都包含Servlet API的包javax.servlet和javax.servlet.http,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,使用Servlet API編寫Servlet,編寫Servlet小應(yīng)用程序要用到Servlet API,Servlet API由2個Java包javax.servlet和javax.servlet.http組成。 編寫 Servlet有2種方法: 通過繼承javax.servlet.GenericServlet類 通過繼承javax.

5、servlet.http.HttpServlet類,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,繼承GenericServlet定義一個新的Servlet類,重寫service() 方法定義Servlet的功能 案例4-1:顯示“你好”。在Service方法中 通過調(diào)用參數(shù)response 的方法setContentType設(shè)置返回的頁面的內(nèi)容類型和字符編碼,處理中文顯示亂碼 調(diào)用response 的方法getWriter獲得發(fā)送數(shù)據(jù)的輸出流對象,然后用該對象的println方法向瀏覽器發(fā)送信息,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,package ch4.servlet; import

6、 javax.servlet.*; /import javax.servlet.http.*; import java.io.*; public class HelloWorldServlet extends GenericServlet public void service(ServletRequest request,ServletResponse response) throws IOException response.setContentType(text/html;charset=GB2312); PrintWriter out=response.getWriter(); out

7、.println(); out.println(helloWorldServlet); out.println(); out.println(你好!); out.println(); out.println(); ,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,將Servlet部署到Tomcat上,對于Tomcat,需要手工部署: 編譯生成Servlet的字節(jié)碼文件 將字節(jié)碼文件復(fù)制到TOMCAT_HOMEwebapps下的對應(yīng)某個應(yīng)用程序的目錄(如test2)的子目錄 WEB-INFclasses目錄或其子目錄 (如TOMCAT_HOMEwebapps test2WEB-INFclassesc

8、h4servlet )中 修改WEB-INF下的web.xml文件,見教材86頁,注意 ch4.servlet.HelloWorldServlet ,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,與部分定義一個新的Servlet,其中段指定這個servlet的名字,注意段指定這個servlet對應(yīng)的類,由于這個類屬于包ch4.servlet,所以要給出包名 與部分定義servlet在URL中出現(xiàn)的名字,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,調(diào)用Servlet的2種方式,在瀏覽器的地址欄中輸入Servlet的URL http:/localhost:8080/test2/HelloWorldS

9、ervlet 在表單(Form)的屬性Action中指定Servlet的URL .,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,問題,用戶在頁面上輸入姓名,如王紅,服務(wù)器端的Servlet會針對這個姓名返回一個歡迎信息,如“歡迎你,王紅!” 用戶的輸入是不確定的,不能用靜態(tài)頁面完成。需要服務(wù)器端的程序,如某Servlet。程序設(shè)計需要劃分功能:哪部分用靜態(tài)網(wǎng)頁,哪部分用Servlet,它們之間如何通信(即建立關(guān)聯(lián)或聯(lián)系? 如何指定服務(wù)器端的程序? 服務(wù)器端程序,如某Servlet ,如何獲得用戶的輸入?如何向客戶端瀏覽器返回信息?,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,通過繼承HttpS

10、ervlet定義一個新的Servlet類,重寫doGet()或者doPost()方法定義Servlet的功能 案例4-2 :用戶在頁面上輸入姓名,服務(wù)器端的Servlet會針對這個姓名返回一個歡迎信息。 請求采用GET方式發(fā)送到服務(wù)器端 重寫doGet()方法定義Servlet的功能 通過doGet() 的參數(shù)request可以獲得來自瀏覽器的相關(guān)請求信息 ,如用戶在表單中的輸入,設(shè)置頁面請求的字符編碼以保證正確解碼 通過參數(shù)response設(shè)置送回到瀏覽器的相關(guān)信息,如設(shè)置返回頁面類型和字符編碼并獲得發(fā)送數(shù)據(jù)的輸出流對象,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,案例4-3 :功能同4-2

11、,只是請求采用POST方式發(fā)送到服務(wù)器端,Servlet重寫doPost()方法定義Servlet的功能,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,練習(xí),實現(xiàn)一個名為emailServlet的Servlet,可以接受用戶輸入的email地址并顯示: 你輸入的郵箱地址是: XXXXXXXXXX 用HTML實現(xiàn)一個email地址錄入界面,當(dāng)用戶提交后將調(diào)用emailServlet顯示用戶輸入的信息。,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,顯示用戶前一次用同一臺機器登錄服務(wù)器的時間 使用cookie技術(shù),將登錄服務(wù)器的時間 保存到用戶的硬盤上,用戶下一次調(diào)用時就從用戶的硬盤上讀出來并顯示,J

12、ava軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,在Servlet中使用cookie,Servlet API 中的 Cookie 類提供了很多方法處理cookie HttpServletRequest的getCookies()方法可以獲得存儲在客戶計算機上的cookie HttpServletResponse的addCookie方法,可以將cookie的數(shù)據(jù)和HTTP響應(yīng)一起發(fā)送給客戶 HttpServlet 的service、doGet和doPost方法的2個參數(shù)的類型分別是HttpServletRequest和HttpServletResponse,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,讀出

13、已經(jīng)存在的cookie,Cookie cookies = request.getCookies(); for (int i = 0; i cookies.length; i+) Cookie c = cookiesi; String name = c.getName(); String value = c.getValue(); out.println(name + = + value); ,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,生成并設(shè)置一個cookie,Cookie c = new Cookie(name, value); c.setMaxAge(LastSecond); respo

14、nse.addCookie(c);,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,案例4-4定義一個Servlet顯示用戶前一次用同一臺機器登錄服務(wù)器的時間,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,顯示生命周期的Servlet,在Servlet的生命周期中,有幾個重要的方法: init()方法只在第1次請求時調(diào)用 每次請求都會調(diào)用service()方法, service()方法根據(jù)請求是GET還是POST調(diào)用doGet()或doPost()方法 destroy()方法只在servlet被銷毀時才調(diào)用 案例4-5 : 重寫init()方法,將計數(shù)器的值清0 重寫doGet()方法,將計數(shù)器的值

15、加1 通過計數(shù)器的值的變化來說明Servlet的方法的調(diào)用情況,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,案例4-6 :計數(shù)連續(xù)的Servlet 重寫init()方法,從文件中讀出計數(shù)值 重寫doGet()方法,將計數(shù)器的值加1 重寫destroy()方法,將計數(shù)值保存到文件中 可以將計數(shù)值保存到數(shù)據(jù)庫中,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,從Servlet中引用其他文件,用被引用文件的URL作為參數(shù)調(diào)用request的getRequestDispatcher()方法來獲得request調(diào)度程序?qū)ο?調(diào)度程序?qū)ο?的include()方法將資源引入 并且傳遞參數(shù) 案例4-7:讓用戶在

16、輸入界面上選中一個客戶端技術(shù),然后提交給服務(wù)器端的Servlet處理,Servlet會引用一個JSP文件顯示部分信息 RequestDispatcher dispatcher=request.getRequestDispatcher(include.jsp); dispatcher.include(request,response);,Java軟件項目(B/S架構(gòu))開發(fā) 覃國蓉,從Servlet跳轉(zhuǎn)到其他頁面,與引用文件類似: 以跳轉(zhuǎn)頁面的URL為參數(shù)獲得獲得request調(diào)度程序?qū)ο?用調(diào)度程序?qū)ο蟮膄orward()方法 跳轉(zhuǎn)到其他頁面 案例4-8: RequestDispatcher dispatcher=request.getR

溫馨提示

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

最新文檔

評論

0/150

提交評論