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

全國(guó)咨詢/投訴熱線:400-618-4000

forward()方法如何實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)?【請(qǐng)求和響應(yīng)】

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

好口碑IT培訓(xùn)

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

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

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

  了解了forward()方法的工作原理后,下面通過案例演示forward()方法的使用。在chapter10項(xiàng)目的com.itheima.request包中創(chuàng)建一個(gè)名為RequestForwardServlet的Servlet類,該類使用forward()方法將請(qǐng)求轉(zhuǎn)發(fā)到一個(gè)新的Servlet頁(yè)面,如文件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ù)存儲(chǔ)到request對(duì)象中
        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()方法,將當(dāng)前Servlet的請(qǐng)求轉(zhuǎn)發(fā)到ResultServlet頁(yè)面,在com.itheima.request包中編寫一個(gè)名為ResultServlet的Servlet類,該類用于獲取RequestForwardServlet類中存儲(chǔ)在request對(duì)象中的數(shù)據(jù)并輸出,ResultServlet類的代碼實(shí)現(xiàn)如文件10-6所示。

0 分享到:
和我們?cè)诰€交談!