在实际开发中有很多这样的应用,我们要引用图片,要进行页面跳转,如果仅仅是一个简单的网站或者只是简单的项目也就ok了,但是如果要是个大型的项目的话,那可能这里面的资源定位就是一个很麻烦的事儿了,这个问题以前我们在开发系统时也是多次遇到。不过在java web开发中却有一个相对不错的解决方案,那就是<base>标签。
<base>标签的作用就是让你每一个页面上的资源定位都从根目录开始,比如说我的网站上要引用我上传到服务器上的图片,图片物理地址是: ”public-www/the5fire/images/bycall/hello.gif”.,如果不使用<base>标签那么我在首页引用需要 src=”the5fire/images/bycall/hello.gif”,这个倒是也方便,因为本身就是根目录下的引用,但如果我要是在某一目录下(比如说the5fire/mynewblog/show)引用的话那我就需要这么用 src=”../../image/bycall/hello.gif”。如果仅此一处引用倒也可以接受,但问题是没有一个网站或者项目只有一处使用URI。 上面的简单举例属于资源相对定位,这种定位方式的缺点就是你需要对这些资源的定位逻辑上清晰,比如src=”../../”,这个可以很容易出错的。 如果使用<base>标签的话,那问题就简单了,你要访问所有的资源都是从根目录开始的,因此你只需要写下完整的路径就可以了。不需要考虑各个文件之间的逻辑路径关系。 要使用<base>标签,你需要在每个页面下写上如下代码: Jsp代码:
<% String path = request.getContextPath(); String basePath = request.getServerName()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
在HTML的<head>标签下面加入:
<base href="<%=basePath %>">
这样你在访问资源的时候只需要考虑的实际位置就行了。
关于这个<base>标签的缺点,只是我个人的一点小小看法。<base>标签如果使用在个人项目中,不接入互联网,倒也没多大问题。但是如果是用到网站上,可能存在的问题是会暴露你的网站的目录结构,考虑到这点相对路径就相对安全些。
- from the5fire.com微信公众号:Python程序员杂谈