请求转发和重定向

本文只是简单描述转发和重定向的区别,不太涉及原理。

1.请求转发和重定向

转发和重定向是数据发生资源跳转的方式。通常,转发发生在服务器内部,重定向发生在不同服务器之间。

请求转发

发生在服务器内部的资源跳转方式
在这里插入图片描述

特点:

  • 浏览器的地址不发生变化
  • 只能转发到当前服务器的内部资源
  • 一次请求,可以在转发的资源之间使用request共享数据

通常的实现方式如下:

req.getRequestDispatcher("/路径").forward(req,resp);

如果需要传输数据可以使用以下方法:

req.setAttribute("","");    //向request里面,设置键值对。
req.getAttribute("");		//获取request里面的值。
req.removeAttribute("");	//移除request里面的值。

在这里插入图片描述

重定向

资源跳转方式,可以重定向到非内部服务器。
![在这里插入图片描述](https://img-blog.csdnimg.cn/8f4bbcebca14404e8d01f6e2a71cbb4f.png
从图中可以看出,重定向是资源A响应结果给浏览器,然后浏览器再次向资源B发起请求。

Response常用方法:

resp.setStatus(302);  //设置响应状态码
resp.setHeader("Location","/路径");  //设置响应头,重定向路径
resp.setHeader("Content-Type","");   //设置响应头,接收数据类型
resp.getWriter();     //获取字符输出流
resp.getOutputStream();   //获取字节输出流

重定向代码如下:

resp.setStatus(302);  //设置响应状态码
resp.setHeader("Location","/");  //重定向路径

//简化写法
resp.sendRedirect("/路径");

特点:

  • 浏览器的路径发生变化
  • 可以重定向到任意位置的资源(服务器内部,外部均可)
  • 两次请求,因此无法在多个资源使用request共享数据。

2.总结

Request :
在这里插入图片描述
Response :
在这里插入图片描述

补充路径问题:

在请求转发和重定向写资源路径的时候,可能会有一点不一样。请求转发的资源路径是在服务器内部,所以可以不用写虚拟目录(虚拟目录默认是项目名)。重定向有可能发生在不同服务器之间,因此需要加上虚拟目录。

浏览器使用(发出):需要加虚拟目录
服务端使用(发出):不需要加虚拟目录

举例子如下:

	<a href = '路径' >    //需要
	<form action = '路径' >   //需要
	req.getRequestDispatcher("/").forward(req,resp);   //不需要
	resp.sendRedirect("/路径");   //需要
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值