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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、構)開發(fā) 覃國蓉,使用Servlet的優(yōu)點,Servlet只在第1次被請求執(zhí)行時才需要加載 不需要創(chuàng)建不同的進程來處理不同的 客戶請求 由于Servlet就是Java程序,因此可以使用Java類庫編寫具有各種功能的Servlet 平臺無關,Java軟件項目(B/S架構)開發(fā) 覃國蓉,下載并安裝Tomcat,首先要從SUN 公司下載并安裝JDK 設置環(huán)境變量JAVA_HOME=JDK的安裝目錄 去Tomcat的官方網站或其他提供Tomcat下載的網址下載,可能是一個安裝包或壓縮包 安裝或解壓即可,Java軟件項目(B/S架構)開發(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架構)開發(fā) 覃國蓉,使用Servlet API編寫Servlet,編寫Servlet小應用程序要用到Servlet API,Servlet API由2個Java包javax.servlet和javax.servlet.http組成。 編寫 Servlet有2種方法: 通過繼承javax.servlet.GenericServlet類 通過繼承javax.

5、servlet.http.HttpServlet類,Java軟件項目(B/S架構)開發(fā) 覃國蓉,繼承GenericServlet定義一個新的Servlet類,重寫service() 方法定義Servlet的功能 案例4-1:顯示“你好”。在Service方法中 通過調用參數response 的方法setContentType設置返回的頁面的內容類型和字符編碼,處理中文顯示亂碼 調用response 的方法getWriter獲得發(fā)送數據的輸出流對象,然后用該對象的println方法向瀏覽器發(fā)送信息,Java軟件項目(B/S架構)開發(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架構)開發(fā) 覃國蓉,將Servlet部署到Tomcat上,對于Tomcat,需要手工部署: 編譯生成Servlet的字節(jié)碼文件 將字節(jié)碼文件復制到TOMCAT_HOMEwebapps下的對應某個應用程序的目錄(如test2)的子目錄 WEB-INFclasses目錄或其子目錄 (如TOMCAT_HOMEwebapps test2WEB-INFclassesc

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

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

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

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

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

13、已經存在的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架構)開發(fā) 覃國蓉,生成并設置一個cookie,Cookie c = new Cookie(name, value); c.setMaxAge(LastSecond); respo

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

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

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

溫馨提示

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

評論

0/150

提交評論