亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP中Servlet的Request與Response的用法與區別

2024-09-05 00:23:27
字體:
來源:轉載
供稿:網友

JSP中Servlet的Request與Response的用法與區別

簡介:Web服務器收到客戶端的http請求,會針對每一次請求,分別創建一個用于代表請求的request對象、和代表響應的response對象。request和response對象即然代表請求和響應,那我們要獲取客戶機提交過來的數據,只需要找request對象就行了。要向客戶機輸出數據,只需要找response對象就行了。

一,Request

Request代表請求對象,其中封裝了對請求中具有請求行、請求頭、實體內容的操作的方法,通過這個對象提供的方法,可以獲得客戶端請求的所有信息。

1. 作為容器

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

2. 獲得客戶端信息        

 getRequestURL()返回客戶端發出請求時的完整URL。 getRequestURI()返回請求行中的資源名部分。 getRemoteAddr()返回發出請求的客戶機的IP地址。 getRemoteHost()返回發出請求的客戶機的完整主機名。 getRemotePort()返回客戶機所使用的網絡端口號。 getLocalAddr()返回WEB服務器的IP地址。 getLocalName()返回WEB服務器的主機名。   getQueryString()返回請求行中的參數部分。 getPathInfo()返回請求URL中的額外路徑信息。額外路徑信息是請求URL中的位于Servlet的路徑之后和查詢參數之前的內容,它以“/”開頭。 

3. 獲得客戶端請求頭  

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

4. 獲得客戶端請求參數(客戶端提交的數據)

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

5.request接收表單提交中文參數亂碼問題解決

(1)get方式提交表單:

對于以get方式傳輸的數據,request即使設置了以指定的編碼接收數據也是無效的(至于為什么無效我也沒有弄明白),默認的還是使用ISO8859-1這個字符編碼來接收數據,客戶端以UTF-8的編碼傳輸數據到服務器端,而服務器端的request對象使用的是ISO8859-1這個字符編碼來接收數據,服務器和客戶端溝通的編碼不一致因此才會產生中文亂碼的。

解決辦法:

1) 在接收到數據后,先獲取request對象以ISO8859-1字符編碼接收到的原始數據的字節數組,然后通過字節數組以指定的編碼構建字符串,解決亂碼問題。

String name = request.getParameter("name");//接收數據     name =new String(name.getBytes("ISO8859-1"), "UTF-8") ;//獲取request對象以ISO8859-1字符編碼接收到的原始數據的字節數組,然后通過字節數組以指定的編碼構建字符串,解決亂碼問題

     2) server.xml中配置

  URIEncoding=utf-8

(2)post方式提交表單:

之所以會產生亂碼,就是因為服務器和客戶端溝通的編碼不一致造成的,因此解決的辦法是:在客戶端和服務器之間設置一個統一的編碼,之后就按照此編碼進行數據的傳輸和接收。

 request.setCharacterEncoding("UTF-8");

6.Request對象實現請求轉發

request.getRequestDispatcher("/test.jsp").forward(request, response); request.getRequestDispatcher("/test.jsp").include(request, response); 調用forward()方法后,原先存放在HttpResponse對象中的內容將會自動被清除 調用include()方法后,原先存放在HttpResponse對象中的內容將不會被清除,內容追加 

二,Response

Response代表響應,于是響應消息中的狀態碼、響應頭、實體內容都可以由它進行操作

1. 向客戶端(瀏覽器)發送數據的相關方法

getOutputStream()getWriter()

2.向客戶端(瀏覽器)發送響應頭的相關方法

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

例如:  

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

3.向客戶端(瀏覽器)發送響應狀態碼的相關方法--setStatus()

實例代碼:

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

它們的區別:

其實從字面上我們就可以知道他們倆的區別在于一個是請求(request),而另一個是響應(response),servlet作為服務端,請求便是來自瀏覽器的請求,響應便是服務器對瀏覽器的響應。在你想獲取瀏覽器請求的數據時,我們就要用request,而在我們要向瀏覽器響應數據或頁面時,我們就要用到response。

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

response是響應的載體,你可以設置,表頭,報文,響應文件類型,字符編碼,response,自帶一個輸出流,當你需要將一個頁面或者一個文件傳到客戶端時,你可以通過這個流來進行操作

