JavaWeb请求的重定向与转发:getRequestDispatcher()的forward方法,sendRedirect方法,以及重定向与转发的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xd15010130025/article/details/88114490

RequestDispatcher接口

RequestDispatcher接口的理论知识

  • RequestDispatcher实例对象是由Servlet引擎创建的,它用于包装一个要被其他资源调用的资源(例如Servlet,HTML文件,JSP文件),并可以通过其中的方法将客户端的请求转发给所包装的资源
  • RequestDispatcher接口中定义了两个方法:forward方法和include方法
  • forward方法和include方法接收的两个参数必须是传递给当前Servlet的service方法的那两个ServletRequest和ServletResponse对象。
  • 获取RequestDispatcher的方法
    – ServletContext.getRequestDispatcher(参数只能是以“/”开头的路径)
    – ServletRequest.getRequestDispatcher(参数可以是不以“/”开头的路径)
    – ServletContext.getNamedDispacher

用forward方法实现请求转发

测试forward方法
首先建立一个html,其中有一个超链接跳转到forwardServlet。
在这里插入图片描述
在ForwardServlet中写下响应,并用forward方法跳转至TestServlet处
在这里插入图片描述
tsetServlet的service方法打印接受的请求
在这里插入图片描述
运行结果
在这里插入图片描述

用sendRedirect方法实现请求重定向

在这里插入图片描述
运行结果
在这里插入图片描述

forward()方法和sendRedirect方法的区别

  1. forward()方法执行以后,网址不变,只向服务器发送了一次请求,sendRedirect()方法执行以后,网址改变,向服务器发送了两次请求
    在谷歌浏览器中运行可以知道,forward()只有一次请求
    在这里插入图片描述
    redirect有两次请求
    在这里插入图片描述
  2. 请求转发:在最终的Servlet中,request对象和中转的那个request是同一个对象;请求的重定向:在最终的Servlet中,request对象和中转的那个request不是同一个对象
  3. 请求转发:只能转发给当前WEB应用的资源;重定向:可以重定向到任何资源。
    例子:
    在这里插入图片描述
    点击之后发现
    在这里插入图片描述
    如果用gerResquestDispatcher()的话,那么会是
    在这里插入图片描述
  4. ==请求的转发:/ 代表的是当前WEB应用的根目录,加上了工程名即http://localhost:8080/test7/;请求的重定向,/代表web站点的根目录,即http://localhost:8080
    附上源工程!!!!!

CSDN下载:https://download.csdn.net/download/xd15010130025/10992312
百度网盘链接:https://pan.baidu.com/s/1lDhZuOChw9yvI-6DXo-ZYw
提取码:8rgl

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xd15010130025/article/details/88114490