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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Web(day05) —— 请求和响应

發布時間:2023/12/14 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Web(day05) —— 请求和响应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Java web之請求和響應

Servlet最主要作用就是處理客戶端請求并作出回應,為此,針對每次請求,Web容器在調用service()之前都會創建兩個對象,分別是HttpServletRequest和HttpServletResponse。其中HttpServletRequest封裝HTTP請求消息,HttpServletResponse封裝HTTP響應消息。需要注意的是,Web服務器運行過程中,每個Servlet都會只創建一個實例對象,不過每次請求都會調用Servlet實例的service(ServletRequest req, ServletResponse res)方法,這里HttpServletRequest是ServletRequest的子類,HttpServletResponse是ServletResponse的子類。

HttpServletRequest和HttpServletResponse接口繼承關系圖如下所示:

二、HttpServletResponse

HttpServletResponse接口繼承自ServletResponse接口,由于HTTP響應消息分為狀態行、響應消息體、消息體三部分,因此,在HttpServletResponse接口中定義了向客戶端發送響應狀態碼、響應消息頭、響應消息體的方法。雖然HttpServletResponse接口中的方法較多,但是我們常用的也就是那么幾個,如果用到其他的方法了可以閱讀響應的源碼或者相關資料就行了。
  
  發送狀態碼相關函數
發送響應消息頭相關函數

發送響應消息體相關函數

中文輸出亂碼問題
  計算機中的數據都是以二進制形式存儲的,因此,傳輸文本時,就會發生字符的字節之間的轉換。字符與字節之間的轉換時通過查碼表完成的,字符轉換為字節的過程稱為編碼,字節轉換為字符的過程稱為解碼,如果編碼和解碼使用的碼表不一樣,則會出現亂碼問題。

注意:HttpServletResponse對象的字符輸出流在編碼時,默認采用的是ISO 8859-1編碼,該編碼方式不兼容中文,比如會將"中國"編碼為"63 63"(在ISO 8959-1的碼表中查不到的字符會顯示63)。當瀏覽器對接收到的數據進行解碼時,會默認采用GB2312,將"63"解碼為"?",瀏覽器就將"中國"兩個字符解碼為"??"。
  
  HttpServletResponse程序示例

package zzz;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class Hello extends HttpServlet {@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {// 設置響應消息編碼,注釋后"中國"會顯示"??"亂碼response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.println("hello 中國");}@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {this.doGet(request, response);} }

有時會遇到定時跳轉頁面的問題,HTTP中Refresh頭字段可以通知瀏覽器在指定的時間內自動刷新并跳轉到其他頁面,網頁定時刷新并跳轉到指定頁面。

package zzz;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class Hello extends HttpServlet {@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {// 設置響應消息編碼response.setContentType("text/html;charset=utf-8");response.setHeader("Refresh", "2;url=http://www.baidu.com");PrintWriter out = response.getWriter();out.println("hello 中國,2秒后跳轉到百度...");}@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {this.doGet(request, response);} }

三、HttpServletRequest

HttpServletRequest接口繼承ServletRequest接口,專門用于封狀HTTP請求消息。由于HTTP請求信息包括請求行、請求頭和請求體三部分, 所以HttpServletRequest接口定義了獲取請求行、請求頭和請求體的相關方法。
  
獲取請求行的相關方法

獲取請求消息頭的相關方法

打印請求消息頭字段的所有值

打印請求消息頭字段的所有值

package zzz;import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration;import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class Hello extends HttpServlet {@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {// 設置響應消息編碼response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();Enumeration<String> names = request.getHeaderNames();while (names.hasMoreElements()) {String name = names.nextElement();String value = request.getHeader(name);out.println(name + ": " + value + "</br>");}}@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {this.doGet(request, response);} }

獲取請求體的相關方法

四、RequestDispatcher接口

當一個Web資源受到客戶端請求后,如果希望服務器通知另外一個資源如處理請求,除了使用功能sendRedirect()實現重定向外,還可以通過RequestDispatcher接口的實例對象來實現,在ServletRequest接口中定義了一個獲取RequestDispatcher對象的方法–getRequestDispatcher(String path),它返回某個路徑所指定資源的RequestDispatcher對象,參數path必須以"/"開頭,用于表示當前Web應用的根目錄,也就是path路徑必須是在本Web程序中,否則會出現異常。

RequestDispatcher接口中方法

總結

以上是生活随笔為你收集整理的Java Web(day05) —— 请求和响应的全部內容,希望文章能夠幫你解決所遇到的問題。

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