濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > JSP中Servlet的Request與Response的用法與區(qū)別

JSP中Servlet的Request與Response的用法與區(qū)別

熱門標(biāo)簽:潤(rùn)滑油銷售電銷機(jī)器人 如何看懂地圖標(biāo)注點(diǎn) 外呼系統(tǒng)使用方法 電話機(jī)器人需要使用網(wǎng)絡(luò)嗎 給地圖標(biāo)注得傭金 自繪地圖標(biāo)注數(shù)據(jù) 電銷機(jī)器人免培訓(xùn) 南通通訊外呼系統(tǒng)產(chǎn)品介紹 海外圖書(shū)館地圖標(biāo)注點(diǎn)

JSP中Servlet的Request與Response的用法與區(qū)別

簡(jiǎn)介:Web服務(wù)器收到客戶端的http請(qǐng)求,會(huì)針對(duì)每一次請(qǐng)求,分別創(chuàng)建一個(gè)用于代表請(qǐng)求的request對(duì)象、和代表響應(yīng)的response對(duì)象。request和response對(duì)象即然代表請(qǐng)求和響應(yīng),那我們要獲取客戶機(jī)提交過(guò)來(lái)的數(shù)據(jù),只需要找request對(duì)象就行了。要向客戶機(jī)輸出數(shù)據(jù),只需要找response對(duì)象就行了。

一,Request

Request代表請(qǐng)求對(duì)象,其中封裝了對(duì)請(qǐng)求中具有請(qǐng)求行、請(qǐng)求頭、實(shí)體內(nèi)容的操作的方法,通過(guò)這個(gè)對(duì)象提供的方法,可以獲得客戶端請(qǐng)求的所有信息。

1. 作為容器

setAttribute(String name,Object o)將數(shù)據(jù)作為request對(duì)象的一個(gè)屬性存放到request對(duì)象中 
getAttribute(String name)        獲取request對(duì)象的name屬性的屬性值 
removeAttribute(String name)     移除request對(duì)象的name屬性 
getAttributeNames()     獲取request對(duì)象的所有屬性名 

2. 獲得客戶端信息        

 getRequestURL()返回客戶端發(fā)出請(qǐng)求時(shí)的完整URL。 
getRequestURI()返回請(qǐng)求行中的資源名部分。 
getRemoteAddr()返回發(fā)出請(qǐng)求的客戶機(jī)的IP地址。 
getRemoteHost()返回發(fā)出請(qǐng)求的客戶機(jī)的完整主機(jī)名。 
getRemotePort()返回客戶機(jī)所使用的網(wǎng)絡(luò)端口號(hào)。 
getLocalAddr()返回WEB服務(wù)器的IP地址。 
getLocalName()返回WEB服務(wù)器的主機(jī)名。 
  getQueryString()返回請(qǐng)求行中的參數(shù)部分。 
getPathInfo()返回請(qǐng)求URL中的額外路徑信息。額外路徑信息是請(qǐng)求URL中的位于Servlet的路徑之后和查詢參數(shù)之前的內(nèi)容,它以“/”開(kāi)頭。 

3. 獲得客戶端請(qǐng)求頭  

getHeader(string name) 
getHeaders(String name) 
getHeaderNames() 

4. 獲得客戶端請(qǐng)求參數(shù)(客戶端提交的數(shù)據(jù))

getParameter(String)方法(常用) 
getParameterValues(String name)方法(常用) 
getParameterNames()方法(不常用) 
getParameterMap()方法(編寫框架時(shí)常用) 

5.request接收表單提交中文參數(shù)亂碼問(wèn)題解決

(1)get方式提交表單:

對(duì)于以get方式傳輸?shù)臄?shù)據(jù),request即使設(shè)置了以指定的編碼接收數(shù)據(jù)也是無(wú)效的(至于為什么無(wú)效我也沒(méi)有弄明白),默認(rèn)的還是使用ISO8859-1這個(gè)字符編碼來(lái)接收數(shù)據(jù),客戶端以UTF-8的編碼傳輸數(shù)據(jù)到服務(wù)器端,而服務(wù)器端的request對(duì)象使用的是ISO8859-1這個(gè)字符編碼來(lái)接收數(shù)據(jù),服務(wù)器和客戶端溝通的編碼不一致因此才會(huì)產(chǎn)生中文亂碼的。

解決辦法:

1) 在接收到數(shù)據(jù)后,先獲取request對(duì)象以ISO8859-1字符編碼接收到的原始數(shù)據(jù)的字節(jié)數(shù)組,然后通過(guò)字節(jié)數(shù)組以指定的編碼構(gòu)建字符串,解決亂碼問(wèn)題。

String name = request.getParameter("name");//接收數(shù)據(jù)
     name =new String(name.getBytes("ISO8859-1"), "UTF-8") ;//獲取request對(duì)象以ISO8859-1字符編碼接收到的原始數(shù)據(jù)的字節(jié)數(shù)組,然后通過(guò)字節(jié)數(shù)組以指定的編碼構(gòu)建字符串,解決亂碼問(wèn)題

     2) server.xml中配置

  URIEncoding=utf-8

(2)post方式提交表單:

之所以會(huì)產(chǎn)生亂碼,就是因?yàn)榉?wù)器和客戶端溝通的編碼不一致造成的,因此解決的辦法是:在客戶端和服務(wù)器之間設(shè)置一個(gè)統(tǒng)一的編碼,之后就按照此編碼進(jìn)行數(shù)據(jù)的傳輸和接收。

 request.setCharacterEncoding("UTF-8");

