总结:原生servlet请求转发url与请求重定向url的使用区别

news2024/10/5 13:06:01

总结:原生servlet请求转发url与请求重定向url的使用区别

  • 一·演示前提:
    • 1.演示案例的项目架构如图:
    • 2.设置web应用的映射根目录:/lmf,当然也可以不设置。
  • 二·什么叫请求转发、请求重定向?
    • 1.请求转发解释图
    • 2. forward(转发)概念解释:
    • 3.请求重定向解释图
    • 4. redirect(重定向)概念解释:
  • 三·请求转发url的使用:
    • 1.使用绝对路径url:报异常
    • 结论:请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 自定义的绝对路径(这样必然报错)
    • 2.使用相对路径url:分两种情况
      • 2-1 使用斜杠开头的相对路径:
      • 结论:
        • (1)服务端路径 = IP地址+端口+应用映射根目录
        • (2)斜杠在这里会被解释为:服务端路径
        • (3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 以斜杠开头的相对路径
      • 2-2 使用非斜杠开头的相对路径
      • 结论:
        • (1)服务端路径 = IP地址+端口+应用映射根目录
        • (2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url
        • (3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径
  • 四·请求重定向url的使用:
    • 1.使用绝对路径url:
    • 结论:请求重定向完后,生成的最终url = 自定义绝对路径
    • 2.使用相对路径url:分两种情况
      • 2-1 使用斜杠开头的相对路径url
      • 结论:
        • (1)客户端路径 = IP地址+端口
        • (2)斜杠在这里会被解释为:客户端路径
        • (3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 以斜杠开头的相对路径(这样的url很可能会报错)
      • 2-2 使用非斜杠开头的相对路径url
      • 结论:
        • (1)服务端路径 = IP地址+端口
        • (2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url
        • (3)请求重定向后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径
  • 五·综上所述:
    • 1.请求转发的url不能使用绝对路径,否则报异常
    • 2.请求转发的url可以使用相对路径,且无论是不是以斜杠开头,都是以服务端路径为基础,然后进行拼接生成的最终url
    • 3.请求重定向url可以使用绝对路径,且绝对路径就是最终url
    • 4.请求重定向url可以使用相对路径,但是区别是否以斜杠开头的相对路径。详情参考上文所述。
  • 六·请求转发与请求重定向的友情链接:
    • 1.请求转发(Forward)和重定向(Redirect)的区别
    • 2.解决:为什么“请求重定向“可以防止浏览器通过刷新重复提交表单?而请求转发不行?

一·演示前提:

1.演示案例的项目架构如图:

在这里插入图片描述

2.设置web应用的映射根目录:/lmf,当然也可以不设置。

应用映射根目录作用:也称为“应用上下文”,规定访问该应用的任何映射接口都得加上“/lmf”前缀,否则就会报404。
(如果没有设置应用映射根目录,则可以省略)
即,访问一个应用的接口,完整URL格式为:协议://IP地址:端口号/应用映射根目录/具体接口映射的url路径

例如:http://127.0.0.1:8080/lmf/.......

在这里插入图片描述

二·什么叫请求转发、请求重定向?

1.请求转发解释图

在这里插入图片描述

2. forward(转发)概念解释:

是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程实在服务器实现的,并不是在客户端实现的所以客户端并不知道这个跳转动作,所以它的地址栏还是原来的地址

3.请求重定向解释图

在这里插入图片描述

4. redirect(重定向)概念解释:

是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL

三·请求转发url的使用:

1.使用绝对路径url:报异常

(1)找一个浏览器可以直接访问的绝对路径:http://127.0.0.1/8080/lmf/page/view1.jsp
在这里插入图片描述
(2)源代码:
在这里插入图片描述

(3)测试结果:报错
在这里插入图片描述

结论:请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 自定义的绝对路径(这样必然报错)

2.使用相对路径url:分两种情况

2-1 使用斜杠开头的相对路径:

源代码:
在这里插入图片描述

测试结果:成功访问
在这里插入图片描述

结论:

(1)服务端路径 = IP地址+端口+应用映射根目录

(2)斜杠在这里会被解释为:服务端路径

(3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 以斜杠开头的相对路径

2-2 使用非斜杠开头的相对路径

源码:
在这里插入图片描述
测试结果:成功
在这里插入图片描述

结论:

(1)服务端路径 = IP地址+端口+应用映射根目录

(2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url

(3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径

四·请求重定向url的使用:

1.使用绝对路径url:

源码:
在这里插入图片描述
测试结果:成功
在这里插入图片描述

结论:请求重定向完后,生成的最终url = 自定义绝对路径

2.使用相对路径url:分两种情况

2-1 使用斜杠开头的相对路径url

源码:
在这里插入图片描述
测试结果:最终的url由于缺少“应用映射的根目录”,导致404
在这里插入图片描述

结论:

(1)客户端路径 = IP地址+端口

(2)斜杠在这里会被解释为:客户端路径

(3)请求转发完后,生成的最终访问url = IP地址 + 端口 + 以斜杠开头的相对路径(这样的url很可能会报错)

2-2 使用非斜杠开头的相对路径url

源码:
在这里插入图片描述
测试结果:成功
在这里插入图片描述

结论:

(1)服务端路径 = IP地址+端口

(2)默认以服务端路径为基础,再拼接上自定义相对路径,生成最终的url

(3)请求重定向后,生成的最终访问url = IP地址 + 端口 + 应用映射的根目录 + 非斜杠开头的相对路径

五·综上所述:

1.请求转发的url不能使用绝对路径,否则报异常

2.请求转发的url可以使用相对路径,且无论是不是以斜杠开头,都是以服务端路径为基础,然后进行拼接生成的最终url

3.请求重定向url可以使用绝对路径,且绝对路径就是最终url

4.请求重定向url可以使用相对路径,但是区别是否以斜杠开头的相对路径。详情参考上文所述。

六·请求转发与请求重定向的友情链接:

1.请求转发(Forward)和重定向(Redirect)的区别

https://www.cnblogs.com/Qian123/p/5345527.html

2.解决:为什么“请求重定向“可以防止浏览器通过刷新重复提交表单?而请求转发不行?

https://blog.csdn.net/weixin_48033662/article/details/117706628

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 文件共享功能使用方法, 局域网多台电脑之间传送文件

设想一下,家里或者公司有多台电脑,连接同一个Wifi,也就是处于同一个局域网中。 在不能使用微信、网盘的文件传输功能的情况下,这多台电脑之间,就只能用U盘传送数据吗? 不。Windows系统中已经提供了文件共享…

关于DDR协议一些操作的理解1

整体流程: 一些基本概念: 1.p_bank和l_bank 2.rank和bank 3.DIMM和SIMM 4.DLL概念: DDR控制器架构: 时钟频率对比: (1)

(1-线性回归问题)RBF神经网络

直接看公式,本质上就是非线性变换后的线性变化(RBF神经网络的思想是将低维空间非线性不可分问题转换成高维空间线性可分问题) Deeplearning Algorithms tutorial 谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技…

wy的leetcode刷题记录_Day56

wy的leetcode刷题记录_Day56 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-11-30 前言 目录wy的leetcode刷题记录_Day56声明前言895. 最大频率栈题目介绍思路代码收获236. 二叉树的最近公共祖先题目介绍思路代码收获895. 最大频率…

React项目中Manifest: Line: 1, column: 1, Syntax error的解决方法

大家好,今天和大家分享一个React项目中的一个小报错的解决方法。 在创建了一个项目后会有几个文件 public ---- 静态资源文件夹 favicon.ico ------ 网站页签图标 index.html -------- 主页面 logo192.png ------- logo图 logo512.png ------- logo图 manifest.js…

如何将C/C++代码转成webassembly

概述 WebAssembly/wasm WebAssembly 或者 wasm 是一个可移植、体积小、加载快并且兼容 Web 的全新格式 官网 : WebAssembly 快速上手: I want to… - WebAssemblyhttps://webassembly.org/getting-started/developers-guide/ 其实官网写的很详细&#xf…

局域网综合设计-----计算机网络

局域网综合设计 信息楼的配置 拓扑图 配置 全部在三层交换机配置 1.创建两个全局地址池vlan 52和valn53 全局地址池vlan52 全局地址池vlan53 2给vlan 52 和53 配置IP 地址 给vlan52配置ip并开启vlan52从全局地址池获取IP 子网 dns 给vlan53配置ip并开启vlan53从全局…

Android入门第37天-在子线程中调用Handler

简介 前一章我们以一个简单的小动画来解释了Handler。 这章我们会介绍在子线程里写Handler。如果是Handler写在了子线程中的话,我们就需要自己创建一个Looper对象了:创建的流程如下: 直接调用Looper.prepare()方法即可为当前线程创建Looper对象,而它的构造器会创…

Java并发编程—线程池

文章目录线程池什么是线程池线程池优点:线程复用技术线程池的实现原理是什么线程池执行任务的流程?线程池如何知道一个线程的任务已经执行完成线程池的核心参数拒绝策略线程池类型(常用线程池)阻塞队列执行execute()方法和submit(…

[附源码]计算机毕业设计springboot医疗纠纷处理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

MySQL统计函数count详解

MySQL统计函数count详解1. count()概述2. count(1)和count(*)和count(列名)的区别3. count(*)的实现方式1. count()概述 count() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为null数据,或者去…

yocto machine class解析之flashlayout-stm32mp

yocto machine class解析之flashlayout-stm32mp 上一篇文章中我们详细介绍了st-partitions-image class。里面根据配置生成了许多的分区镜像以及分区镜像的一些参数设置。本章节介绍的flashlayout class就会根据上面生成的这些参数来生成特定的.tsv刷机文件供ST的刷机工具使用…

Bootstrap5 容器

我们可以使用以下两个容器类: .container 类用于固定宽度并支持响应式布局的容器。.container-fluid 类用于 100% 宽度,占据全部视口(viewport)的容器。固定宽度 .container 类用于创建固定宽度的响应式页面。 注意&#xff1a…

[node文件的上传和下载]一.node实现文件上传;二、Express实现文件下载;三、遍历下载文件夹下的文件,拼接成一个下载的url,传递到前端

目录 一.node实现文件上传 1.FormData对象:以对象的方式来表示页面中的表单,又称为表单对象。以key:value的方式来保存数据,XMLHttpRequest对象可以轻松的将表单对象发送到服务器端 (1)是一个构造函数:ne…

LabVIEW在应用程序和接口中使用LabVIEW类和接口

LabVIEW在应用程序和接口中使用LabVIEW类和接口 LabVIEW类和接口是用户定义的数据类型。LabVIEW类和接口开发人员创建并发布这些数据类型。LabVIEW类或接口用户无需了解如何创建LabVIEW类或接口,但必须了解应用程序中通过类或接口定义的数据类型应当如何使用&#…

通过java代码实现对json字符串的格式美化(完整版)

一、前言 之前转载过一篇文章,也是有关于通过java代码实现对json字符串的格式美化,但是那篇文章的实现还不够完善,比如其对字符串中出现特殊字符时,会出现转换失败。因此博主本人也是闲暇时在那份代码的基础上做了完善和补充。好…

[附源码]计算机毕业设计校园租赁系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Tomcat服务器的简介以及安装

文章目录1.概念1.1 什么是Web服务器?1.2 静态资源和动态资源1.3 常用服务器产品2. Tomcat的安装2.1 下载2.2 解压安装2.3 Tomcat的目录结构2.4 Tomcat服务器的启动和关闭2.5 tomcat启动失败的原因2.5.1 查看报错原因2.5.2 错误原因2.5.2.1 查看JAVA_HOME配置是正确2…

ESP32——WEB服务程序移植(基于示例restful_server)

一、简介 将ESP32——WEB服务程序测试项目移植到一个现有项目中,现有项目包括基于固定IP的WIFI连接、OTA升级、Websocket等功能。 二、移植 2.1 参考restful_server项目下分区表文件partitions_example.csv修改项目分区 因模块采用ESP32-WROVER-E(4MB)&#xff…

磨金石教育摄影技能干货分享|乡愁摄影作品欣赏——传统建筑篇

俗话说“一方水土养一方人”,不同的山川地域与气候环境早就不同的地域文化。我国幅员广阔,南北东西跨度极大,因此气候环境与地理环境差异很大。在民俗文化上面也呈现出多元化风格。 这种多元化的文化风格清晰的体现在各地的建筑形式上。重庆的…