版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Servlet編程,背景知識,常用的Web服務(wù)器IISApache通常的動態(tài)網(wǎng)頁技術(shù)CGI (Common GateWay Interface)API常用的有(NSAPI,ISAPI)ASP(Active Server Page)PHP(Personal Home Page),什么是Servlet技術(shù),Servlet是在Java2平臺下取代CGI的一種技術(shù)是一個接收請求,作出響應(yīng)的網(wǎng)絡(luò)服務(wù)Java類,什么是 Servl
2、et?,,,請求,客戶端,,響應(yīng),Servlet 運(yùn)行于服務(wù)器上,Servlet 是一個用 Java 編寫的程序,此程序在服務(wù)器上運(yùn)行以處理客戶端請求,Servlet簡介,Servlet是服務(wù)器小應(yīng)用程序用來完成B/S架構(gòu)下,客戶端請求的響應(yīng)處理平臺獨(dú)立,性能優(yōu)良,能以線程方式運(yùn)行Servlet API為Servlet提供了統(tǒng)一的編程接口,HTTP Servlet 基礎(chǔ)知識,HttpServlet 類提供一個抽象類以創(chuàng)建 HTTP
3、 Servlet,public void doGet(HttpServletRequest req,HttpServletResponse res),doGet() 方法處理客戶端作出的 GET 請求。,public void doPost(HttpServletRequest req,HttpServletResponse res),doPost() 方法處理客戶端作出的 POST 請求。,Tomcat的安裝和運(yùn)行,安裝從http:
4、//jakarta.apache.org/下載直接運(yùn)行可執(zhí)行文件安裝,Tomcat的目錄結(jié)構(gòu),bin/ 二進(jìn)制可執(zhí)行文件和腳本common/ Catalina本身和web應(yīng)用可加載的類目錄conf/ 配置文件目錄lib/ 所有Web應(yīng)用可見的類庫目錄logs/ 日志目錄server/ 服務(wù)器所需的類庫目錄webap
5、ps/ Web應(yīng)用所存放的目錄work/ Tomcat的工作目錄(存放臨時文件),Tomcat配置文件,server.xml服務(wù)器的主配置文件web.xml定義所有Web應(yīng)用的配置(缺省的Servlet定義和MIME類型定義)tomcat-user.xml 定義了tomcat用戶的信息,server.xml的層次結(jié)構(gòu),
6、 ,常用配置示例,加入新的Web應(yīng)用在server.xml中Context位置加入更改端口號更改Connector中的port屬性,示例 3-1 HelloWorld.java,需求:編寫一個生成純文本的簡單的Servlet類。目的:了解Servlet的基本概念,在web.xml中配
7、置servlet,在web.xml中配置servlet,讓客戶端瀏覽器可以訪問 HelloWorld chap03.HelloWorld HelloWorld/hello,配置servlet-invoker,為了方便調(diào)試servlet,可以通過配置servlet-invoker的方法,使得不需要配置servlet映射即可訪問servlet程序,Servlet 的生命周期,Servlet 容
8、器創(chuàng)建 Servlet 的一個實例Servlet 的生命周期就是指創(chuàng)建 Servlet 實例之后其存在的時間以及何時消失生命周期的 3個方法為:,init(),,service(),,destroy(),Servlet 的生命周期,生命周期的各個階段為:,實例化,,Servlet 容器創(chuàng)建 Servlet 的實例,初始化,,該容器調(diào)用 init() 方法,服 務(wù),,如果請求 Servlet,則容器調(diào)用 service() 方法,銷毀
9、實例之前調(diào)用 destroy() 方法,銷 毀,,,不可用,銷毀實例并標(biāo)記為垃圾收集,簡單 Servlet 的結(jié)構(gòu),,這是一個顯示 HttpServletRequest 和 HttpServetResponse 接口一些方法的簡單 Servlet,,,需要導(dǎo)入的包,,用于處理 GET 請求的方法,,創(chuàng)建設(shè)置文本格式和 PrintWriter 對象的方法以將數(shù)據(jù)發(fā)送給客戶端,Servlet 的部署, clientservlet
10、 chapter2.ClientServlet clientservlet /clientservlet ,web.xml文件中配置Servlet,,,兩個名稱必須相同,,Servlet編程接口,所有Servlet編程都通過繼承 javax.servlet.http.HttpServlet 實現(xiàn)請求處理方法:(分別對應(yīng)http協(xié)議的7種請求)1、doGet響應(yīng)Get請求,常用2、doPo
11、st響應(yīng)Post請求,常用3、doPut用于http1.1協(xié)議4、doDelete用于http1.1協(xié)議5、doHead 僅響應(yīng)Get請求的頭部。6、doOptions用于http1.1協(xié)議7、doTrace用于http1.1協(xié)議實例的個數(shù):1、在非分布的情況下,通常一個Servlet在服務(wù)器中有一個實例2、如果Servlet實現(xiàn)了SingleThreadModel,則該Servle
12、t會對每一個請求產(chǎn)生一個響應(yīng)實例,,,練習(xí) 使用doGet和doPost方法處理請求示例3-2 3-3 3-4 3-5,要求:編寫一個帶有doGet和doPost方法的Servlet目的:掌握基本的Servlet請求處理技術(shù)要點:public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, I
13、OExceptionpublic void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException,IOException,獲取Http請求頭,不同于表單數(shù)據(jù)請求頭直接由瀏覽器設(shè)置,在初始的Get/Post請求行之后立即發(fā)送可以獲得客戶端/服務(wù)器端的一些配置信息獲取請求頭很簡單,直接通過HttpServletReques
14、t的getHeader方法。頭的名稱不區(qū)分大小寫常用的頭信息:getContentTypegetMethodgetRequestURIHost,練習(xí):獲取所有的HTTP請求頭信息,獲取所有的請求頭示例3-6 GetRequestHeader.java,獲取CGI變量,CGI變量:1.基于HTTP請求的行和頭;2.來自于套結(jié)字 3.來自于服務(wù)器的安裝參數(shù)可以通過HttpServletRequest的相關(guān)方法來訪問這些變量
15、常用的CGI變量CONTENT_TYPE—getContentType()PATH_INFO---getPathInfo()REMOTE_ADDR---getRemoteAddr()QUERY_STRING---getQueryString()SERVER_NAME---getServerName()SERVER_PORT---getServerPort(),練習(xí):獲得CGI變量,編程,取得CGI變量示例3-7 GetCG
16、IVar.java,設(shè)置HTTP響應(yīng)頭,利用servlet動態(tài)生成圖片,示例3-8 Img.java,在servlet中跳轉(zhuǎn)頁面,sendRedirect() 重新請求,清空屬性forward() 接受HttpServletRequest和HttpServletResponse這兩個類型的參數(shù),能傳遞屬性到跳轉(zhuǎn)頁面。注意兩者的區(qū)別,練習(xí)sendRedirct和forward,示例3-10 Redirect.java示例3-11 F
17、orward.java示例3-12 Test.java 獲取跳轉(zhuǎn)事request中的數(shù)據(jù),通過Http報頭解決中文問題,response.setContentType(“text/html;charset=GBK”);放置在response.getWriter()之前示例3-13 ChineseHelloWorld.java解決servlet讀取表單數(shù)據(jù)中文問題: request.setCharacterEncodin
18、g(“GBK”);,練習(xí)servlet處理表單數(shù)據(jù)中文,示例 3-14 ChineseForm.htm示例 3-15 ChineseHelloWord.java思考題:運(yùn)用servlet實現(xiàn)一個登陸驗證程序,處理Cookie,Http協(xié)議的無連接性要求出現(xiàn)一種保存C/S間狀態(tài)的機(jī)制Cookie:保存到客戶端的一個文本文件,與特定客戶相關(guān)Cookie以“名-值”對的形式保存數(shù)據(jù)創(chuàng)建Cookie:new Cookie(name,
19、value)可以使用Cookie 的setXXX方法來設(shè)定一些相應(yīng)的值setName(String name)/getName()setValue(String value)/getValue()setMaxAge(int age)/getMaxAge()利用HttpServletResponse的addCookie(Cookie)方法將它設(shè)置到客戶端利用HttpServletRequest的getCookies()方法來讀
20、取客戶端的所有Cookie,返回一個Cookie數(shù)組,練習(xí):寫/讀Cookie,設(shè)置Cookie讀取Cookie示例 3-16 LoginServlet.java示例 3-17 CookieTest.java,會話跟蹤,Session在某段時間一連串客戶端與服務(wù)器端的“交易” 實質(zhì)上,它是依靠Cookie來實現(xiàn)的在Jsp/Servlet中,如果瀏覽器不支持Cookie,可以通過URL重寫來實現(xiàn),就是將一些 額外數(shù)據(jù)追加到表示
21、會話的每個URL末尾,服務(wù)器在該標(biāo)示符與其存儲的有關(guān)的該會話的數(shù)據(jù)之間建立關(guān)聯(lián)。如hello.jsp?jsessionid=1234可以通過程序來終止一個會話。如果客戶端在一定時間內(nèi)沒有操作,服務(wù)器會自動終止會話。通過HttpSession來讀寫Session,HttpServletRequest中的會話管理方法,getRequestedSessionId():返回隨客戶端請求到來的會話ID??赡芘c當(dāng)前的會話ID相同,也可能不同。
22、getSession(boolean isNew):如果會話已經(jīng)存在,則返回一個HttpSession,如果不存在并且isNew為true,則會新建一個HttpSessionisRequestedSessionIdFromCookie():當(dāng)前的Session ID如果是從Cookie獲得,為trueisRequestedSessionIdFromURL():當(dāng)前Session ID如果是由URL獲得,為trueisRequest
23、edSessionIdValid():如果客戶端的會話ID代表的是有效會話,則返回true。否則(比如,會話過期或根本不存在),返回false,HttpSession中的常用方法,getAttributeNames()/getAttribute()getCreateTime()getId()getMaxInactiveInterval()invalidate()isNew()setAttribute()setMaxInac
24、tivateInterval(),練習(xí):Session操作,掌握Session的用法示例 3-18 SaveInfo.java示例 3-19 GetSession.java,ServletContext接口,Servlet context:用于存儲同一個context中的其他servlet可以訪問的屬性。常用方法:getRealPath()setAttribute()/getAttribute()/removeAttribut
25、e()getInitParameter()/getInitParameterNames(),將數(shù)據(jù)保存到ServletContext中,示例 3-20 FirstServlet.java示例 3-21 UserNumber.java,讀取web.xml的參數(shù),示例 3-22 InitParamsServlet.java,編寫線程安全的servlet,對于全局變量一定要注意多線程的問題不要使用SingleThreadModel接口
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 05. servlet編程 入門
- 探析servlet、jsp web組件和jdbc編程
- servlet配置映射路徑
- java servlet文獻(xiàn)翻譯
- Java servlet文獻(xiàn)翻譯.doc
- 解讀servlet生命周期
- 達(dá)內(nèi)servlet筆記整理
- erp管理系統(tǒng)(jsp+servlet)
- jsp及servlet面試題
- http和servlet基礎(chǔ)外文翻譯
- 基于servlet的網(wǎng)站開發(fā)
- 基于servlet的網(wǎng)站開發(fā) (2)
- 網(wǎng)上購物系統(tǒng)(javabean+servlet+jsp)
- servlet content培訓(xùn)筆記仔細(xì)看
- 教材訂購系統(tǒng)(jsp+servlet+mysql)
- 外文翻譯----servlet和jsp技術(shù)簡述
- 博客系統(tǒng)網(wǎng)站(jsp+servlet+mysql)
- 外文翻譯---servlet和jsp技術(shù)簡介
- 共創(chuàng)在線考試系統(tǒng)(jsp+servlet)
- 教務(wù)管理系統(tǒng)(jsp+servlet+mysql)
評論
0/150
提交評論