教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

forward()方法如何实现请求转发?【请求和响应】

更新时间:2023年01月10日12时03分 来源:传智教育 浏览次数:

好口碑IT培训

  在RequestDispatcher接口中,forward()方法可以实现请求转发,include()方法可以实现请求包含,本节将以请求转发为例,讲解forward()方法的使用。

  在Servlet中,如果当前Web资源不想处理请求,则可以通过forward()方法将当前请求传递给其他的Web资源进行处理,这种方式称为请求转发。请求转发的工作原理如图10-8所示。

  从图10-8中可以看出,当客户端访问Servlet1时,可以通过forward()方法将请求转发给其他Web资源,其他Web资源处理完请求后,直接将响应结果返回到客户端。

  了解了forward()方法的工作原理后,下面通过案例演示forward()方法的使用。在chapter10项目的com.itheima.request包中创建一个名为RequestForwardServlet的Servlet类,该类使用forward()方法将请求转发到一个新的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","张三");  //将数据存储到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的请求转发到ResultServlet页面,在com.itheima.request包中编写一个名为ResultServlet的Servlet类,该类用于获取RequestForwardServlet类中存储在request对象中的数据并输出,ResultServlet类的代码实现如文件10-6所示。

0 分享到:
和我们在线交谈!