在servlet程序中使用getRequestDispatcher方法跳转到jsp页面失败解决方法


前言

在servlet程序中使用getRequestDispatcher方法跳转到jsp页面时报错,首先我们要了解一下服务器和浏览器之间解析的路径差别与不同含义


一、Web中的相对路径与绝对路径,web中/斜杠的不同含义

1.Web中的相对路径与绝对路径

在JavaWeb中路径分为相对路径与绝对路径

相对路径是:

.   一个点表示当前目录
. . 两个点表示上一级目录
资源名 表示当前目录/资源名

绝对路径是:

http://ip:port/工程路径/资源路径

在实际开发中都使用绝对路径或者base+相对路径

2.Web中/斜杠的不同意义

在web中/斜杠是绝对路径
/斜杠如果被浏览器解析得到的地址是:http://ip:port/

例如<a href="/">斜杠</a>

/斜杠如果被服务器解析得到的地址是http://ip:port/工程路径

例如1、<url-pattern>/servlet1</url-pattern>
2、servletContext.getRealPath(“/”);
3、request.getRequestDispatcher(“/”);注意这个方法,直接默认进入工程路径下面,哪怕直接request.getRequestDispatcher(“”)里面没有具体路径也直接进入工程路径。

在这里插入图片描述
比如这张图所写的一样,我填的完整的绝对路径,访问后提示
在这里插入图片描述
http前面还有“/”,说明这个方法被解析的时候是默认进入工程路径中去的。

特殊情况: response.sendRediect(“/”); 把斜杠发送给浏览器解析。得到 http://ip:port

二、问题解决方法

问题出现的几种情况

要注意的是我们必须使用绝对路径,不能使用相对路径,servlet.java是在src目录下,我这里将Java目录设置为我的源码目录,jsp是在webapp目录下,彼此不存在相对关系;
在这里插入图片描述

我目的是从Action.java这个servlet程序跳转到info.jsp文件中去,我一开始是这样设置的路径
在这里插入图片描述

于是乎出现了这这种报错,为什么呢?getRequestDispatcher方法它是由Tomcat服务器解析,这个时候解析出来的路径明显是去不了test目录下的,于是乎我把它改成了. ./info.jsp
在这里插入图片描述
这个时候运行服务器就变成了这个
在这里插入图片描述
这个说明文件已经找到了,但是服务器里面有问题,这两个文件不存在相对关系啊,我们使用绝对路径试试,
在这里插入图片描述
运行结果:
可以了!
在这里插入图片描述

总结

向这个作者学习https://blog.csdn.net/Java_stud/article/details/80551681
好好学习天天向上!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值