2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Servlet編程,背景知識(shí),常用的Web服務(wù)器IISApache通常的動(dòng)態(tài)網(wǎng)頁技術(shù)CGI (Common GateWay Interface)API常用的有(NSAPI,ISAPI)ASP(Active Server Page)PHP(Personal Home Page),什么是Servlet技術(shù),Servlet是在Java2平臺(tái)下取代CGI的一種技術(shù)是一個(gè)接收請(qǐng)求,作出響應(yīng)的網(wǎng)絡(luò)服務(wù)Java類,什么是 Servl

2、et?,,,請(qǐng)求,客戶端,,響應(yīng),Servlet 運(yùn)行于服務(wù)器上,Servlet 是一個(gè)用 Java 編寫的程序,此程序在服務(wù)器上運(yùn)行以處理客戶端請(qǐng)求,Servlet簡(jiǎn)介,Servlet是服務(wù)器小應(yīng)用程序用來完成B/S架構(gòu)下,客戶端請(qǐng)求的響應(yīng)處理平臺(tái)獨(dú)立,性能優(yōu)良,能以線程方式運(yùn)行Servlet API為Servlet提供了統(tǒng)一的編程接口,HTTP Servlet 基礎(chǔ)知識(shí),HttpServlet 類提供一個(gè)抽象類以創(chuàng)建 HTTP

3、 Servlet,public void doGet(HttpServletRequest req,HttpServletResponse res),doGet() 方法處理客戶端作出的 GET 請(qǐng)求。,public void doPost(HttpServletRequest req,HttpServletResponse res),doPost() 方法處理客戶端作出的 POST 請(qǐng)求。,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的工作目錄(存放臨時(shí)文件),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位置加入更改端口號(hào)更改Connector中的port屬性,示例 3-1 HelloWorld.java,需求:編寫一個(gè)生成純文本的簡(jiǎn)單的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 的一個(gè)實(shí)例Servlet 的生命周期就是指創(chuàng)建 Servlet 實(shí)例之后其存在的時(shí)間以及何時(shí)消失生命周期的 3個(gè)方法為:,init(),,service(),,destroy(),Servlet 的生命周期,生命周期的各個(gè)階段為:,實(shí)例化,,Servlet 容器創(chuàng)建 Servlet 的實(shí)例,初始化,,該容器調(diào)用 init() 方法,服 務(wù),,如果請(qǐng)求 Servlet,則容器調(diào)用 service() 方法,銷毀

9、實(shí)例之前調(diào)用 destroy() 方法,銷 毀,,,不可用,銷毀實(shí)例并標(biāo)記為垃圾收集,簡(jiǎn)單 Servlet 的結(jié)構(gòu),,這是一個(gè)顯示 HttpServletRequest 和 HttpServetResponse 接口一些方法的簡(jiǎn)單 Servlet,,,需要導(dǎo)入的包,,用于處理 GET 請(qǐng)求的方法,,創(chuàng)建設(shè)置文本格式和 PrintWriter 對(duì)象的方法以將數(shù)據(jù)發(fā)送給客戶端,Servlet 的部署, clientservlet

10、 chapter2.ClientServlet clientservlet /clientservlet ,web.xml文件中配置Servlet,,,兩個(gè)名稱必須相同,,Servlet編程接口,所有Servlet編程都通過繼承 javax.servlet.http.HttpServlet 實(shí)現(xiàn)請(qǐng)求處理方法:(分別對(duì)應(yīng)http協(xié)議的7種請(qǐng)求)1、doGet響應(yīng)Get請(qǐng)求,常用2、doPo

11、st響應(yīng)Post請(qǐng)求,常用3、doPut用于http1.1協(xié)議4、doDelete用于http1.1協(xié)議5、doHead 僅響應(yīng)Get請(qǐng)求的頭部。6、doOptions用于http1.1協(xié)議7、doTrace用于http1.1協(xié)議實(shí)例的個(gè)數(shù):1、在非分布的情況下,通常一個(gè)Servlet在服務(wù)器中有一個(gè)實(shí)例2、如果Servlet實(shí)現(xiàn)了SingleThreadModel,則該Servle

