日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WBE15—HttpServletRequest

發(fā)布時(shí)間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WBE15—HttpServletRequest 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.HttpServletRequest概述

我們?cè)趧?chuàng)建Servlet時(shí)會(huì)覆蓋service()方法,或doGet()/doPost(),這些方法都有兩個(gè)參數(shù),一個(gè)為代表請(qǐng)求的request和代表響應(yīng)response。

service方法中的request的類型是ServletRequest,而doGet/doPost方法的request的類型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加強(qiáng)大,今天我們學(xué)習(xí)HttpServletRequest。

2.request的運(yùn)行流程

3.通過(guò)抓包工具抓取Http請(qǐng)求


因?yàn)?/span>request代表請(qǐng)求,所以我們可以通過(guò)該對(duì)象分別獲得Http請(qǐng)求的請(qǐng)求行,請(qǐng) 求頭和請(qǐng)求體

4.通過(guò)request獲得請(qǐng)求行

獲得客戶端的請(qǐng)求方式:String?getMethod()

獲得請(qǐng)求的資源:

????String?getRequestURI()?

????StringBuffer?getRequestURL()?

????String?getContextPath()?---web應(yīng)用的名稱

????String?getQueryString()?---- get提交url地址后的參數(shù)字符串

????username=zhangsan&password=123

注意:request獲得客戶機(jī)(客戶端)的一些信息

request.getRemoteAddr() --- 獲得訪問(wèn)的客戶端IP地址

5.通過(guò)request獲得請(qǐng)求頭

????long?getDateHeader(String?name)

????String?getHeader(String?name)

????Enumeration?getHeaderNames()

????Enumeration?getHeaders(String?name)

????int?getIntHeader(String?name)

referer頭的作用:執(zhí)行該此訪問(wèn)的的來(lái)源

做防盜鏈

6.通過(guò)request獲得請(qǐng)求體

請(qǐng)求體中的內(nèi)容是通過(guò)post提交的請(qǐng)求參數(shù),格式是:

username=zhangsan&password=123&hobby=football&hobby=basketball

key ---------------------- value

????username [zhangsan]

????password [123]

????hobby [football,basketball]

以上面參數(shù)為例,通過(guò)一下方法獲得請(qǐng)求參數(shù):

????String?getParameter(String?name)?

????String[]?getParameterValues(String?name)

????Enumeration?getParameterNames()

????Map<String,String[]>?getParameterMap()?

注意:

????get請(qǐng)求方式的請(qǐng)求參數(shù) 上述的方法一樣可以獲得

????解決post提交方式的亂碼:request.setCharacterEncoding("UTF-8");

????解決get提交的方式的亂碼:

????????parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

7.request的其他功能

(1)request是一個(gè)域?qū)ο?/h4>

request對(duì)象也是一個(gè)存儲(chǔ)數(shù)據(jù)的區(qū)域?qū)ο?#xff0c;所以也具有如下方法:

????setAttribute(String?name, Object?o)

????getAttribute(String?name)

????removeAttribute(String?name)

注意:request域的作用范圍:一次請(qǐng)求中

(2)request完成請(qǐng)求轉(zhuǎn)發(fā)

獲得請(qǐng)求轉(zhuǎn)發(fā)器----path是轉(zhuǎn)發(fā)的地址

????RequestDispatcher?getRequestDispatcher(String?path)

通過(guò)轉(zhuǎn)發(fā)器對(duì)象轉(zhuǎn)發(fā)

????requestDispathcer.forward(ServletRequest?request, ServletResponse?response)

注意:ServletContext域與Request域的生命周期比較?

????ServletContext:

????????創(chuàng)建:服務(wù)器啟動(dòng)

????????銷毀:服務(wù)器關(guān)閉

?????域的作用范圍:整個(gè)web應(yīng)用

????request

????????創(chuàng)建:訪問(wèn)時(shí)創(chuàng)建request

????????銷毀:響應(yīng)結(jié)束request銷毀

????????????域的作用范圍:一次請(qǐng)求中

注意:轉(zhuǎn)發(fā)與重定向的區(qū)別?

????1)重定向兩次請(qǐng)求,轉(zhuǎn)發(fā)一次請(qǐng)求

????2)重定向地址欄的地址變化,轉(zhuǎn)發(fā)地址不變

????3)重新定向可以訪問(wèn)外部網(wǎng)站 轉(zhuǎn)發(fā)只能訪問(wèn)內(nèi)部資源

????4)轉(zhuǎn)發(fā)的性能要優(yōu)于重定向

注意:客戶端地址與服務(wù)器端地址的寫法?

客戶端地址:

????是客戶端去訪問(wèn)服務(wù)器的地址,服務(wù)器外部的地址,特點(diǎn):寫上web應(yīng)用名

直接輸入地址:

????????重定向

服務(wù)器端地址:

????服務(wù)器內(nèi)部資源的跳轉(zhuǎn)的地址,特點(diǎn):不需要寫web應(yīng)用的名稱

????????轉(zhuǎn)發(fā)

總結(jié):

????request獲得行的內(nèi)容

????????request.getMethod()

????????request.getRequestURI()

????????request.getRequestURL()

????????request.getContextPath()

????????request.getRemoteAddr()

????request獲得頭的內(nèi)容

????????request.getHeader(name)

????????request獲得體(請(qǐng)求參數(shù))

????????String request.getParameter(name)

????????Map<String,String[]> request.getParameterMap();

????????String[] request.getParameterValues(name);

注意:客戶端發(fā)送的參數(shù) 到服務(wù)器端都是字符串

獲得中文亂碼的解決:

????post:????request.setCharacterEncoding(“UTF-8”);

????get:

????????parameter = new String(parameter.getBytes(“iso8859-1”),”UTF-8”);

request轉(zhuǎn)發(fā)和域

????request.getRequestDispatcher(轉(zhuǎn)發(fā)的地址).forward(req,resp);

????request.setAttribute(name,value)

????request.getAttribute(name)

總結(jié)

以上是生活随笔為你收集整理的WBE15—HttpServletRequest的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。