request.getRequestDispatcher(url) /error 404

2023-11-04

二、使用语法

 
  1. request.getRequestDispatcher(“/资源URI”).forward(request,response)

  2.  
  3. response.sendRedirect(“/web应用/资源URI”);

在进行web开发时,跳转是最常见的,包括2种跳转:

第一种是request.getRequestDispatcher().forward(request,response):

1、属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和request.getAttribute()。

2、在前后两次执行后,地址栏不变,仍是当前文件的地址。

3、不能转向到本web应用之外的页面和网站,所以转向的速度要快。

4、URL中所包含的“/”表示应用程序(项目)的路径。

第二种是response.sendRedirect():

1、属于重定向,也是客户端跳转,相当于客户端向服务端发送请求之后,服务器返回一个响应,客户端接收到响应之后又向服务端发送一次请求,一共是2次请求,前后页不共用一个request,不能读取转向前通过request.setAttribute()设置的属性值。

2、在前后两次执行后,地址栏发生改变,是目标文件的地址。

3、可以转向到本web应用之外的页面和网站,所以转向的速度相对要慢。

4、URL种所包含的"/"表示根目录的路径。

特殊的应用:对数据进行修改、删除、添加操作的时候,应该用response.sendRedirect()。如果是采用了request.getRequestDispatcher().forward(request,response),那么操作前后的地址栏都不会发生改变,仍然是修改的控制器,如果此时再对当前页面刷新的话,就会重新发送一次请求对数据进行修改,这也就是有的人在刷新一次页面就增加一条数据的原因。

如何采用第二种方式传递数据:

1、可以选择session,但要在第二个文件中删除;

2、可以在请求的url中带上参数,如"add.htm?id=122"。

 

三、演示代码如下,只有第二种情况才是正确的:

 
  1. 1:

  2. String url = "index.jsp";

  3.  
  4. 2:

  5. String url = "/index.jsp";

  6.  
  7. 3:

  8. String path = request.getContextPath();

  9. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

  10. ​​​​​​url = basePath + "index.jsp";

  11.  
  12. ​request.getRequestDispatcher(url).forward(request, response);


解决:

 

首先排查html或jsp里边的跳转链接路径写错没有;

然后排查java里的getRequestDispatcher参数有没有多加“/”或少写文件夹。

我的原因是老眼昏花,在jsp的href跳转链接里把“?”变成了参数连接符“&”,导致错误,改完就好了.

 

 

更多问题,加qq群:565191947

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