12、t會(huì)對(duì)每一個(gè)請(qǐng)求產(chǎn)生一個(gè)響應(yīng)實(shí)例,,,練習(xí) 使用doGet和doPost方法處理請(qǐng)求示例3-2 3-3 3-4 3-5,要求:編寫一個(gè)帶有doGet和doPost方法的Servlet目的:掌握基本的Servlet請(qǐng)求處理技術(shù)要點(diǎn):public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, I

13、OExceptionpublic void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException,IOException,獲取Http請(qǐng)求頭,不同于表單數(shù)據(jù)請(qǐng)求頭直接由瀏覽器設(shè)置,在初始的Get/Post請(qǐng)求行之后立即發(fā)送可以獲得客戶端/服務(wù)器端的一些配置信息獲取請(qǐng)求頭很簡(jiǎn)單,直接通過HttpServletReques

14、t的getHeader方法。頭的名稱不區(qū)分大小寫常用的頭信息:getContentTypegetMethodgetRequestURIHost,練習(xí):獲取所有的HTTP請(qǐng)求頭信息,獲取所有的請(qǐng)求頭示例3-6 GetRequestHeader.java,獲取CGI變量,CGI變量:1.基于HTTP請(qǐng)求的行和頭;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動(dòng)態(tài)生成圖片,示例3-8 Img.java,在servlet中跳轉(zhuǎn)頁面,sendRedirect() 重新請(qǐng)求,清空屬性forward() 接受HttpServletRequest和HttpServletResponse這兩個(gè)類型的參數(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報(bào)頭解決中文問題,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實(shí)現(xiàn)一個(gè)登陸驗(yàn)證程序,處理Cookie,Http協(xié)議的無連接性要求出現(xiàn)一種保存C/S間狀態(tài)的機(jī)制Cookie:保存到客戶端的一個(gè)文本文件,與特定客戶相關(guān)Cookie以“名-值”對(duì)的形式保存數(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,返回一個(gè)Cookie數(shù)組,練習(xí):寫/讀Cookie,設(shè)置Cookie讀取Cookie示例 3-16 LoginServlet.java示例 3-17 CookieTest.java,會(huì)話跟蹤,Session在某段時(shí)間一連串客戶端與服務(wù)器端的“交易” 實(shí)質(zhì)上,它是依靠Cookie來實(shí)現(xiàn)的在Jsp/Servlet中,如果瀏覽器不支持Cookie,可以通過URL重寫來實(shí)現(xiàn),就是將一些 額外數(shù)據(jù)追加到表示

21、會(huì)話的每個(gè)URL末尾,服務(wù)器在該標(biāo)示符與其存儲(chǔ)的有關(guān)的該會(huì)話的數(shù)據(jù)之間建立關(guān)聯(lián)。如hello.jsp?jsessionid=1234可以通過程序來終止一個(gè)會(huì)話。如果客戶端在一定時(shí)間內(nèi)沒有操作,服務(wù)器會(huì)自動(dòng)終止會(huì)話。通過HttpSession來讀寫Session,HttpServletRequest中的會(huì)話管理方法,getRequestedSessionId():返回隨客戶端請(qǐng)求到來的會(huì)話ID??赡芘c當(dāng)前的會(huì)話ID相同,也可能不同。

22、getSession(boolean isNew):如果會(huì)話已經(jīng)存在,則返回一個(gè)HttpSession,如果不存在并且isNew為true,則會(huì)新建一個(gè)HttpSessionisRequestedSessionIdFromCookie():當(dāng)前的Session ID如果是從Cookie獲得,為trueisRequestedSessionIdFromURL():當(dāng)前Session ID如果是由URL獲得,為trueisRequest

23、edSessionIdValid():如果客戶端的會(huì)話ID代表的是有效會(huì)話,則返回true。否則(比如,會(huì)話過期或根本不存在),返回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:用于存儲(chǔ)同一個(gè)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,對(duì)于全局變量一定要注意多線程的問題不要使用SingleThreadModel接口

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論