spring mvc与html中处理引用js等静态文件的问题

转载 2016年08月30日 09:52:26

最近开发页面遇到一些问题,在这里记录一下。

通常,我们的html页面或jsp页面难免需要引入一些图片、js、css等文件,于是需要填写对应的文件路径,有相对路径和绝对路径两种写法,写相对路径时,如果通过controller后再返回对应的html或jsp页面时,相对路径可能会不是我们想要的,例如,在服务器端,如果某js文件路径为:/js/xx.js,html文件为/html/xx.html,并在在html中写入一下相对路径引用代码<script src="../js/jquery.min.js"></script>,会有两种结果发生,这里假设filter不拦截访问,并且配置了,如果我们直接访问路径为:http://127.0.0.1:8080/(项目名)/html/xx.html,结果很一切正常,但是当我们通过controller映射返回对应的html页面时,可能就会出错了。

例如我们的controller映射如下:

?
1
2
3
4
5
6
7
8
9
10
@Controller
@RequestMapping("/download")
public class DownloadController {
 
    @RequestMapping(value="/develop/*",method=RequestMethod.GET,produces={"text/html"})
    public String developPage()  {
           return "xx";
    
     
}
从上面的controller得出,我们访问xx.html的路径可写为:http://127.0.0.1:8080/(项目名)/download/develop/......

那么这个时候相对路径../js/xx.js在浏览器端解析后将为:http://127.0.0.1:8080/(项目名)/download/js/xx.js,于是悲催的事情就发生了,对应的js文件将得不到正常的引用,原因很简单,路径不对了,自然找不到,网上查找到的资料解释为:导入的js是相对当前请求的路径的,而不是相对于你在服务器文件的放置目录的。因此,正好印证了网上的解释,../js/xx.js被浏览器端解析后地址就是http://127.0.0.1:8080/(项目名)/download/js/xx.js。

那么怎么解决这个由controller引起的相对路径问题呢?

如果不经过controller映射,那么这个问题无需担心,大胆的写相对路径就是了,因为你的请求地址的目录结构和服务器的一致,如果要经过controller映射,方法如下:

假设是jsp页面,可以使用如下代码获取绝对路径地址:

?
1
2
3
4
5
<%
<span><span>  String path = request.getContextPath();</span></span><span>
  String basePath = request.getScheme() + <span class="string">"://"</span><span> + request.getServerName() + </span><span class="string">":"</span><span> </span></span><span>+ request.getServerPort() + path + <span class="string">"/"</span><span>;  </span></span>
%>
<script type="text/javascript" src="<%=basepath%>/js/xx.js"></script>
?
1
如果是html代码,这也是我遇到的问题,由于接触web开发时间不太长,就悲催在这里了,因为我所有的页面都使用html+ajax的方式,因此就没有机会使用jsp的一些方法了,
其实解决方法也比较简单大笑,可以直接写绝对路径为:/(项目名)/js/xx.js。

spring mvc与html中处理引用js等静态文件的问题

最近开发页面遇到一些问题,在这里记录一下。     通常,我们的html页面或jsp页面难免需要引入一些图片、js、css等文件,于是需要填写对应的文件路径,有相对路径和绝对路径两种写法,写相对路径时...
  • u010060408
  • u010060408
  • 2014年12月01日 15:37
  • 1872

SpringMVC中避免拦截css,js,html图片等静态文件

之前在使用SpringMVC中,忽略了一个问题,就是没有考虑到使用rest风格后会阻截css/j...
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2014年08月01日 17:01
  • 3797

Spring mvc jsp中引入静态css资源文件问题

今天在使用spring mvc时,在jsp页面中要引用外部的css文件,结果发现怎么也引用不进来,报如下错误:No mapping found for HTTP request with URI [/...
  • zlp1992
  • zlp1992
  • 2017年02月20日 20:17
  • 1437

SpringMVC访问静态文件,如:jpg,js,css等,<mvc:resources/>标签的使用

如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg...
  • honghailiang888
  • honghailiang888
  • 2016年09月12日 11:23
  • 1326

SpringMVC访问静态文件的三种方式

如何你的DispatcherServlet配置的是拦截 *.do或者.action这样的URL,就不存在访问不到静态资源的问题。 如果你的DispatcherServlet为了实现restful风格的...
  • xiaobao5214
  • xiaobao5214
  • 2016年08月04日 15:30
  • 406

springmvc中解决JS,CSS等静态文件无法访问问题

这个可以说是很多初学Springmvc的人都会碰到一个令人头痛的问题 那就是为什么我配置好web.xml中的dispatchservlet后,js,css,甚至gif都不能正常显示了 我们...
  • wang_shuyu
  • wang_shuyu
  • 2016年11月07日 12:46
  • 1473

spring mvc 页面访问图片或者js等静态文件路径出错问题

这是web工程的结构,图片放在images文件夹下,js文件放在resource文件夹下 然后就...
  • qq_34155171
  • qq_34155171
  • 2017年05月24日 15:42
  • 860

Spring mvc 项目中页面访问不到静态文件,如img , js , css 等

Spring mvc 项目中页面访问不到静态文件,如img , js , css 等 起因:我们通常在springmvc项目中web.xml配置文件中的内容为: springmvc001-...
  • responsecool
  • responsecool
  • 2014年08月25日 15:47
  • 2537

Spring MVC配置静态资源,直接映射到对应的文件夹,DispatcherServlet 不处理

mvc:resources mapping="/static/**" location="/WEB-INF/static/" /> spring xml这样配置 link rel="...
  • shenhonglei1234
  • shenhonglei1234
  • 2016年12月08日 16:17
  • 921

SpringMVC之不过滤静态文件

对于添加了springMVC拦截器后无法访问静态文件的情况,有三种解决办法,可参考:http://www.cnblogs.com/banning/p/6195072.html 我项目中用的第一种方案...
  • u013142248
  • u013142248
  • 2017年06月02日 00:17
  • 674
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring mvc与html中处理引用js等静态文件的问题
举报原因:
原因补充:

(最多只允许输入30个字)