request.getRequestDispatcher(url) /error 404 的相关文章

  • CentOS 7 开放3306端口(实现MySQL远程登陆)

    一 开放3306端口 1 开启端口3306 firewall cmd zone public add port 3306 tcp permanent 2 重启防火墙 firewall cmd reload 3 查看已经开放的端口 firew
  • ajax的使用 json格式传参

    json格式被认为进行ajax前后端交互比较方便 这里就贴上前端js的相关代码 首先绑定一个按钮 被点击时触发ajax方法 sendEmail btn on click function ajax type post 请求类型为post 关
  • 微服务项目nginx前后台配置实例

    微服务项目nginx配置实例 1 准备好nginx服务我本地版本是nginx 1 18 0 zip 2 将前台代码放入nginx html目录下 3 将修改config nginx conf文件 user nobody worker pro
  • ubuntu问题g++ : 依赖: g++-4.8 (>= 4.8.2-5~) 但是它将不会被安装

    截图中选取了一个等同的例子 python dev 依赖 libpython dev 2 7 5 5ubuntu3 但是它将不会被安装 凡是遇到类似问题 括号里面会是一些版本号 这通常代表的意思是Ubuntu自生安装的软件包版本高 而所安装软
  • [非线性控制理论]4_反馈线性化_反步法

    非线性控制理论 1 Lyapunov直接方法 非线性控制理论 2 不变性原理 非线性控制理论 3 基础反馈稳定控制器设计 非线性控制理论 4 反馈线性化 反步法 非线性控制理论 5 自适应控制器 Adaptive controller 非线
  • C语言编译器

    C语言编译器是指用于将C语言源代码转换成可执行程序的工具软件 编译器将C语言源程序转化为目标代码的过程称为编译 目标代码通常是机器码 可由计算机直接执行 常见的C语言编译器有 GCC GNU Compiler Collection GNU编
  • 【C++入门】文件流(fstream)介绍和使用

    1 打开函数 open mode 含义 ios in 以读取方式打开文件 ios out 以写入方式打开文件 ios binary 以二进制方式存取 ios ate 存取指针在文件末尾 ios app 写入时采用追加方式 ios trunc
  • 一个 SPI 转串口驱动的优化

    rel File List href file C 5CDOCUME 7E1 5Czjujoe 5CLOCALS 7E1 5CTemp 5Cmsohtml1 5C01 5Cclip filelist xml gt 一个 SPI 转串口驱动的
  • JavaScript动态加载CSS的三种方法

    JavaScript动态加载CSS的三种方法 CSDN Blog推出文章指数概念 文章指数是对Blog文章综合评分后推算出的 综合评分项分别是该文章的点击量 回复次数 被网摘收录数量 文章长度和文章类型 满分100 每月更新一次 如果你有很
  • 程序员也要学英语——印欧语音变规律总结

    目录 一 印欧语音变规律 二 口诀汇总 三 元音互换 a e i o u w y 1 词根 uni 一 统一 2 词根 tri 三 四 u v w 1 词根 nov 新 2 词根 vol 意愿 五 b p m f v 1 词根 bene 好
  • U3D打包DLL插件 DLL Builder

    前面的文章讲过如何通过cmd打包dll文件 文章链接 实际中 需求一般是很多文件需要打包到一个dll时 此时 一个一个添加打包吗 这里介绍一个很不错的插件 DLL Builder 商店地址 九块九 包邮 这是一个可视化的dll打包工具 可以
  • 小米SOAR

    小米soar工具安装 系统Ubuntu 18 04 更新下apt get包 防止报错 sudo apt get update sudo apt get install sudo apt get upgrade 安装Go语言 sudo apt
  • 如何在C语言中进行字符串的查找操作?

    首先 要进行字符串的查找操作 我们需要使用到C语言中的字符串函数 这些函数包括strlen strcmp strcat strcpy strstr 等等 它们可以实现字符串的长度计算 比较 拼接 复制 查找等操作 如果要在一个字符串中查找另
  • git clone和直接下载压缩包的区别

    目录 一 区别 一 区别 Git是公司开发中必不可少的一项基础技能 很多大型企业经常会有自己的内网 在内网直接下载压缩包后 写完业务后在进行远程ssh的绑定是无法绑定上的 因为公司内网对这种绑定作出了限制 而上司邀请你有开发权限后 直接使用
  • C++ main函数中参数argc和argv含义及用法( argument count和 argument vector)

    rgc 是 argument count的缩写 表示传入main函数的参数个数 argv 是 argument vector的缩写 注意 不是argument value的缩写 自己以前理解错了 表示传入main函数的参数序列或指针 并且第
  • Paxos与2PC

    Paxos与2PC Paxos协议和2PC协议在分布式系统中所起的作用并不相同 Paxos协议用于保证同一个数据分片的多个副本之间的数据一致性 当这些副本分布到不同的数据中心时 这个需求尤其强烈 2PC协议用于保证属于多个数据分片上的操作的
  • Winclone Pro for Mac(Windows分区备份还原工具)

    Winclone Pro for Mac一款Windows分区备份还原工具 winclone pro mac版保护您的Boot Camp Windows系统免受数据丢失以及将Boot Camp分区移动到新Mac的完整解决方案 Winclon
  • java返回值float_Java Float类的compare()方法与示例

    Float类compare 方法compare 方法在java lang包中可用 compare 方法用于检查给定两个浮点值的相等或不相等 换句话说 可以说此方法用于比较两个浮点值 compare 方法是一个静态方法 也可以使用类名进行访问
  • 爬虫手册05 异步爬虫

    异步爬虫 目标 例举asyncio和aiohttp模块的常规用法代码 关于协程概念参考 https blog csdn net weixin 40743639 article details 122394616 spm 1001 2014

