当前位置: 首页 > news >正文

请求转发和响应重定向

请求转发

  1. 请求转发是通过HttpServletRequest对象实现的
  2. 请求转发是服务器内部行为,对客户端是屏蔽的
  3. 客户端只产生了一次请求,服务端只产生了一对request和response对象
  4. 客户端的地址栏是不变的
  5. 请求的参数是可以继续传递的
  6. 目标资源可以是Servlet、静态资源,也可以是WEB-INF下的受保护的资源;不可以是外部资源
@WebServlet("/servlet1")
public class ServletTest1 extends HttpServlet {
	public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 获取请求转发对象,可以转发给其他Servlet
		RequestDispatcher requestDispatcher = req.getRequestDispatcher("servlet2");
		
		// 也可以转发给静态资源
		// RequestDispatcher requestDispatcher = req.getRequestDispatcher("aaa.html");
		// 也可以转发给WEB-INF下的受保护资源
		// RequestDispatcher requestDispatcher = req.getRequestDispatcher("WEB-INF/bbb.html");
		
		// 转发,将参数传递过去
		requestDispatcher.forward(req, resp);
	}
}

@WebServlet("/servlet2")
public class ServletTest2 extends HttpServletRequest {
	public void service(HttpServletRequest req, HttpServletResponse resp) {
		System.out.println("servlet2执行了");
	}
}

响应重定向(推荐)

  1. 响应重定向是通过HttpServletReaponse对象实现的
  2. 响应重定向是在服务端通过302响应码和location路径,告诉客户端自己重定向到目标资源,是在服务端提示下的,客户端的行为
  3. 客户端的地址栏是变化的,客户端至少发送了两次请求
  4. 请求产生了多次,后端就会有多个request和response对象,所以请求中的参数不能自动传递
  5. 目标资源可以是Servlet、静态资源、外部资源;不可以是WEB-INF下的受保护资源
@WebServlet("/servlet1")
public class ServletTest1 extends HttpServlet {
	public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 重定向到servlet2
		resp.sendRedirect("bbb");
		// 重定向到静态资源
		resp.sendRedirect("aaa.html");
		// 重定向到外部资源
		resp.sendRedirect("https://www.baidu.com");
	}
}

@WebServlet("/servlet2")
public class ServletTest2 extends HttpServlet {
	public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("servlet2执行了");
	}
}

相关文章:

  • 深入剖析模型推理:原理、技术与挑战
  • QT--对话框的切换
  • Vue 中 MVVM、MVC 和 MVP 模式的区别
  • Linux中挂载是什么意思?
  • 网络安全要学python 网络安全要学爬虫吗
  • 【数据分析】1 认识数据分析
  • 【Java进阶篇】——第11篇:Java 8 新特性及使用
  • Go入门之map
  • 在unity中实现隐藏窗口,显示系统托盘图标,右键菜单退出功能
  • springMvc
  • Ai模型-PyTorch和Tensorflow的区别
  • 【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?
  • 09Elasticsearch02
  • SQL数据处理函数全解析
  • 使用Python脚本下载王者**游戏英雄皮肤原画图片(含源码)
  • JavaScript表单介绍
  • 发现一个挺好的项目,可以在springboot项目中快速接入DeepSeek API,有需要的可以尝试一下
  • 从0到1:STM32温控系统开发踩坑指南
  • http 响应码影响 video 标签播放视频
  • 关于JavaScript中的事件
  • “子宫内膜异位症”相关论文男性患者样本超六成?福建省人民医院展开调查
  • 重温经典|中国首部剪纸动画片《猪八戒吃瓜》创作始末
  • 市场监管总局通报民用“三表”专项检查结果
  • 立夏的野火饭
  • 申活观察|人潮涌动成常态,豫园为何常来常新?
  • “彩虹滑道”项目两男童相撞飞跌出去,景区:工作人员误判导致