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