请求的转发和重定向

RequestDispatcher接口实现转发:

jsp1上链接到Servlet,Servlet再转发(关键在这里怎么实现转发??)

演示index.html页面---->Servlet1(转发到)------>Servlet2

实现转发流程

1.用HttpServletRequest的getRequestDispatcher(path)方法,path就是指定转发到的目标地址

RequestDispatcher rd = request.getRequestDispatcher("/servlet2");

2.getRequestDispatcher方法返回的RequestDispatcher对象调用forword方法实现最终的转发动作。

rd.forward(request, response);

演示index.html页面---->Servlet1(重定向到)------>Servlet2

sendRedirect接口实现重定向:

直接HttpServletResponse调用sendRedirect(重定向的目标地址)。

response.sendRedirect("servlet2");

转发和重定向的区别:

1.请求的转发是一种服务器行为,转发时request对象会被保存,也就是说被转发到的另外一个servlet或其他资源中的request对象,跟请求转发的request是同一个对象。又由于这个过程是服务端行为,所以客户端的地址栏不会发生改变。从始到终请求只有一次,一个!

2.请求的重定向是一种客户端行为,实际上期间发生的是两次请求,前一次的请求request对象不会作保存,两个Servlet里的reuqest对象不是同一个,且地址栏地址会发生改变。

jsp页面也是一样的,演示:a.jsp链接到->b.jsp转发到->c.jsp(request保留)

3.转发只能转发到Web应用内部的资源,重定向可以到任何资源。

4.转发中地址用“/”表示WEB应用的根目录,重定向中地址“/”是站点的根目录。

index01.jsp:

<a href="/requestDispatcher/servlet1">跳转到Servlet01</a>

index02.jsp:

<h2>此页面为index02.jsp</h2>

index03.jsp:

<h2>[重定向:]这里是index03.jsp页面</h2>

Servlet1:

public class Servlet01 extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//转发:getRequestDispatcher("转发地址").forward(request, response)request.getRequestDispatcher("/servlet2").forward(request, response);//转发到servlet2//重定向:
//		response.sendRedirect("/requestDispatcher/index03.jsp");}
}

Servlet2:

public class Servlet02 extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置浏览器响应字符集response.setHeader("Content-type", "text/html;charset=UTF-8");response.getWriter().print("[转发:]本Servlet是Servlet02");}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/154324.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode刷题笔记】哈希查找

771. 宝石与石头 解题思路&#xff1a; 1. HashSet &#xff0c;把所有 宝石 加入 set , 然后遍历检查 每一块石头是否包含在set中 &#xff0c;若包含就是宝石。 2. 计数数组map, 把所有 宝石 进行 count 数组 计数 &#xff0c;, 然后遍历检查 每一块石头是否 count[stone] …

如何在Firefox中配置HTTP?

在浏览器中配置HTTP是一个常见的需求&#xff0c;它可以让我们轻松访问需要的网站或保护个人隐私。本文将为您详细介绍如何在Firefox浏览器中配置HTTP应用&#xff0c;帮助您实现无缝的HTTP体验。无论您是初次接触HTTP还是有一定经验的用户&#xff0c;本文都能为您提供实用的操…

Docker-consul容器服务更新与发现

目录 一、consul简介 1、什么是服务注册与发现 2、什么是consul 3、consul的关键特性 二、consul部署 1、consul服务器部署 1.1 建立consul服务 2、查看集群信息 3、通过http api 获取集群信息 三、registrator部署 1、安装Gliderlabs/Registrator 2、测试服务发现…

浅谈高速公路服务区分布式光伏并网发电

前言 今年的国家经济工作会议提出&#xff1a;将“做好碳达峰、碳中和工作”作为 2021年的主要任务之一&#xff0c;而我国高速公路里程 15.5万公里&#xff0c;对能源的需求与日俱增&#xff0c;碳排放量增速明显。 为了实现采用减少碳排放量&#xff0c;采用清洁能源替代的…

软件培训测试高级工程师多测师肖sir__html之作业11

html之作业 案例1&#xff1a; 截图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单</title></head><body><table style"background-color:red" bo…

Spring Boot中实现发送文本、带附件和HTML邮件

SpringBoot实现发送邮箱 引言 在现代应用程序中&#xff0c;电子邮件通常是不可或缺的一部分。在Spring Boot中&#xff0c;你可以轻松地实现发送不同类型的邮件&#xff0c;包括文本、带附件和HTML邮件。本博客将向你展示如何使用Spring Boot发送这些不同类型的电子邮件。 步…

数据结构与算法(七)--使用链表实现栈

一、前言 之前我们已经学习了链表的所有操作及其时间复杂度分析&#xff0c;我们可以了解到对于链表头的相关操作基本都是O(1)的&#xff0c;例如链表头增加、删除元素&#xff0c;查询元素等等。那我们其实有一个数据结构其实可以完美利用到这些操作的特点&#xff0c;都是在…