随机推荐

  • 线程安全同步问题

    需求 模拟3个窗口同时在售50张 票 问题1 为什么50张票被卖出了150次 出现 的原因 因为num是非静态的 非静态的成员变量数据是在每个对象中都会维护一份数据的 三个线程对象就会有三份 解决方案 把num票数共享出来给三个线程对象使用
  • Unity3D打包发生错误 "The type or namespace name `UnityEditor' could not be found"(小心使用)

    这句话是说明UnityEditor未发现 主要是某个脚本里写了关于Editor相关的函数 首先我们需要知道 使用UnityEditor的时候 一般是在自己项目调试运行的时候使用 而打包出来生成文件的时候 这个命令是没法在文件中使用的 所以就
  • 陷波器的离散化及仿真验证

    一 陷波器在连续域的传递函数 1 最基本的陷波器传函 1 其中 wo 是所谓 中心频率 也就是你想要 陷掉 的频率 而 则是 陷阱 的宽度 根据公式可以发现 当输入信号频率很小 s 0 或者很大 s 的时候 上面式子的值是1 当输入信号频率
  • IT项目管理大作业个人报告

    承担角色 1 学习资源共享平台项目分析与设计 整合前期研究文档 编写学习资源共享平台的项目分析与设计报告 给出了我们大作业项目的项目背景 需求概述 功能设计以及与国内相似产品的对比 整合队员们的文档 成果可见 https github co
  • Numpy&Pandas 数据处理与挖掘

    笔记来源B站 https www bilibili com video BV1xt411v7z9 p 21 python学习笔记 1 Numpy 1 1 Numpy优势 1 1 1 Numpy介绍 1 1 2 ndarray介绍 1 1 3
  • ​LeetCode刷题实战88:合并两个有序数组

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 合并两个有序数组 我们先来看题
  • 1002 A+B for Polynomials (25分) PAT_A

    1002 A B for Polynomials 25分 This time you are supposed to find A B where A and B are two polynomials Input Specificatio
  • AD20(Altium designer) PCB图元件位号不显示

    别人发来了一份PCB图 元件位号不显示记录下原因 1 单击红框中黄色的方块 2 弹出的窗口中点击Texts的小眼睛就可以啦
  • 四、vim高级用法配置

    四 vim高级用法配置 4 1 vim的三种模式 vim是全球两大流行文本编辑器之一 vim file 直接编辑文件内容 vim wq 文件存在 wq file 文件不存在 vim模式 1 命令模式 浏览模式 此模式下只能对文件内容浏览 对
  • v-for里面再嵌套一个v-for的写法

    v for里面再嵌套一个v for的写法 list id goods images product desc div class listContent span item create time i formatDate span div
  • 什么是深度学习?怎么学好深度学习?

    深度学习 是一种强大的多层架构 可以用于模式识别 信号检测以及分类或预测等多个领域 深度学习在过去十年获得了极高的关注 这归功于计算能力的不断发展和训练模型不断涌现出更有效的新方法 也源于可使用的数据量不断增加 什么是深度学习 为了理解深度
  • HBase启动RegionServer时报UnknownHostException错误的解决方法

    HBase启动RegionServer时报错 ERROR main regionserver HRegionServer Failed construction RegionServer java lang IllegalArgumentE
  • C++ string 类中方法 size() 和 length() 的区别

    首先说明 在C string类中 size 和length 方法是没有任何区别的 我们可以看 Microsoft Visual Studio 10 0 VC include xstring 文件 转到此两个方法的定义 size type l
  • Python3——matplotlib条形图的绘制

    实验环境 python 3 6 matplotlib 2 2 3 条形图的绘制 matplotlib pyplot bar left height alpha 1 width 0 8 color edgecolor label lw 3 1
  • 比df更好用的命令!

    大家好 我是良许 对于分析磁盘使用情况 有两个非常好用的命令 du 和 df 简单来说 这两个命令的作用是这样的 du 命令 它是英文单词 disk usage 的简写 主要用于查看文件与目录占用多少磁盘空间 df 命令 它是英文单词 di
  • 【SSH框架】慎用hibernate中的saveOrUpdate()方法,解决方案!

    今天写的项目中遇到一个异常 org springframework orm hibernate5 HibernateOptimisticLockingFailureException Batch update returned unexpe
  • 【马克思主义基本原理】--第二章--实践与认识及其发展规律

    实践与认识及其发展规律 文章目录 实践与认识及其发展规律 科学实践观 实践的本质与基本结构 真理和价值的辩证 科学实践观 马克思科学阐明了人类实践的本质和作用 创立了科学的实践观 科学的实践观是不断丰富发展的 总之 科学实践观从主观和客观
  • VS2017评估期已过的处理方法

    Visual Studio 2017 VS2017 企业版 Enterprise 注册码 NJVYC BMHX2 G77MM 4XJMR 6Q8QF Visual Studio 2017 VS2017 专业版Professional 激活码
  • r730xd服务器文档,r730xd配置服务器远程

    r730xd配置服务器远程 内容精选 换一换 如果默认的yum apt zypper源不可用 工具安装过程中会从华为开源镜像站匹配对应的镜像文件 并给出下载地址 如果没有匹配到 请自行获取对应操作系统版本的镜像文件 镜像文件名称请参见鲲鹏开
  • request.getRequestDispatcher(url) /error 404

    二 使用语法 request getRequestDispatcher 资源URI forward request response response sendRedirect web应用 资源URI 在进行web开发时 跳转是最常见的 包