1. 程式人生 > >關於Servlet中的轉發和重定項

關於Servlet中的轉發和重定項

但是 red clas request對象 自己 變化 dir edi response

一:轉發

  首先轉發屬於服務器內部行為,通過瀏覽器的地址欄是看不到URL變化的。比如說客戶端發送一個請求到ServletA,ServletA接收到請求,但是沒有能力處理,但是ServletA知道ServletB可以處理,它不想直接告訴瀏覽器說自己處理不了,於是ServletA就將請求傳遞給了ServletB代為完成,該行為發生在服務器內部,客戶端 看不到變化,當ServletB處理完畢請求後,會響應客戶端,該行為相當於A盜用了B的勞動成果。(兩個Servlet中使用的request和response是同一個)

 

   req.getRequestDispatcher("/ServletB").forward(req, resp);    //
使用request對象   // WEB-INF文件夾中的文件,在外部是沒有辦法訪問的。但是可以直接在服務器內部,通過代碼進行訪問(如訪問/WEB-INF/notice.html):   // req.getRequestDispatcher("/WEB-INF/notice.html").forward(req,resp);

二:重定向

  重定向不屬於服務器內部行為,客戶端發送完請求後會清楚的看到瀏覽器地址欄的變化。比如說客戶端發送一個請求到ServletA,ServletA接收到請求,但是沒有能力處理,於是它就回復客戶端說自己處理不了,在回復的同時告知了客戶端說ServletB可以處理,讓客戶端去找ServletB,因此地址欄會發生變化,由原本的ServletA重新指定到ServletB。

  

   resp.sendRedirect("/ServletB");  //使用response對象

關於Servlet中的轉發和重定項