Java中如何使用Response重定向
作者:持续更新,2天一篇 时间:2023-08-03 07:41:07
直接来,ResponseDemo1代码,get请求到post请求,重定向到ResponseDemo2
我的虚拟目录为
ResponseDemo1代码,302是重定向状态码,Http状态码大全
package com.lingaolu.response;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
/**
* @author 林高禄
* @create 2020-07-10-15:24
*/
@WebServlet("/responseDemo1")
public class ResponseDemo1 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("responseDemo1进来了......");
// 设置状态码为302
response.setStatus(302);
// 动态获取虚拟目录,以后修改虚拟目录的时候就不用了修改代码
String contextPath = request.getContextPath();
// 设置响应头location
response.setHeader("location",contextPath+"/responseDemo2");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
ResponseDemo2代码
package com.lingaolu.response;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
/**
* @author 林高禄
* @create 2020-07-10-15:24
*/
@WebServlet("/responseDemo2")
public class ResponseDemo2 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("responseDemo2进来了......");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
浏览器访问,访问前
浏览器访问,访问后
控制台输出
从以上结果可以看出:
浏览器上的请求地址变了
重定向是2次请求,一次是responseDemo1请求,一次是responseDemo2请求
由于状态码固定是302,响应头固定是location,所以请求转发提供了更方便的方式
void sendRedirect(String var1)
ResponseDemo3代码
package com.lingaolu.response;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
/**
* @author 林高禄
* @create 2020-07-10-15:24
*/
@WebServlet("/responseDemo3")
public class ResponseDemo3 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("responseDemo3进来了......");;
// 动态获取虚拟目录,以后修改虚拟目录的时候就不用了修改代码
String contextPath = request.getContextPath();
response.sendRedirect(contextPath+"/responseDemo2");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
启动,浏览器访问
控制台输出
我们把ResponseDemo3代码改一下,重定向到百度
package com.lingaolu.response;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
/**
* @author 林高禄
* @create 2020-07-10-15:24
*/
@WebServlet("/responseDemo3")
public class ResponseDemo3 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("responseDemo3进来了......");;
response.sendRedirect("http://www.baidu.com");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
重启访问,就重定向到百度了
从上面结果我们可以看出,重定向可以访问其他服务器的资源
我们写一个ResponseDemo4,探索一下共享数据情况,ResponseDemo4里请求写进了一个数据name
package com.lingaolu.response;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
/**
* @author 林高禄
* @create 2020-07-10-15:24
*/
@WebServlet("/responseDemo4")
public class ResponseDemo4 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("responseDemo4进来了......");
request.setAttribute("name","林大帅");
String contextPath = request.getContextPath();
response.sendRedirect(contextPath+"/responseDemo2");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
同时ResponseDemo2改一下,获取数据name
重启,浏览器访问
控制台输出:
从上面的null可以看出,重定向不可以共享数据
重定向的特点总结:(与之对应的------请求转发详情与特点)
浏览器地址栏路径发生变化,最终地址为最后转发的地址
转发只是多次请求,转发几次就几次请求,不共享数据
可以访问其他服务器的资源
来源:https://blog.csdn.net/lgl782519197/article/details/107251985
标签:Java,Response,重定向
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Spring注解Autowired的底层实现原理详解
2022-10-19 11:49:44
![](https://img.aspxhome.com/file/2023/7/132227_0s.jpg)
SpringBoot项目中如何访问HTML页面
2021-08-09 11:19:07
![](https://img.aspxhome.com/file/2023/1/64421_0s.jpg)
使用BufferedReader读取本地文件的操作
2021-10-15 03:22:47
![](https://img.aspxhome.com/file/2023/2/103982_0s.png)
ViewPager顶部导航栏联动效果(标题栏条目多)
2022-11-03 13:19:38
![](https://img.aspxhome.com/file/2023/0/106870_0s.gif)
Android调用系统的发邮件功能的小例子
2022-09-09 04:23:11
MyBatis-Plus解决逻辑删除与唯一索引的问题
2022-09-09 00:17:03
![](https://img.aspxhome.com/file/2023/4/76274_0s.png)
SpringBoot集成SpringSecurity和JWT做登陆鉴权的实现
2023-01-29 09:34:57
C# 对象持久化详解
2023-06-24 10:21:47
![](https://img.aspxhome.com/file/2023/7/83357_0s.png)
Java Spring事务的隔离级别详解
2022-04-25 23:07:52
![](https://img.aspxhome.com/file/2023/1/71211_0s.jpg)
Android打包上传AAR文件到Maven仓库的示例
2023-07-02 15:14:14
![](https://img.aspxhome.com/file/2023/8/138978_0s.png)
Java集合系列之ArrayList源码分析
2023-01-31 03:02:36
android实现图片橡皮擦和快速染色功能
2023-09-08 01:30:02
![](https://img.aspxhome.com/file/2023/2/88112_0s.png)
android 实现类似微信缓存和即时更新好友头像示例
2023-12-04 20:47:41
Treeview动态添加用户控件传值和取值的实例代码
2021-07-20 11:20:07
![](https://img.aspxhome.com/file/2023/5/102245_0s.jpg)
C语言由浅入深讲解文件的操作下篇
2022-12-05 21:21:54
![](https://img.aspxhome.com/file/2023/0/112300_0s.png)
spring-cloud-gateway动态路由的实现方法
2021-07-25 15:24:37
Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
2022-03-14 01:12:28
![](https://img.aspxhome.com/file/2023/6/102616_0s.png)
SpringBoot Schedule调度任务的动态管理
2023-09-22 04:34:15
![](https://img.aspxhome.com/file/2023/0/128230_0s.png)
Android用户注册界面简单设计
2023-07-13 02:59:50
![](https://img.aspxhome.com/file/2023/8/139028_0s.jpg)
Android Button 自带阴影效果另一种解决办法
2021-06-07 04:23:02