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

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

在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值