Linux[crontab命令]–管理定时任务

定时任务的软件的种类&#xff1a; 1、Linux操作系统自带的软件&#xff1a;crontab2、第三方的定时任务软件&#xff1a;atd、anacron3、WEB定时软件&#xff1a;PPGo_Job4、基于etcd的定时任务系统 下面了解 Linux操作系统自带的软件&#xff1a;crontab。 cron 服务&…

正则表达式(Regular Expression)学习网址分享

正则表达式&#xff08;Regular expressions&#xff0c;也叫REs、 regexs 或regex patterns&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到z 之间的字母&#xff09;和特殊字符&#xff08;称为"元字符"&#xf…

深度学习DAY3:激活函数

激活函数映射——引入非线性性质 h &#xff08;Σ(W * X)b&#xff09; yσ&#xff08;h&#xff09; 将h的值通过激活函数σ映射到一个特定的输出范围内的一个值&#xff0c;通常是[0, 1]或[-1, 1] 1 Sigmoid激活函数 逻辑回归LR模型的激活函数 Sigmoid函数&#xff0…

人工智能辅导程序 Mr. Ranedeer AI Tutor

人工智能技术正在不断发展&#xff0c;并在各个领域发挥着越来越重要的作用。在教育领域&#xff0c;人工智能也得到了广泛的应用&#xff0c;其中包括人工智能辅导程序。 Mr. Ranedeer AI Tutor 是一个开源的人工智能辅导程序&#xff0c;使用 OpenAI 的 GPT-4 语言模型来提供…

vue踩坑

文章目录 1.error1 1.error1 在项目里面前端报这个错&#xff0c;有点蒙 确定了错误是在遍历数组中的图片部分 猜测可能是一开始的时候没有把photoList在form中写出来&#xff0c;form里面啥没有&#xff0c;导致渲染的时候有问题 所以以后在页面上渲染数据的都在data里…

hive3.1核心源码思路

系列文章目录 大数据主要组件核心源码解析 文章目录 系列文章目录大数据主要组件核心源码解析 前言一、HQL转化为MR 核心思路二、核心代码1. 入口类&#xff0c;生命线2. 编译代码3. 执行代码 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 对大…

读书笔记:多Transformer的双向编码器表示法(Bert)-4

多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers&#xff0c;即Bert&#xff1b; 第二部分 探索BERT变体 从本章开始的诸多内容&#xff0c;以理解为目标&#xff0c;着重关注对音频相关的支持&#xff08;如果有的话&#xff09;…

【工具软件】mediamtx——网页、vue3项目中播放 rtsp 视频流(支持265转码)

声明 本文只做 mediamtx 的使用实操&#xff0c;请务必参考下面的博客,&#xff0c;我也参考下面的大佬博客&#xff0c;感谢唯一602的无私分享&#xff1a; 在web页面中直接播放rtsp视频流&#xff0c;重点推荐&#xff1a;mediamtx&#xff0c;不仅仅是rtsp mediamtx 介绍 …

RabbitMQ与springboot整合

1、基本概念 Server&#xff1a;接收客户端的连接&#xff0c;实现AMQP实体服务&#xff1b;Connection&#xff1a;连接&#xff0c;应用程序与Server的网络连接&#xff0c;TCP连接&#xff1b;Channel&#xff1a;信道&#xff0c;消息读写等操作在信道中进行。客户端可以建…

Linux[find命令]-根据路径和条件搜索指定文件并删除

一、find命令简介 find命令&#xff1a;用于根据给定的路径和条件查找相关文件或目录&#xff0c;参数灵活方便&#xff0c;且支持正则表达式&#xff0c;结合管道符后能够实现更加复杂的功能。 基本语法格式&#xff1a;find pathname -options 搜索内容 [其他选项] pathname…

Python 自动化Web测试

限于作者水平有限&#xff0c;以下内容可能是管窥之见&#xff0c;希望大家高抬贵手&#xff0c;且让我斗胆抛砖引玉。 公司产品迪备主要是通过网页操作来进行数据库的备份与恢复&#xff0c;监控与管理&#xff0c;因此在测试的过程中&#xff0c;可以用python测试脚本来模拟…

LLVM(5)ORC实例分析

ORC实例总结 总结 因为API茫茫多&#xff0c;逻辑上的一些概念需要搞清&#xff0c;编码时会容易很多。JIT的运行实体使用LLVMOrcCreateLLJIT可以创建出来&#xff0c;逻辑上的JIT实例。JIT实例需要加入运行库&#xff08;依赖库&#xff09;和用户定义的context&#xff08;…

最新数据库流行度最新排名(每月更新)

2023年10月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数据来自谷歌Trends 如果您相信集体智慧&#xff0c;那么TOP DB索引可以帮…