HttpServletRequest學習總結

2021-09-13 01:17:06 字數 3874 閱讀 9502

一、httpservletrequest概述

我們在建立servlet時會覆蓋service()方法,或doget()/dopost(),這些方法都有兩個引數,乙個為代表請求的request和代表響應response。

service方法中的request的型別是servletrequest,而doget/dopost方法的request的型別是httpservletrequest,httpservletrequest是servletrequest的子介面,功能和方法更加強大,今天我們學習httpservletrequest。

二、request的執行流程

三、通過抓包工具抓取http請求

因為request代表請求,所以我們可以通過該物件分別獲得http請求的請求行,請 求頭和請求體

四、通過request獲得請求行

獲得客戶端的請求方式:string

getmethod

()獲得請求的資源:

string

getrequesturi

() stringbuffer

getrequesturl

() string

getcontextpath

() ---web應用的名稱

string

getquerystring

() ---- get提交url位址後的引數字串

username=zhangsan&password=123

注意:request獲得客戶機(客戶端)的一些資訊

request.getremoteaddr() --- 獲得訪問的客戶端ip位址

五、通過request獲得請求頭

longgetdateheader

(string

name)

string

getheader

(string

name)

enumeration

getheadernames

()enumeration

getheaders

(string

name)

intgetintheader

(string

name)

referer

做防盜煉

六、通過request獲得請求體

請求體中的內容是通過post提交的請求引數,格式是:

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

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

username [zhangsan]

password [123]

hobby [football,basketball]

以上面引數為例,通過一下方法獲得請求引數:

string

getparameter

(string

name) 

string

getparametervalues

(string

name)

enumeration

getparameternames

()map

getparametermap

()注意:get請求方式的請求引數 上述的方法一樣可以獲得

解決post提交方式的亂碼:request.setcharacterencoding("utf-8");

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

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

七、request的其他功能

request是乙個域物件

request物件也是乙個儲存資料的區域物件,所以也具有如下方法:

setattribute

(string

name, object

o)getattribute

(string

name)

removeattribute

(string

name)

注意:request域的作用範圍:一次請求中

2.request完成請求**

獲得請求**器----path是**的位址

requestdispatcher

getrequestdispatcher

(string

path)

通過**器物件**

requestdispathcer.forward

(servletrequest

request, servletresponse

response)

注意:servletcontext域與request域的生命週期比較?

servletcontext:

建立:伺服器啟動

銷毀:伺服器關閉

域的作用範圍:整個web應用

request:

建立:訪問時建立request

銷毀:響應結束request銷毀

域的作用範圍:一次請求中

注意:**與重定向的區別?

1)重定向兩次請求,**一次請求

2)重定向位址列的位址變化,**位址不變

3)重新定向可以訪問外部** **只能訪問內部資源

4)**的效能要優於重定向

重定向**

總結:request獲得行的內容

request.getmethod()

request.getrequesturi()

request.getrequesturl()

request.getcontextpath()

request.getremoteaddr()

request獲得頭的內容

request.getheader(name)

request獲得體(請求引數)

string request.getparameter(name)

maprequest.getparametermap();

string request.getparametervalues(name);

注意:客戶端傳送的引數 到伺服器端都是字串

獲得中文亂碼的解決:

post:request.setcharacterencoding(「utf-8」);

get:

parameter = new string(parameter.getbytes(「iso8859-1」),」utf-8」);

request**和域

request.getrequestdispatcher(**的位址).forward(req,resp);

request.setattribute(name,value)

request.getattribute(name)

HttpServletRequest常用的方法

通過request物件得到客戶端url方法如下 list 1 request.getrequesturl color red 客戶請求的url,不包括引數資料。2 request.getrequesturi color red cbice boardaction.do color 將url的網域名稱...

HttpServletRequest常用的方法

1 假設客戶端位址是 通過request物件得到客戶端url方法如下 1 request.getrequesturl 客戶請求的url,不包括引數資料。2 request.getrequesturi cbice boardaction.do 將url的網域名稱和尾隨的引數擷取掉,剩下的那部分就是ur...

HttpServletRequest方法總結

httpservletrequest方法總結 getscheme 方法返回請求的計畫,比如http,https或者ftp.getservername 方法返回被傳送請求的伺服器的主機名 getserverport 方法返回被傳送請求的埠號。getcontextpath 返回請求位址的根目錄,以 開關...