我在javaweb中写json的Demo的时候遇到了这个问题,图片一一直取不出来,查了好久终于解决了,所以现在记录一下。
绝对路径:
其实很容易理解,如果你是一个普通的项目,那就是它在你电脑里真实存在的位置,比如说"F:/img/1.jpg"。而像我是在javaweb中项目中引用,那么绝对路径以你的服务器为基准的(http://localhost:8080)。
比如我的目录是这样
那么我的绝对路径就是:
"http://localhost:8080/static/img/4.jpg"
相对路径:
顾名思义,就是想对于当前网页的路径。
上面文件结构图不够全面,再放一张我的jsp页面所在的位置
那么现在我如果在m01.jsp页面使用<img>标签添加img目录下的图片该怎么写呢?
在写之前我们还要知道 ./和../分别代表的是当前文件所在的目录和当前所在文件的上一级目录,当然我们也可以使用多个../返回多级目录。
所以我们使用相对路径就可以这样写:
"../../static/img/1.jpg"//相对于 m01.jsp位于webapp/WEB-INF/views 目录下 来说,1.jpg位于webapp/static/img 目录下,所以我们需要返回两级目录。
而在javaweb中,相对路径分为两种,一种就是上面的,找资源,以当前的资源所在的路径为基准。另一种是以"/"开头的相对虚拟路径,它代表的是以当前服务器的路径为基准(http://localhost:8080)的。
所以我们这里相对路径还有另外一种写法:
"/static/img/3.jpg"
好了,现在可以看一下我们整个Demo运行的情况吧。
例子稍稍有点复杂,其实用<img>标签添加图像就可以了,只不过我本来就是测试json的demo就懒得再写了。
item.json
[ { "name":"张国立", "sex":"男", "email":"zhangguoli@123.com", "url":"../../static/img/1.jpg" }, { "name":"张铁林", "sex":"男", "email":"zhangtieli@123.com", "url":"../../static/img/2.jpg" }, { "name":"邓婕", "sex":"女", "email":"zhenjie@123.com", "url":"/static/img/3.jpg" }, { "name":"张国立", "sex":"男", "email":"zhangguoli@123.com", "url":"http://localhost:8080/static/img/4.jpg" } ]
可以看到这里的url就是我们需要写的相对路径和绝对路径。
m01.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <script src="${pageContext.request.contextPath}/static/jquery-3.3.1.js"></script> <title>Title</title> <style type="text/css"> .p1{ font-size: 14px; color: #000; } .p2{ font-size: 12px; color: #b0b0b0; } .p3{ font-size: 14px; color: #ff5f19; } .product{ width:100%; position: relative; margin: 20px 0 5px 0; height: 100px; background: #fafafa; } .img{ width: 100px; height: 100px; float: left; margin-right: 20px; } .p{ display:inline-block; float:left; width:50%; margin-top:6px; font-family: Microsoft YaHei; } .p1{ margin-top:16px; } </style> <script> //页面加载 $(function(){ $.ajax({ type: "POST",//请求方式 url: "${pageContext.request.contextPath}/static/json/item.json",//地址,就是json文件的请求路径 dataType: "json",//数据类型可以为 text xml json script jsonp success: function(result){ debugger; addBox(result); } }); }); function addBox(result){ //result是一个集合,所以需要先遍历 $.each(result,function(index,obj){ debugger; $("#box").append("<div class='product'>"+//获得图片地址 "<div><img class='img' src="+obj['url']+"></div>"+ //获得名字 "<div class='p1 p'>"+obj['name']+"</div>"+ //获得性别 "<div class='p2 p'>"+obj['sex']+"</div>"+ //获得邮箱地址 "<div class='p3 p'>"+obj['email']+"</div>"+ "</div>"); }); } </script> </head> <body> <div id="box"> </div> </body> </html>
现在可以看到我们的运行结果了