摘要:讀取字節(jié)流數(shù)據(jù),需要使用方法返回的對(duì)象。單個(gè)參數(shù)可以通過(guò)請(qǐng)求的方法獲取。可以使用方法指定包含的類(lèi)型如。這個(gè)方法必須在任何內(nèi)容被寫(xiě)入前或響應(yīng)被提交前。響應(yīng)對(duì)象,,有表示頭的屬性,如下?tīng)顟B(tài)代碼用于指示不滿(mǎn)足請(qǐng)求或請(qǐng)求已重定向的原因。
servlet提供的service方法實(shí)現(xiàn)了GenericServlet的service方法,在HttpServlet 對(duì)象的doMethod( Get, Delete, Options, Post, Put, or Trace) 方法中,或者在其他實(shí)現(xiàn)了Servlet接口的類(lèi)的方法中。術(shù)語(yǔ)service method用來(lái)描述Servlet類(lèi)中的任何能提供給客戶(hù)端調(diào)用的方法的。
通常,service方法用來(lái)從請(qǐng)求中讀取信息,訪問(wèn)外部資源,然后基于這些信息填充相應(yīng)數(shù)據(jù)。對(duì)HTTP Servlet來(lái)說(shuō),正確的填充相應(yīng)的步驟如下:
獲取響應(yīng)數(shù)據(jù)流
填充響應(yīng)頭
編寫(xiě)響應(yīng)數(shù)據(jù)流的內(nèi)容
響應(yīng)頭必須在響應(yīng)提交之前設(shè)置,web容器將忽略響應(yīng)提交之后設(shè)置響應(yīng)頭或添加響應(yīng)頭的操作。下兩節(jié)描述如何從請(qǐng)求中獲取信息和生成響應(yīng)。
從請(qǐng)求中獲取信息請(qǐng)求攜帶數(shù)據(jù)從客戶(hù)端傳到服務(wù)端。所有請(qǐng)求都實(shí)現(xiàn)了ServletRequest接口。這個(gè)接口定義的方法可以訪問(wèn)下面的信息:
參數(shù),通常用來(lái)在客戶(hù)端與服務(wù)端之間傳遞參數(shù)
對(duì)象屬性,通常用來(lái)在web容器與servlet之間、多個(gè)servlet之間傳遞信息
有關(guān)用于傳達(dá)請(qǐng)求的協(xié)議以及請(qǐng)求中涉及的客戶(hù)端和服務(wù)器的信息
本地化的相關(guān)信息
當(dāng)然你也可以直接獲取輸入流,并手工解析數(shù)據(jù)。讀取這些數(shù)據(jù),最好使用BufferedReader對(duì)象獲取請(qǐng)求的getReader方法。讀取字節(jié)流數(shù)據(jù),需要使用getInputStream方法返回的ServletInputStream對(duì)象。
Http servlet傳遞一個(gè)Http請(qǐng)求對(duì)象,HttpServletRequest,它包含請(qǐng)求URL、Http頭信息、查詢(xún)字符串等等。Http URL包含下列信息:
http://[host]:[port][request-path]?[query-string]
請(qǐng)求路徑還包括一下元素:
上下文路徑 : 使用/符號(hào)與web應(yīng)用程序的跟路徑分隔
Servlet路徑: 請(qǐng)求此路徑的別名所對(duì)應(yīng)的路徑。路徑以/開(kāi)始。
path 路徑: 請(qǐng)求路徑中不屬于上下文路徑和servlet上下文的路徑
你可以使用HttpServletRequest接口的getContextPath, getServletPath, and getPathInfo方法訪問(wèn)這些信息。除url編碼與請(qǐng)求路徑有區(qū)別外,請(qǐng)求路徑總是等于上下文路徑+servlet路徑+path路徑。
查詢(xún)字符串由一組參數(shù)和值組成。單個(gè)參數(shù)可以通過(guò)請(qǐng)求的getParameter方法獲取。有下面兩種方式生成查詢(xún)字符串:
查詢(xún)字符串可以在web頁(yè)面上直觀的顯示
當(dāng)以get方式提交Http請(qǐng)求時(shí),查詢(xún)字符串附加在了請(qǐng)求后面。
構(gòu)造響應(yīng)響應(yīng)包含從服務(wù)端傳到客戶(hù)端的數(shù)據(jù)。所有的響應(yīng)都實(shí)現(xiàn)了ServletResponse接口。這個(gè)接口定義的方法支持做下面的工作:
發(fā)送輸出流數(shù)據(jù)到客戶(hù)端。發(fā)送字符數(shù)據(jù),使用getWriter方法返回的PrintWriter對(duì)象;發(fā)送MIME類(lèi)型的二進(jìn)制數(shù)據(jù),使用getOutputStream方法返回的ServletOutputStream。混合二進(jìn)制和字符數(shù)據(jù),存在多重響應(yīng),需要使用ServletOutputStream類(lèi)并手動(dòng)管理字符部分。
可以使用setContentType方法指定包含的類(lèi)型(如text/html)。這個(gè)方法必須在響應(yīng)提交之前調(diào)用。緩沖區(qū)允許在響應(yīng)提交之前寫(xiě)入數(shù)據(jù),從而允許servlet有更多時(shí)間去設(shè)置狀態(tài)代碼和響應(yīng)頭或者轉(zhuǎn)發(fā)到其他web資源。這個(gè)方法必須在任何內(nèi)容被寫(xiě)入前或響應(yīng)被提交前。
設(shè)置本地化信息,比如區(qū)域位置和編碼,在Chapter 20, "Internationalizing and Localizing Web Applications" 有更詳盡的描述。
Http響應(yīng)對(duì)象, javax.servlet.http.HttpServletResponse,有表示Http頭的屬性,如下:
狀態(tài)代碼 用于指示不滿(mǎn)足請(qǐng)求或請(qǐng)求已重定向的原因。
cookies 用來(lái)在客戶(hù)端保存服務(wù)器的信息。通常,cookies用戶(hù)維持單一用戶(hù)登陸或者是跟蹤一個(gè)用戶(hù)的session(查看Session Tracking章節(jié))。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73912.html
時(shí)間:2017年09月03日星期日說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:https://github.com/zccodere/s...學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 面向切面 課程章節(jié) 概覽 AOP使用 AOP原理 AOP開(kāi)源運(yùn)用 課程實(shí)戰(zhàn) 課程總結(jié) 面向切面編程是一種...
摘要:發(fā)布通過(guò)回調(diào)方法向發(fā)布事件。觀察者一個(gè)回調(diào)函數(shù)的集合,它知道如何去監(jiān)聽(tīng)由提供的值。 本文目錄 一、項(xiàng)目起步 二、編寫(xiě)路由組件 三、編寫(xiě)頁(yè)面組件 1.編寫(xiě)單一組件 2.模擬數(shù)據(jù) 3.編寫(xiě)主從組件 四、編寫(xiě)服務(wù) 1.為什么需要服務(wù) 2.編寫(xiě)服務(wù) 五、引入RxJS 1.關(guān)于RxJS 2.引入RxJS 3.改造數(shù)據(jù)獲取方式 六、改造組件 1.添...
摘要:遷移至指南為什么要遷移至本身是動(dòng)態(tài)弱類(lèi)型的語(yǔ)言,這樣的特點(diǎn)導(dǎo)致了代碼中充斥著很多的報(bào)錯(cuò),給開(kāi)發(fā)調(diào)試和線上代碼穩(wěn)定都帶來(lái)了不小的負(fù)面影響。可行性因?yàn)槭堑某粫?huì)阻止的運(yùn)行,即使存在類(lèi)型錯(cuò)誤也不例外,這能讓你的逐步遷移至。 Vue2.5+遷移至Typescript指南 為什么要遷移至Typescript Javascript本身是動(dòng)態(tài)弱類(lèi)型的語(yǔ)言,這樣的特點(diǎn)導(dǎo)致了Javascript代...
摘要:遷移至指南為什么要遷移至本身是動(dòng)態(tài)弱類(lèi)型的語(yǔ)言,這樣的特點(diǎn)導(dǎo)致了代碼中充斥著很多的報(bào)錯(cuò),給開(kāi)發(fā)調(diào)試和線上代碼穩(wěn)定都帶來(lái)了不小的負(fù)面影響。可行性因?yàn)槭堑某粫?huì)阻止的運(yùn)行,即使存在類(lèi)型錯(cuò)誤也不例外,這能讓你的逐步遷移至。 Vue2.5+遷移至Typescript指南 為什么要遷移至Typescript Javascript本身是動(dòng)態(tài)弱類(lèi)型的語(yǔ)言,這樣的特點(diǎn)導(dǎo)致了Javascript代碼...
閱讀 3055·2021-11-25 09:43
閱讀 1033·2021-11-24 10:22
閱讀 1361·2021-09-22 15:26
閱讀 689·2019-08-30 15:44
閱讀 2468·2019-08-29 16:33
閱讀 3702·2019-08-26 18:42
閱讀 915·2019-08-23 18:07
閱讀 1837·2019-08-23 17:55