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'>登陸成功,
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資源收到客戶端請求後,通知客戶端去訪問另外一個
應用場景:使用者登陸。
實現方式
response.sendRedirect()
實現原理:
302狀態碼和location頭即可實現重定向
getOutputStream和getWriter方法分別用於得到輸出二進位制資料、輸出文字資料的ServletOuputStream、Printwriter物件。
getOutputStream和getWriter這兩個方法互相排斥,呼叫了其中的任何一個方法後,就不能再呼叫另一方法。
Servlet程式向ServletOutputStream或PrintWriter物件中寫入的資料將被Servlet引擎從response裡面獲取,Servlet引擎將這些資料當作響應訊息的正文,然後再與響應狀態行和各響應頭組合後輸出到客戶端。
Serlvet的service方法結束後,Servlet引擎將檢查getWriter或getOutputStream方法返回的輸出流物件是否已經呼叫過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");