咱們建立servlet的時會覆蓋service()方法,或doGet/doPost(),這些方法都有兩個參數,一個表明請求request一個表明響應reponse;設置響應狀態碼:response.setStatus(304);302:重定向;304:訪問緩存;404:地址錯誤;500:找不到服務器資源html
Servlet是服務器端程序,主要用來交互式地瀏覽和修改數據,生成動態web內容。web服務器接收到客戶端的Servlet請求後,若是檢查到已經裝載並建立了該Servlet的實例對象,則會建立一個用於封裝HTTP請求消息的HttpServletRequest對象和一個表明Http響應消息的HttpServletResponse對象,而後調用Servlet的service()方法,將請求和響應對象做爲參數傳遞進去,這樣客戶端經過HttpServletRequest對象將請求發送給服務器,服務器經過HttpServletResponse對象將響應傳遞給客戶端,達到通訊的目的。web
HttpServletResponse瀏覽器
request是請求對象,而response是響應對象。緩存
1 HttpServletResponse功能介紹tomcat
response對象的功能分爲如下四種:服務器
設置響應頭信息;addHeader(「reFresh」, 「5;URL=xxxx」);ide
發送狀態碼;sendError(404);編碼
設置響應正文;getWriter().print(「fdsfdsa」);spa
重定向:sendRedirect(「path」);3d
2 設置狀態碼及其餘方法
response.setContentType("text/html;charset=utf-8"):設置響應類型爲html,編碼爲utf-8,處理相應頁面文本顯示的亂碼;
response.setCharacterEncoding(「utf-8」):若是響應類型爲文本,那麼就須要設置文本的編碼類型,而後瀏覽器使用這個編碼來解讀文本。注意,若是沒有設置contentType,那麼瀏覽器會認爲contentType爲text/html,若是沒設置編碼,那麼默認爲ISO-8859-1編碼。因此以上兩點在使用response返回結果以前必須設置。
response.setStatus(200):設置狀態碼;
response.sendError(404, 「您要查找的資源不存在」):當發送錯誤狀態碼時,Tomcat會跳轉到固定的錯誤頁面去,但能夠顯示錯誤信息。
3 設置響應頭信息
response.setHeader(「contentType」, 「text/html;charset=utf-8」):與setContentType()方法的功能相同。setContentType()方法屬於便捷方法;
刷新(定時重定向):
response.setHeader("Refresh","5; URL=http://www.baidu.com"):5秒後自動跳轉到百度主頁。
代碼
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response不是服務器跳轉,須要使用絕對路徑
//給response設置編碼,若是響應類型爲文本,咱們須要設置響應編碼和文本編碼
//設置響應類型和編碼response.setContentType("text/html;charset=UTF-8")
//設置文本編碼response.setCharacterEncoding("UTF-8")
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
//設置響應正文
response.getWriter().print("3秒後跳轉到註冊頁面");
//3秒後跳轉到1.html頁面
//response.setHeader("reFresh", "3;URL=/request_demo5/1.html");
//設置狀態碼,通常不須要咱們本身設置,這是由tomcat來分析的
//response.setStatus(404);
//response.setStatus(404, "頁面找不到");
//response.sendError(500, "後臺錯誤");
//重定向,又叫客服端跳轉,訪問百度,顯著特徵地址欄發生變化
//注意request.getRequestDispatcher().forward(request,response)是服務端跳轉
response.sendRedirect("http://www.baidu.com");
/**
* forward和redirect的區別
* forward:是服務器端的跳轉,地址欄不發生變化
* redirect:是客服端的跳轉,地址欄發送變化
*/
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
![]() |