聊聊JavaWEB中的相对路径

1.先来聊聊前端的html
对于前端中的路径我们来举个例子
1.1造一个servlet

@WebServlet("/Servlet001")
public class Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String s = req.getRequestURL().toString();
        System.out.println(s);

    }
}

1.2造一个html并且写一个标签用于访问servlet

<a href="/Servlet001">点我访问Servlet001</a>

1.3我们先规定虚拟路径是 /
访问并点击
在这里插入图片描述
在这里插入图片描述
小码这不没有问题吗?
1.4让我们来给一个虚拟路径
在这里插入图片描述
1.5再次访问
在这里插入图片描述
404我们查看一下URL便可以知道,我们刚刚配的虚拟路径呢??我们手动在地址栏中加上
在这里插入图片描述
这样就可以访问成功了,那我们就知道了,因为a标签的hred里面就只写了/servlet001,在一个html页面里面,案例展现的是ip和端口没有变,但是虚拟路径丢了。
解决方法有两种,
1.手动改href,但是当用户更改虚拟路径后,我们又要改
2.我们可以使用相对路径,跳跳跳,跳到web目录,因为web目录相当与根路径(ip端口虚拟路径),所以我们从这里开始,访问动态资源Servlet

对于书写相对路径我们需要明确几点

  1. 你在哪里
  2. 你的目标是哪

我在这里在这里插入图片描述
我要去这里
在这里插入图片描述
所以我站在我的位置,向上走一级就可以到达Val下面和html目录同级的目录
在这里插入图片描述
我们发现就这样,我们完成了对Servlet的访问

2.如果上面已经明白的差不多了我们接着走
我们这次这样玩,刚刚不是已经通过网页上的相对路径找到了Servlet的URL路径吗,我们在通过重定向或者请求转发来跳跳跳到其他的静态页面,这里我们仍然继续讨论相对路径。
2.1造一个名字很鸡贼的Servlet

@WebServlet("/aaa/bbb/Servlet002")
public class Servlet002 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     
    }
}

2.2然后我们在web下面直接造一个HTML
在这里插入图片描述
需要注意的是经Servlet名字很鸡贼,我们应该知道,在浏览器地址栏中,一个斜杠你可以当作一级目录来看
然后我们在Servlet中开始跳
2.3还是抓住两点内容

  1. 你在哪里
  2. 你要去哪里

我在

http://localhost:8080/Val/aaa/bbb/Servlet002

我要去

http://localhost:8080/Val/oo.html

所以我们首先要向上跳一级到bbb,再跳一级到aaa即可,因为此时aaa和oo.html同级
书写相对路径到重定向函数中

 resp.sendRedirect("../../html/test1.html");

测试
我们访问Servlet然后直接重定向到对应位置了

在这里插入图片描述
总结
我们使用相对路径主要是为了解决当虚拟路径发生变化时候,资源路径问题。
但是有一点需要说:在jsp中我们建议使用绝对路径
在servlet中我们也建议使用绝对路径,因为我们在上面发现,当虚拟路径由 / 变为Val的时候,没有在资源路径中,如果这样的情况发生在jsp和servlet中,我们可以采用 获取虚拟路径的方法拼一个绝对路径

req.getContextPath();

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值