Javaweb之response之刷新與重定向

 Javaweb之刷新與重定向

Java_web 中的response的刷新問題

第一種也是以後最常用的刷新,使用上下文轉發的方式;

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

String message="<meta http-equiv='refresh' content='3;url=/responseFile/index.jsp'>登陸成功,3秒後自動跳轉,如果失敗請點擊<a href=''>超鏈接</a>";

this.getServletContext().setAttribute("message",message);

this.getServletContext().getRequestDispatcher("/message.jsp").forward(request, response);

}

 

private void test2(HttpServletResponse response) throws IOException {

response.setContentType("text/html;charset=UTF-8");

response.setHeader("refresh","3;url=/responseFile/index.jsp");

response.getWriter().write("登陸成功,3秒後自動跳轉,如果失敗請點擊<a href=''>超鏈接</a>");

}

 

private void test1(HttpServletResponse response) {

response.setHeader("refresh","3;url=http://www.sina.com");

}

通過response實現請求重定向。

請求重定向指:一個web資源收到客戶端請求後,通知客戶端去訪問另外一個web資源,這稱之爲請求重定向。

應用場景:用戶登陸。

實現方式

response.sendRedirect()

實現原理:

302狀態碼和location頭即可實現重定向

 

getOutputStreamgetWriter方法分別用於得到輸出二進制數據、輸出文本數據的ServletOuputStreamPrintwriter對象。

getOutputStreamgetWriter這兩個方法互相排斥,調用了其中的任何一個方法後,就不能再調用另一方法。

Servlet程序向ServletOutputStreamPrintWriter對象中寫入的數據將被Servlet引擎從response裏面獲取,Servlet引擎將這些數據當作響應消息的正文,然後再與響應狀態行和各響應頭組合後輸出到客戶端。

Serlvetservice方法結束後,Servlet引擎將檢查getWritergetOutputStream方法返回的輸出流對象是否已經調用過close方法,如果沒有,Servlet引擎將調用close方法關閉該輸出流對象

 

轉發和重定向的區別

重定向response.sendRedirect("success.jsp");

轉發:request.getRequestDispatcher("success.jsp").forward(request,response);

1.轉發在服務器端完成的;重定向是在客戶端完成的

2.轉發的速度快;重定向速度慢

3..轉發的是同一次請求;重定向是兩次不同請求

4..轉發不會執行轉發後的代碼;重定向會執行重定向之後的代碼

5.轉發地址欄沒有變化;重定向地址欄有變化

6..轉發必須是在同一臺服務器下完成;重定向可以在不同的服務器下完成

 

response.getWriter().write("aaaaaaa");

 

/*response.setStatus(302);

response.setHeader("location","/servletdemo/index.jsp");*/

response.sendRedirect("/servletdemo/index.jsp");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章