java Servlet結構概述3之請求響應1
Servlet最主要的作用是處理客戶端的請求,並向客戶端做出響應。
jsp也可以處理客戶端的請求,那麼jsp和Servlet有什麼關係捏,留在闡述完生命週期後再來講述這兩者的關係以及MVC模式
我們知道Service()方法中有兩個引數HttpServletRequest request以及HttpServletRespone response,那麼他們的作用是什麼?
每次針對Servlet的請求,web伺服器都在呼叫Service方法之前建立兩個物件,分別即是以上HttpServletRequest以及HttpServletRespone ,其中前者封裝HTTP請求訊息,簡稱request物件;後者封裝HTTP響應訊息,簡稱response訊息。
從圖中可以看出呼叫一次Servlet就會建立兩個物件,但是每個Servlet卻只有一個例項物件。
這裡也就可以直到為什麼init()初始化方法只執行一次。
關於響應物件response有幾個地方需要了解
解決中文輸出亂碼的問題
public void doGet(HttpServletRequest request,HttpServletRespone response){
String china=“中國”;
PrintWriter out=response.getWriter();
put.println(china);
}
訪問含有這個doGet()方法的Servlet會出現亂碼,為什麼捏?
這裡就是response物件在封裝響應訊息時候,對字元輸出流編碼時採用的iso-8859-1的字元碼錶,但是這個字元碼錶並不相容中文。會將“中國”這兩個字元編碼為63 63(對於在iso-8859-1字元碼錶中查詢不到的字元統一編碼63)當瀏覽器在對接收到的響應訊息解碼時,採用的GB2312,於是乎就出現亂碼了。
所以這就有了
`response.setCharacterEncoding("utf-8");`
但是這樣也只是解決了響應訊息的編碼,瀏覽器的解碼方式依然是GB2312.,根據響應訊息的編碼數字在瀏覽器預設的字元碼錶中找到的內容依然是與響應訊息不同
所以我們應該設定HttpServletResponse使用utf-8編碼
也應該通知瀏覽器用utf-8解碼
response.setCharacterEncoding("utf-8");`//設定HttpServletResponse使用utf-8編碼
response.setHeader("Content-Type","text/html;charset=utf-8");//通知瀏覽器用utf-8解碼
上面的內容是否和jsp頁面上有似曾相識的感覺
jsp頁面處理表單post方法提交的資料時
只不過那時我們使用的是 request,setCharacterEncoding(“utf-8”);
jsp的page指令中<%@page contentType=“text/html;chatset=utf-8”%>
當然實際上不可能這麼複雜,和jsp的page指令相似我們可以直接用
response.setContentType("text/html;charset=utf-8");
網頁定時重新整理跳轉
response.setHeader("refresh","3");
resposne.setHeader("refresh","3,url=another.jsp");
請求重定向
response.sendRedirct(java.lang.String location);
關於請求物件request有幾個地方需要了解
request.getParameter(“name”);
request.getParameterValues(“name”);
轉發
RequestDispatcher getDispatcher(String path)
RequestDispatcher dis=request.getDispatcher("path");
dis.forward(request,response);
在jsp中
<jsp:forward page="url">
相關文章
- java Servlet結構概述JavaServlet
- SpringMVC(1)- 入門案例、基本配置、請求、響應、Servlet相關介面SpringMVCServlet
- DRF之請求與響應
- HTTP 請求與響應HTTP
- Http請求與響應HTTP
- ThinkPHP 請求與響應PHP
- HTTP的請求與響應HTTP
- Go如何響應http請求?GoHTTP
- SpringMVC 入門、請求、響應SpringMVC
- http請求概述HTTP
- HTTP請求頭與響應頭HTTP
- HTTP請求與響應簡析HTTP
- request和response——請求響應物件物件
- HttpClient入門(1) 傳送請求,處理響應及響應重複讀取HTTPclient
- ajax請求servlet返回資料Servlet
- Servlet 請求(第三篇)Servlet
- SPA單應用-請求介面URL結構設計
- SpringSession系列-請求與響應重寫SpringGseSession
- 處理請求(AFURLRequestSerialization)和響應(AFURLResponseSerialization)
- HTTP請求格式和HTTP響應格式HTTP
- Django REST framework的請求與響應DjangoRESTFramework
- curl 請求獲取響應時間
- Qt - http網路請求與響應QTHTTP
- 作業4_請求與響應
- http請求頭與響應頭的應用HTTP
- Servlet概述Servlet
- 4.爬蟲 requests庫講解 GET請求 POST請求 響應爬蟲
- Java之ServletJavaServlet
- 指令碼化HTTP 取得響應 指定請求指令碼HTTP
- Spring MVC能響應HTTP請求的原因?SpringMVCHTTP
- HTTP請求頭和響應頭詳解HTTP
- Wireshark的HTTP請求包和響應包如何對應HTTP
- 資料結構小白系列之資料結構概述資料結構
- Spring系列 SpringMVC的請求與資料響應SpringMVC
- 聊聊如何利用kafka實現請求-響應模式Kafka模式
- Apache 記錄請求響應時間日誌Apache
- flask路由系統、偏函式、CBV、模板、請求響應、session、請求擴充套件Flask路由函式Session套件
- Servlet 體系結構Servlet