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 (1) —— Filter過濾請求與響應JavaServletFilter
- java Servlet結構概述JavaServlet
- jquery的ajax請求servlet與響應jQueryServlet
- SpringMVC(1)- 入門案例、基本配置、請求、響應、Servlet相關介面SpringMVCServlet
- DRF之請求與響應
- ThinkPHP 請求與響應PHP
- HTTP 請求與響應HTTP
- Http請求與響應HTTP
- WebxFrameworkFilter 請求響應流程WebFrameworkFilter
- Django請求響應物件Django物件
- Go如何響應http請求?GoHTTP
- HTTP的請求與響應HTTP
- 理解Http請求與響應HTTP
- http請求概述HTTP
- HttpClient入門(1) 傳送請求,處理響應及響應重複讀取HTTPclient
- HTTP請求與響應簡析HTTP
- SpringMVC 入門、請求、響應SpringMVC
- request和response——請求響應物件物件
- HTTP請求頭與響應頭HTTP
- ajax請求servlet返回資料Servlet
- Servlet 請求(第三篇)Servlet
- HTTP請求格式和HTTP響應格式HTTP
- 作業4_請求與響應
- curl 請求獲取響應時間
- Django REST framework的請求與響應DjangoRESTFramework
- 處理請求(AFURLRequestSerialization)和響應(AFURLResponseSerialization)
- Java Web學習(1): 客戶端請求、伺服器響應及其HTTP狀態碼JavaWeb客戶端伺服器HTTP
- SPA單應用-請求介面URL結構設計
- Servlet中請求重定向和請求轉發和includeServlet
- http請求頭與響應頭的應用HTTP
- 4.爬蟲 requests庫講解 GET請求 POST請求 響應爬蟲
- 指令碼化HTTP 取得響應 指定請求指令碼HTTP
- SpringSession系列-請求與響應重寫SpringGseSession
- 使用RestTemplate,顯示請求資訊,響應資訊REST
- HTTP請求頭和響應頭詳解HTTP
- django從請求到響應的過程Django
- HTTP協議---HTTP請求中的常用請求欄位和HTTP的響應狀態碼及響應頭HTTP協議
- Java之ServletJavaServlet