文章目录
今天在项目中,写一个jsp页面,遇到了一大堆坑,今天给大家分享一下,以免导致其他人也掉进去。
基础环境
- 框架SpringMVC+Spring+Mybatis
- JDK版本:1.8
- Maven工程
“车祸现场”
今天做的jsp页面,我使用的是bootstrap,所以引入了一些依赖,然后写它的路径,一开始采用的是相对路径,后来改用绝对路径,然后出现了一系列问题,这里给吃瓜群众分享一波。
一、SpringMVC配置文件要加的配置
<!--两个标准配置-->
<!--将SpringMVC不能处理的请求交给tomcat-->
<mvc:default-servlet-handler/>
<!--能支持Springmvc更高级的一些功能,JRS303的校验,快捷的ajax,映射动态请求-->
<mvc:annotation-driven/>
二、相对路径与绝对路径
1.什么是相对路径?什么是绝对路径?
相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。使用相对路径可以为我们带来非常多的便利。HTML绝对路径(absolute path)指带域名的文件的完整路径。–来自于百度百科
绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。
完整的描述文件位置的路径就是绝对路径,以web站点根目录为参考基础的目录路径。绝对路径名的指定是从树型目录结构顶部的根目录开始到某个目录或文件的路径,由一系列连续的目录组成,中间用斜线分隔,直到要指定的目录或文件,路径中的最后一个名称即为要指向的目录或文件。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。 --来自于百度百科
可能大家看的不明白,我来说一下我的理解:
-
相对路径: 就是相对于你当前页面的,
- 举个例子:路人甲和路人乙,都在车上,不管车开多快,即使车失控了,他们也感觉彼此是静止的,
- 也就是说:只要我的页面和我要访问的资源,自此对立的路径不变,我在页面访问对应的资源就是没问题的。
-
绝对路径: 以某个参照物作为标准,看路径是否变动
- 举个例子:在javaWeb开发中,我们默认服务器的相对路径的参照物就是:http:// 主 机 : 主机: 主机:端口号/
- 也就是说:只要我们的位置一旦发生变化,可能就不行了。不再是类似于相对路径那样相对不变就可以了。
2.JavaWeb中的相对路径和绝对路径
如何区分相对路径和绝对路径?
如果开头以“/”开头,则是相对路径,否则就是绝对路径。
相对路径
- "…/“代表当前路径的父目录,”…/…/"代表当前父目录的父目录。
绝对路径
- 找资源,以服务器的路径为准(http://localhost:8088),需要加上项目名。
三、经过多次检查,发现依旧有问题
-
报错信息
-
部分JSP代码
<%
pageContext.setAttribute("APP_PATH",request.getContextPath());
%>
<!--
不以/开始的相对路径,找资源,以当前资源的路径为基准,经常容易出错。
以/开始的相对路径,找资源,以服务器的路径为准(http://localhost:3306),需要加上项目名。
-->
<!--引入样式 -->
<link href="${APP_PATH}/static/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
<script src="${APP_PATH}}/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<!--引入jquery-->
<script type="text/javascript" src="${APP_PATH}/static/js/jquery-1.12.4.min.js"></script>
最后的结论就是,它并没有解析我的表达式,而是当成字符串去找,所以找不到,在该jsp页面加上如下配置即可。
<%@page isELIgnored="false" %>
至于这个属性的含义,我发现一篇不错的博文,大家可以点开看看。jsp中isELIgnored的作用
博客推荐:
【Java集合篇】jdk8的HashMap源码分析
【Java集合篇】jdk7的HashMap源码分析
【Java集合篇】对比JDK7和8深度剖析ArrayList(只要看,就能懂)