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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Request原理

發布時間:2025/1/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Request原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Request

**1.原理

1.Tomcat服務器會根據請求url中的資源路徑,創建對應的ServletDemo01的對象。

2.Tomcat服務器,會創建request和response對象,request對象中封裝請求信息數據。

3.Tomcat將request和response兩個對象傳遞給service方法,并且調用service方法。(Tomcat利用反射的方式創建對象并且調用service方法)

4.程序員可以通過request對象獲取請求信息數據,通過response對象設置響應信息數據。

5.服務器在給瀏覽器做出響應之前,會從response對象中拿到程序員設置的響應消息數據。

這里要注意:request和response對象是Tomcat創建的,而我們只是負責使用而已。

**2.request對象繼承體系結構

ServletRequest -- 接口| 繼承 HttpServletRequest -- 接口| 實現 org.apache.catalina.connector.RequestFacade 類 (該類是Tomcat的,Tomcat時純java寫的)

**3.request功能

***3.1.獲取請求行數據

代碼參考:https://github.com/yangmingyang/geektime-spring-test/blob/master/myWeb/src/cn/mingyang/web/w02_http/Demo02_http_request.java

1.獲取請求消息數據 1.獲取請求行數據* GET /day14/demo1?name=zhangsan HTTP/1.1方法:1.獲取請求方式:GET* String getMethod()2.獲取虛擬目錄:/day14* String getContextPath()3.獲取Servlet路徑:/demo1* String getServletPath()4.獲取get方式請參數:name=zhangsan* String getQueryString()5.獲取請求URI:/day14/demo1* String getRequestURI(): /day14/demo1* StringBuffer getRequestURL(): http://localhost/day14/demo1* URL:統一資源定位符:http://localhost/day14/demo1* URI:統一資源標識符:/day14/demo1注意:URI的范圍比URL的訪問大6.獲取協議及版本:HTTP/1.1* String getProtocol()7.獲取客戶端的ip地址* String getRemoteAddr()

***3.2.獲取請求頭數據

方法* String getHeader(String name):通過請求頭的名稱獲取請求頭的值。* Enumeration<String> getHeaderNames():獲取所有的請求頭名稱。

***3.3.獲取請求體數據

請求體:只有POST請求方式,才有請求體,在請求體中封裝了POST請求的參數 步驟:1.獲取流對象BufferedReader getReader():獲取字符輸入流,只能操作字符數據。ServletInputStream getInputStream():獲取字節輸入流,可以操作所有類型數據2.再從流對象中拿數據

**4.其他功能

***4.1.獲取請求參數通用方法

無論GET還是POST請求方式都可以使用下列方法:

String getParameter(String name):根據參數名詞獲取參數值 String[] getParameterValues(String name):根據參數名稱獲取參數值的數組 Enumeration<String> getParameterNames():獲取所有請求的參數名稱 Map<String,String[]> getParameterMap():獲取所有參數的map集合中文亂碼問題:get方式:Tomcat8以上版本已經將Get方式亂碼問題解決了。post方式:會亂碼解決:在獲取參數前,設置request的編碼request.setCharacterEncding("utf-8");

?

***4.2.請求轉發

?一種在服務器內部的資源跳轉方式

步驟: 1.通過request對象獲取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path). 2.使用RequestDispatcher對象來進行轉發: forward(ServletRequest request,ServletResponse response).特點: 1.瀏覽器地址欄路徑不發生變化。 2.只能轉發到當前服務器內部資源中。 3.轉發是一次請求。

***4.3.共享數據

域對象:一個有作用范圍的對象,可在范圍內共享數據。 request域:代表一次請求的范圍,一般用于請求轉發的多個資源中共享數據。 方法: 1.void setAttribute(String name,Object obj):存儲數據 2.Object getAttitude(String name):通過鍵獲取值 3.void removeAttribute(String name):通過鍵移除鍵值對

***4.4.獲取ServletContext

?

總結

以上是生活随笔為你收集整理的Request原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。