404 请跪下! -- 静态资源访问404和jsp路径问题 -- springmvc填坑

今日份安利

    • 愿天堂没有404
          • 脑门进水--URL拼错
          • web.xml缺少配置
    • 静态资源访问
      • 解决思路
      • 究其根由
    • 最后说两句


愿天堂没有404

各位不知道写web程序的时候, 有没有被404秀的头皮发麻, 尤其是那个排错的过程, 是不是无比刺激(好像关在了小黑屋, 被人爆锤), 后来以至于我的生日愿望, 新年愿望, 七夕(算了,不骗自己了额) 都是:

0 error, 0 Warnings

其实到最后发现都是自己 令人智熄的操作:
比如:

  • 脑门进水–URL拼错
  • web.xml缺少配置

说了这么多概括一句话,: 程序员永不为奴!

OK 鸡血打完了 我们说点正事:


静态资源访问

最近笔者来到了牛逼哄哄的SSM框架上了, 框架使用起来的确舒服, 以前我还挺看好Sevlet 谁知道一堆框架的问世 让Sevlet立刻暴毙, sevlet什么玩意(真香现场)

但是 舔狗一无所有!
这不, 昨天被一个平时瞧不上眼 jsp页面血虐, 我曾一度像天堂许愿:愿天堂没有404!

<script src="../js/jquery-3.4.1.js"></script>

在这里插入图片描述
404 请跪下! -- 静态资源访问404和jsp路径问题 -- springmvc填坑_第1张图片
故事是这样的: 笔者学完Springmvc 后打算练习一下, 凭着往日老司机的配置经验 一路配置 tomcat第一次就AC了(我还挺意外的) 没想到 当我正打开页面测试数据时 就发生了上面的惨案

怎么会找不到jquery? ,还有其他静态图片也访问不到了


解决思路

我本能想到是不是spring-mvc.xml 配置出错, 仔细检查 还找了大佬的代码一个个对照, 结果是没得问题,

这就奇怪了, 我在后台倒腾了几个小时 都没有丝毫觉得jsp会错(真的,老司机在jsp翻车,要石锤的!)

我之所以不去检查jsp 是因为我是完全复制我在SevletDemo练习的jsp 页面, 万万不该

直到,我抱着试试心态从chrome 中看能发现点什么 果然, 路径出错

具体分析:

  • 我的jquery.js 在 js目录下 但是实际访问是在 ajaxDemo文件夹里
    可是我一看src 没毛病啊 匹配根路径找到js目录下的jquery

还是抱着试试的心态(哈哈, 敢于试错, 很爽的) 我把../去掉后:

<script src="js/jquery-3.4.1.js"></script>

我去 成了 !


运行没错了,我脑子蒙了 这不和sevlet一样的jsp页面吗 抱着疑问 二话不说 又去按着修改后的代码去玩servlet 结果404 tm的又来折磨老子了

细心的同志们该 反应过来了 : 目测这是一个深坑

究其根由

Servlet中访问静态资源的写法(当然还有其他写法)

<script src="../js/jquery-3.4.1.js"></script>

Springmvc访问静态资源的写法

<script src="js/jquery-3.4.1.js"></script>

二者只要互换 404就来了, 其实是因为

  • 当我们使用servlet的时候
    访问上面的js 如果不加../ 它就会被拼接在你的请求路径中, 所以就不能定向找到js

  • 而springmvc 中如果加上 ../
    就相当于你在服务器根路径上找, 结果必然404

在这里插入图片描述

但是有一种例外: 如果你是从后台跳到前台页面 ,而这个页面也需要一些静态资源的时候 你还是要加上 ../
原因很简单它逃过了springmvc的拦截, 所以不能继续采用springmvc的做法了


最后说两句

看完这个,你以后见到404 可以骄傲的说: 404 ,给我跪下!

其实,最近玩框架遇到的坑很多 ,这个是最值得拿到台面说的
后面我会继续整理一些坑 给大家做个填坑专栏 方便及时查看

溜了 溜了…

你可能感兴趣的:(框架系列,后端)