码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-12-01 16:00:43      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:web   spring mvc   html   

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

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

    例如我们的controller映射如下:

@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页面,可以使用如下代码获取绝对路径地址:

<%
<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>  
    如果是html代码,这也是我遇到的问题,由于接触web开发时间不太长,就悲催在这里了,因为我所有的页面都使用html+ajax的方式,因此就没有机会使用jsp的一些方法了,
其实解决方法也比较简单bubuko.com,布布扣,可以直接写绝对路径为:/(项目名)/js/xx.js。

    说到这里,想说的问题基本上说完了,如有更好的方案,希望大神指点。

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

标签:web   spring mvc   html   

原文地址:http://blog.csdn.net/zhou_junhua/article/details/41647605

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!