1. 程式人生 > >Javaweb之response之重新整理與重定向

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");