Web项目中的URL

来源:互联网 发布:怎样在淘宝上发布图片 编辑:程序博客网 时间:2024/05/16 05:39
几种Web项目中的URL:
1,以协议开头的URL,例如http://www.exampl.com:8080/project1/img/example.png ,这个很清楚写什么就是什么。
2,以/开头的URL,如/project1/img/example.png,这种URL在浏览器中会被解析成域名根路径+URL为完整的URL,(http://www.exampl.com:8080/project1/img/example.png)
3,以单词或者./或../等开头的URL,这种会基于当前网页的URL获取相对路径,例如在http://www.exampl.com:8080/project1/ 页面下img/example.png会被解析为http://www.exampl.com:8080/project1/img/example.png

小型的web项目习惯于用子目录而不是子域名来区分,类似于http://www.exampl.com/project1/ 这样,这样就有了本文处理的问题。 
在模版页面中时(jsp,FreeMark等)处理方法很多,并没有什么大问题,例如在jsp中url写成例如<%=request.getContextPath()%>+url(其他还有些静态资源文件模板url方法不赘述了,例如c:url,spring:url等)
但是在css和js代码中使用url时由于没了模板功能就需要另外的方法来获取项目目录了。
一,在每个页面(模版页面)项目目录写入js变量
<script>var contextPath = '<%=request.getContextPath()%>';</script>
二,在每个页面(模版页面)中添加一个base标签写入基本路径为项目路径
<base href="<%=request.getScheme()%>://<%=request.getServerName()%>:<%=request.getServerPort()%><%=request.getContextPath()%>/"/>
这样页面(js或者css样式)内使用第三种路径时就会基于base标签内设置的根路径计算相对路径了(这只会影响页面内和js中ajax
请求的url不会影响引入的css文件中引用图片的url)

以上方法配合模板同时使用,这样可以防止必须使用相对路径时保证路径不会出错。


原创粉丝点击