6.Request對(duì)象實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)

request.getRequestDispatcher("/test.jsp").forward(request, response); 
request.getRequestDispatcher("/test.jsp").include(request, response); 
調(diào)用forward()方法后,原先存放在HttpResponse對(duì)象中的內(nèi)容將會(huì)自動(dòng)被清除 
調(diào)用include()方法后,原先存放在HttpResponse對(duì)象中的內(nèi)容將不會(huì)被清除,內(nèi)容追加 

二,Response

Response代表響應(yīng),于是響應(yīng)消息中的狀態(tài)碼、響應(yīng)頭、實(shí)體內(nèi)容都可以由它進(jìn)行操作

1. 向客戶端(瀏覽器)發(fā)送數(shù)據(jù)的相關(guān)方法

getOutputStream()
getWriter()

2.向客戶端(瀏覽器)發(fā)送響應(yīng)頭的相關(guān)方法

addDateHeader() 
addHeader() 
addIntHeader() 
containsHeader() 
      setDateHeader() 
setHeader() 
setIntHeader() 

例如:  

  response.setHeader("content-type", "text/html;charset=UTF-8"); 

3.向客戶端(瀏覽器)發(fā)送響應(yīng)狀態(tài)碼的相關(guān)方法--setStatus()

實(shí)例代碼:

private void downloadFileByOutputStream(HttpServletResponse response) 
      throws FileNotFoundException, IOException { 
    //1.獲取要下載的文件的絕對(duì)路徑 
    String realPath = this.getServletContext().getRealPath("/download/1.JPG"); 
    //2.獲取要下載的文件名 
    String fileName = realPath.substring(realPath.lastIndexOf("\\")+1); 
    //3.設(shè)置content-disposition響應(yīng)頭控制瀏覽器以下載的形式打開(kāi)文件 
    response.setHeader("content-disposition", "attachment;filename="+fileName); 
    //4.獲取要下載的文件輸入流 
    InputStream in = new FileInputStream(realPath); 
    int len = 0; 
    //5.創(chuàng)建數(shù)據(jù)緩沖區(qū) 
    byte[] buffer = new byte[1024]; 
    //6.通過(guò)response對(duì)象獲取OutputStream流 
    OutputStream out = response.getOutputStream(); 
    //7.將FileInputStream流寫入到buffer緩沖區(qū) 
    while ((len = in.read(buffer)) > 0) { 
    //8.使用OutputStream將緩沖區(qū)的數(shù)據(jù)輸出到客戶端瀏覽器 
      out.write(buffer,0,len); 
    } 
    in.close(); 
  } 

它們的區(qū)別:

其實(shí)從字面上我們就可以知道他們倆的區(qū)別在于一個(gè)是請(qǐng)求(request),而另一個(gè)是響應(yīng)(response),servlet作為服務(wù)端,請(qǐng)求便是來(lái)自瀏覽器的請(qǐng)求,響應(yīng)便是服務(wù)器對(duì)瀏覽器的響應(yīng)。在你想獲取瀏覽器請(qǐng)求的數(shù)據(jù)時(shí),我們就要用request,而在我們要向?yàn)g覽器響應(yīng)數(shù)據(jù)或頁(yè)面時(shí),我們就要用到response。

request 是請(qǐng)求的載體,它附帶著,請(qǐng)求的參數(shù),ip,cookie,表單,字符編碼,或者上傳文件。
你可以通過(guò)request去獲得你所需要的信息。

response是響應(yīng)的載體,你可以設(shè)置,表頭,報(bào)文,響應(yīng)文件類型,字符編碼,response,自帶一個(gè)輸出流,當(dāng)你需要將一個(gè)頁(yè)面或者一個(gè)文件傳到客戶端時(shí),你可以通過(guò)這個(gè)流來(lái)進(jìn)行操作

希望通過(guò)本文能幫助到大家,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • jsp 使用request為頁(yè)面添加靜態(tài)數(shù)據(jù)的實(shí)例
  • JSP 中request與response的用法詳解
  • JSP的request對(duì)象實(shí)例詳解
  • JSP request.setAttribute()詳解及實(shí)例
  • jsp Request獲取url信息的各種方法對(duì)比
  • JSP利用過(guò)濾器解決request中文亂碼問(wèn)題
  • JSP用過(guò)濾器解決request getParameter中文亂碼問(wèn)題
  • Jsp中request的3個(gè)基礎(chǔ)實(shí)踐

標(biāo)簽:廣州 大連 樂(lè)山 南京 銅川 黃石 內(nèi)江 貸款邀約

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JSP中Servlet的Request與Response的用法與區(qū)別》,本文關(guān)鍵詞  JSP,中,Servlet,的,Request,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP中Servlet的Request與Response的用法與區(qū)別》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于JSP中Servlet的Request與Response的用法與區(qū)別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    额敏县| 闻喜县| 奉贤区| 江口县| 霍城县| 五莲县| 全椒县| 苍南县| 额尔古纳市| 平昌县| 扎赉特旗| 印江| 新野县| 漠河县| 饶平县| 泰安市| 含山县| 衡阳县| 锦屏县| 科技| 唐海县| 河南省| 正镶白旗| 平阴县| 沙湾县| 宝坻区| 赤峰市| 阿巴嘎旗| 涟源市| 绥滨县| 文水县| 浦东新区| 花莲县| 香港 | 仙居县| 五指山市| 莎车县| 马尔康县| 灌南县| 敦煌市| 确山县|