欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

getRequestDispatcher 中请求转发和请求包含的使用说明

程序员文章站 2022-07-01 12:40:33
getRequestDispatcher() getRequestDispatcher() 包含两个方法,分别是请求转发和请求包含。 请求转发:当前Servlet可以设置响应头, 由下一个Servlet完成响应体 ,下一个Servlet输出响应体后, 当前Servlet不可以继续输出 !(留头不留体 ......

getrequestdispatcher()

getrequestdispatcher() 包含两个方法,分别是请求转发和请求包含。

requestdispatcher rd = request.getrequestdispatcher("/myservlet");
rd.forward(request, response);  // 请求转发
rd.include(request, response);  // 请求包含
  • 请求转发:当前servlet可以设置响应头,由下一个servlet完成响应体,下一个servlet输出响应体后,当前servlet不可以继续输出!(留头不留体)
  • 请求包含:当前servlet可以设置响应头,由两个servlet共同完成响应体,下一个servlet输出响应体后,当前servlet可以继续输出!(留头又留体)

无论是请求转发还是请求包含,都在一个请求范围内!使用同一个request和response。

请求转发和重定向的区别

  • 请求转发只有一次请求和一次响应,重定向有两次请求和两次响应。
  • 请求转发地址不发生改变,重定向会跳转到后一个请求的地址。
  • 请求转发只能转发到本项目的其它servlet,重定向不只能重定向到本项目的其它servlet,还能重定向到其它项目。
  • 请求转发是服务端行为,只需给出转发的servlet路径,重定向需要给出requesturi,既包含项目名。

请求值传递

同一个请求范围内可以使用request.setattribute()和request.getattribute()来相互传值。前一个servlet调用setattribute()保存值,后一个servlet调用getattribute()获取值。