希望通過本文能幫助到大家,如有疑問請留言或者到本站社區交流討論,感謝閱讀,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品96久久久久久| 日韩综合中文字幕| 96sao精品视频在线观看| 亚洲精品98久久久久久中文字幕| 亚洲福利小视频| 日韩视频免费在线| 91精品国产电影| 亚洲精品一区中文字幕乱码| 久久人人爽人人爽人人片av高请| 欧美精品在线第一页| 黄色一区二区在线观看| 亚洲男人天堂2023| 91精品啪在线观看麻豆免费| 久久久久久国产精品| 日本亚洲欧洲色| 成人免费大片黄在线播放| 91香蕉电影院| 精品亚洲国产成av人片传媒| 精品国偷自产在线视频| 国产精品999| 免费91麻豆精品国产自产在线观看| 亚洲天堂av综合网| 91九色视频在线| 91精品久久久久久久久久久| 国产视频精品一区二区三区| 国产亚洲日本欧美韩国| 亚洲成人av在线| 91大神福利视频在线| 亚洲欧美国产精品| 国产区亚洲区欧美区| 欧美黑人一级爽快片淫片高清| 一本色道久久88综合亚洲精品ⅰ| 久久久久久尹人网香蕉| 夜夜嗨av一区二区三区免费区| 亚洲字幕一区二区| 欧美激情按摩在线| 国产精品久久久久一区二区| 久青草国产97香蕉在线视频| 国产精品久久久久久久久久免费| 国产91色在线| 欧美激情一区二区三区高清视频| 国产精品视频免费观看www| 国产精品吹潮在线观看| 国产精品成人品| 国产一区二区日韩精品欧美精品| 日韩精品中文在线观看| 色偷偷偷综合中文字幕;dd| 日韩av在线免费| 91中文精品字幕在线视频| 青草热久免费精品视频| 亚洲va码欧洲m码| 亚洲人免费视频| 91夜夜未满十八勿入爽爽影院| 国产精品久久久久国产a级| 国产一区二区三区在线免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美亚洲成人免费| 亚洲一区二区中文| 亚州成人av在线| 国产精品女视频| 国产亚洲美女精品久久久| 欧美性猛交xxxx黑人猛交| 亚洲男女自偷自拍图片另类| 97免费中文视频在线观看| 亚洲精品成人免费| 国产精品视频白浆免费视频| 成人国产精品一区二区| 九九精品在线播放| 欧美一级高清免费播放| 亚洲国产婷婷香蕉久久久久久| 精品丝袜一区二区三区| 久久久久久久成人| 国产精品久久久久久久久久ktv| 在线亚洲午夜片av大片| 国产亚洲福利一区| 日韩av在线网址| 亚洲欧美国产高清va在线播| 欧美福利视频网站| 91精品国产沙发| 在线电影欧美日韩一区二区私密| 91亚洲人电影| 国产精品美女视频网站| 欧美大片大片在线播放| 美乳少妇欧美精品| www.久久久久| 亚洲美女免费精品视频在线观看| 韩国美女主播一区| 欧美视频第一页| 日韩av片电影专区| 国自产精品手机在线观看视频| 亚洲欧美国产日韩中文字幕| 日韩美女在线观看一区| 欧美激情一区二区三区在线视频观看| 国产精品久久久久久久久免费看| 91精品国产色综合久久不卡98口| 欧日韩不卡在线视频| 国产精品日韩在线播放| 亚洲欧美国产精品va在线观看| 久久久久成人网| 欧美日韩中国免费专区在线看| 亚洲欧洲在线看| 成人在线激情视频| 91午夜在线播放| 一区二区欧美日韩视频| 欧美国产日韩中文字幕在线| 久久视频在线播放| 色噜噜久久综合伊人一本| 亚洲国产高清高潮精品美女| 色综合导航网站| 日韩精品www| 国产一区二区三区视频在线观看| 久久中文字幕国产| 97成人精品视频在线观看| 日韩欧美主播在线| 97久久精品在线| 成人国产精品一区二区| 国产福利视频一区| 欧美裸体xxxx| 欧美插天视频在线播放| 亚洲天堂男人天堂女人天堂| 亚洲精品一区二区三区不| 欧美激情中文网| 亚洲女在线观看| 欧美成人合集magnet| 最近2019中文字幕第三页视频| 97人人做人人爱| 国产精品成人va在线观看| 原创国产精品91| 日韩资源在线观看| 97国产精品人人爽人人做| 久久国产精品首页| 69国产精品成人在线播放| 日韩精品免费一线在线观看| www.亚洲人.com| 亚洲欧美日韩直播| 国产精品成av人在线视午夜片| 在线日韩中文字幕| 久久久久久香蕉网| 亚洲欧美在线磁力| 欧美香蕉大胸在线视频观看| 国产成人综合精品| 国产在线拍偷自揄拍精品| 国产精品久久久久久久美男| 亚洲久久久久久久久久久| 国产精品亚洲网站| 欧美精品电影免费在线观看| 性色av一区二区三区| 97视频免费看| 亚洲美女性生活视频| 欧美成人精品一区二区三区| 日韩中文字幕在线看| 性色av一区二区三区| 亚洲一区二区在线播放| www.亚洲免费视频| 久久精品视频在线播放| 日韩在线视频网站| 欧美精品久久一区二区| 亚洲国产小视频在线观看| 日韩精品在线播放| 久久久精品免费| 亚洲无线码在线一区观看| 国产欧美在线看| 久久这里只有精品99| 国产精品视频1区|