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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HttpServletRequest(request的一些API)

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

一、request的運(yùn)行流程

首先,自己寫一個(gè)web工程,也就是建一個(gè)工程;當(dāng)把該web工程發(fā)布到Tomcat服務(wù)器當(dāng)中,可以讓外界訪問,這就成了一個(gè)web應(yīng)用。
在客戶端輸入一個(gè)網(wǎng)站,是web應(yīng)用資源的地址URL,該請求會在瀏覽器客戶端自動生成一個(gè)http請求,然后客戶端會將相應(yīng)的請求發(fā)送到相應(yīng)的服務(wù)器內(nèi)部,服務(wù)器首先由Tomcat引擎接收該請求,然后Tomcat引擎會分析http協(xié)議上的請求行,該請求行上面有請求方式,根據(jù)請求方式是get還是post從而確定調(diào)用是doGet方法還是doPost方法,請求行上面有地址,Tomcat會幫你找該地址在的Tomcat服務(wù)器內(nèi)部的某一個(gè)web應(yīng)用(Tomcat容器中web-app下可以存放多個(gè)web應(yīng)用),找到對應(yīng)的web應(yīng)用之后,開始創(chuàng)建對象,默認(rèn)第一次訪問創(chuàng)建對象,默認(rèn)調(diào)用servlet方法,重寫servlet方法之后會調(diào)用doGet方法或者doPost方法,當(dāng)調(diào)用doGet方法的時(shí)候,需要兩個(gè)參數(shù)。一個(gè)是request,一個(gè)是response,這兩個(gè)參數(shù),誰去調(diào)用改doGet方法管提供這個(gè)倆個(gè)參數(shù),doGet方法由Tomcat引擎負(fù)責(zé)調(diào)用,它在調(diào)用的時(shí)候,幫你創(chuàng)建兩個(gè)對象,一個(gè)是request代表請求,一個(gè)是response代表響應(yīng)。其中request內(nèi)部封裝http請求的所有內(nèi)容;response是空的,因?yàn)樗眄憫?yīng),response有自己的緩沖區(qū),可以向緩沖區(qū)里面添加內(nèi)容,可以添加響應(yīng)行、響應(yīng)頭、響應(yīng)體(分別有對應(yīng)的方法),添加完成之后,Tomcat引擎會獲取緩沖區(qū)內(nèi)容,會組裝成http響應(yīng)的東西,然后發(fā)送到客戶端,通過裝包也可看到,客戶端獲得這些內(nèi)容會自動根據(jù)響應(yīng)進(jìn)行解析,最終在頁面上顯示響應(yīng)體的內(nèi)容。

二、ServletContext域和Request域的生命周期

ServletContext
創(chuàng)建:服務(wù)器啟動
銷毀:服務(wù)器關(guān)閉
域的作用范圍:整個(gè)web應(yīng)用

Request
創(chuàng)建: 訪問時(shí)創(chuàng)建request對象
銷毀:響應(yīng)結(jié)束request銷毀
(生命周期為一瞬間)
域的作用范圍:一次請求中

三、轉(zhuǎn)發(fā)和重定向的區(qū)別

1).重定向兩次請求 轉(zhuǎn)發(fā)一次請求
2).重定向的地址欄的地址變化 轉(zhuǎn)發(fā)的地址不變
3).重定向可以訪問外部網(wǎng)站 轉(zhuǎn)發(fā)不能訪問外部網(wǎng)站,只能訪問內(nèi)部資源
4).轉(zhuǎn)發(fā)的性能要優(yōu)于重定向

四、客戶端地址與服務(wù)器端地址的區(qū)別

客戶端地址:是客戶端去訪問服務(wù)器的地址,服務(wù)器外部的地址
客戶端地址必須寫上web應(yīng)用的名稱,代表要去Tomcat容器中去找哪個(gè)web應(yīng)用
例如:
直接輸入地址
重定向
也就是,只要是服務(wù)器外部跳出服務(wù)器,然后再去訪問服務(wù)器內(nèi)部的資源,豆角客戶端地址

服務(wù)器端地址:是服務(wù)器內(nèi)部資源跳轉(zhuǎn)訪問的地址
不需要寫web應(yīng)用的名稱
例如:
轉(zhuǎn)發(fā)

總結(jié):

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

獲得請求方式:request.getMethod();
獲得請求資源:request.getRequestURI();
request.getRequestURL();這個(gè)長,協(xié)議、主機(jī)名、端口都有
動態(tài)獲得web應(yīng)用的名稱:request.getContextPath();
獲得客戶機(jī)的一些信息:request.getRemoteAddr();

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

request.getHeader(name);

request獲得請求體(請求參數(shù))

request.getParameter(name);//返回值為String
request.getParameterMap();//將所有的數(shù)據(jù)以Map形式封裝,返回值為Map<String ,String[]>
request.getParameterValues(name);//返回值為String[]字符串?dāng)?shù)組

注意: 客戶端發(fā)送的參數(shù),到服務(wù)器端獲得后都是字符串
獲得中文亂碼 的解決:

post提交: request.setCharacterEncoding("UTF-8");
get提交: parameter = new String(parameter.getBytes("iso8859-1"),"UTF-8");//先用iso8859-1默認(rèn)編碼再用UTF-8解碼

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

轉(zhuǎn)發(fā):request.getRequestDispather(轉(zhuǎn)發(fā)的地址,服務(wù)器內(nèi)部的地址,不需要web應(yīng)用名稱).forward(request, response);
例如:request.getRequestDispatcher("/login.jsp").forward(request, response);
存:request.setAttribute(name,value);
取:request.getAttribute(name,value);//取的時(shí)候需要強(qiáng)轉(zhuǎn)一下

總結(jié)

以上是生活随笔為你收集整理的HttpServletRequest(request的一些API)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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