教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

forward()方法如何實現(xiàn)請求轉(zhuǎn)發(fā)?【請求和響應】

更新時間:2023年01月10日12時03分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

  在RequestDispatcher接口中,forward()方法可以實現(xiàn)請求轉(zhuǎn)發(fā),include()方法可以實現(xiàn)請求包含,本節(jié)將以請求轉(zhuǎn)發(fā)為例,講解forward()方法的使用。

  在Servlet中,如果當前Web資源不想處理請求,則可以通過forward()方法將當前請求傳遞給其他的Web資源進行處理,這種方式稱為請求轉(zhuǎn)發(fā)。請求轉(zhuǎn)發(fā)的工作原理如圖10-8所示。

  從圖10-8中可以看出,當客戶端訪問Servlet1時,可以通過forward()方法將請求轉(zhuǎn)發(fā)給其他Web資源,其他Web資源處理完請求后,直接將響應結(jié)果返回到客戶端。

  了解了forward()方法的工作原理后,下面通過案例演示forward()方法的使用。在chapter10項目的com.itheima.request包中創(chuàng)建一個名為RequestForwardServlet的Servlet類,該類使用forward()方法將請求轉(zhuǎn)發(fā)到一個新的Servlet頁面,如文件10-5所示。

1673323239557_forward()方法工作原理.jpg

  圖10-8 forward()方法的工作原理

  文件10-5 RequestForwardServlet.java

package com.itheima.request;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class RequestForwardServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,
     HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setAttribute("username","張三");  //將數(shù)據(jù)存儲到request對象中
        RequestDispatcher dispatcher=request
               .getRequestDispatcher("/ResultServlet");
               dispatcher.forward(request, response);
     }
     public void daPost(HttpServletRequest request,
       HttpServletResponse response)throws ServletException, IOException {
         doGet(request, response);
       }
}

  在文件10-5中,通過使用forward()方法,將當前Servlet的請求轉(zhuǎn)發(fā)到ResultServlet頁面,在com.itheima.request包中編寫一個名為ResultServlet的Servlet類,該類用于獲取RequestForwardServlet類中存儲在request對象中的數(shù)據(jù)并輸出,ResultServlet類的代碼實現(xiàn)如文件10-6所示。

0 分享到:
和我們在線交談!