




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度水上樂園游泳館場地租賃與水上樂園配套設(shè)施租賃協(xié)議
- 2025年度老舊小區(qū)外墻改造工程安全責(zé)任合同
- 二零二五年度國際貿(mào)易信用證業(yè)務(wù)代理及風(fēng)險管理協(xié)議
- 海洋漁業(yè)資源保護與海產(chǎn)品銷售一體化合同
- 二零二五年度企業(yè)用工協(xié)議與勞動權(quán)益保障與員工激勵機制合同
- 二零二五年度廠房裝修施工安全責(zé)任與綠色施工標準協(xié)議書
- 2025年度酒店與旅游紀念品店合作經(jīng)營合同
- 二零二五年度籃球活動參與者免責(zé)責(zé)任協(xié)議
- 二零二五年度汽車美容店員工勞動爭議解決合同模板
- 二零二五年度農(nóng)村房屋贈與合同附農(nóng)業(yè)保險合作協(xié)議
- 經(jīng)濟學(xué)彈性理論課件
- 公司員工獎懲制度流程
- 星巴克案例分析-星巴克成功之道
- 把未來點亮歌詞打印版
- 危險化學(xué)品建設(shè)項目竣工驗收報告
- 國家中醫(yī)藥管理局第3批24個專業(yè)104個病種中醫(yī)診療方案
- 婦產(chǎn)科學(xué)(第9版)第三章 女性生殖系統(tǒng)生理
- LY/T 2241-2014森林生態(tài)系統(tǒng)生物多樣性監(jiān)測與評估規(guī)范
- GB/T 9086-2007用于色度和光度測量的標準白板
- 2023年山東力明科技職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- GB/T 24338.4-2018軌道交通電磁兼容第3-2部分:機車車輛設(shè)備
評論
0/150
提交評論