the5fire

关注Python、Django、Vim、Linux、Web开发、团队管理和互联网--Life is short, we need Python.


java Web开发,统一定位你的资源

作者:the5fire | 标签:     | 发布:2010-12-14 1:06 a.m. | 阅读量: 7669, 7472
http://img163.poco.cn/mypoco/myphoto/20101214/00/5591354820101214003517038.jpg

在实际开发中有很多这样的应用,我们要引用图片,要进行页面跳转,如果仅仅是一个简单的网站或者只是简单的项目也就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
----EOF-----

微信公众号:Python程序员杂谈


其他分类: