JAVA中級(九)request(2)請求轉發,服務器內部的交流

request請求轉發,就是當一個servlet接收到了一個請求,這個servlet處理完這個請求後需要另外一個servlet接着繼續處理。那麼此時將這個已經先處理了一半的request,reeponse發送給這個第二個servlet的過程就是request請求轉發

過程大致如下所示:
在這裏插入圖片描述
request請發是在服務器內部進行的和客戶端沒有關係。因此不會改變請求的url。在日常開發中請求轉發是經常使用的。比如servlet轉發到一個jsp頁面。

1,如何實現請求轉發?
1,使用getRequestDispatcher(String);//獲取請求轉發,傳入轉發目的地的路徑
2,在使用forward(request,response);//將request和response轉發過去.
接下來模擬一個場景,就是發送一個請求包含name和sex兩個參數。name由servlet1處理sex由servlet2處理。

@WebServlet(name = "ServletDemo1",urlPatterns = {"/servletDemo1"})
public class ServletDemo1 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//模擬客戶端發送一個請求帶有name和sex參數。這個servlet處理name,
		//sex參數又servlet2處理
        String name = request.getParameter("name");
        System.out.println("servletDemo1:"+name);
        //請求轉發
      request.getRequestDispatcher("/servletDemo2").forward(request,response);
    }
}

@WebServlet(name = "ServletDemo2", urlPatterns = {"/servletDemo2"})
public class ServletDemo2 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //這個處理sex
        String sex = request.getParameter("sex");
        System.out.println("servletDemo2:"+sex);
    }
}

啓動tomcat用get形式直接在瀏覽器輸入鏈接發送請求,這是我的請求路徑
http://localhost:8080/qjq/servletDemo1?name=zhangsan&sex=man
然後回車發送請求,結果如下:
在這裏插入圖片描述
說明servletDemo1已經成功把request交給servletDemo2來處理。

注意點:
1,請求轉發是在服務器內部進行的,是servlet交流的手段。與客戶端無關。
2,一次請求只產生一個request和response.在轉發過程中的request和response是同一個。

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