(转)jsp base path作用

2009-06-10 14:29

之前写东西基本上一直用绝对路径,今天一同事发现一个访问一个jsp的时候,其中引用的js文件怎么都找不到,但是在eclipse中,在jsp页面通过ctrl+鼠标点击可以直接进入js文件。所以搞的我俩一头雾水。想了半天,才怀疑是base path作怪,一google,果然。下面转一网友的,贴这里记着:
http://blog.sina.com.cn/s/blog_4fb846a90100ahye.html
今天在写一个JSP网页的时候,href不能用了,所有href鼠标放上去前面现实的都是“http:///”,竟然有三个“/”,而且前面也没有显示“localhost:8080”找了大半天找不出来,最后才发现不小心将Eclipse自动生成的下面两行代码误删了,
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
我一直没有使用path 和 basepath ,为什么会这样呢,最后终于发现,原来在 <head></head>中,有一句 <base href="http://cyxinda.blog.163.com/blog/<%=basePath%>"> 使用了basepath,就是因为这句,所有的链接才不能使用了。看来问题就出在base href 上了,顾名思义,base href不是就是基链接嘛。
上网搜索了一下,原来base href 不单单只有这么点作用,尤其在框架中。


资料如下:

base标记是一个基链接标记,是一个单标记。用以改变文件中所有连结标记的参数内定值。它只能应用于标记<head>与</head>之间。
你网页上的所有相对路径在链接时都将在前面加上基链接指向的地址。

重要属性:
href
设定前缀的链接地址

target
设定文件显示的窗口,同a标记中的target

简单例子:
<html>
<head>
<base href="http://cyxinda.blog.163.com/blog/http://www.baidu.com" target="_blank">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>base标记</title>
<link rel="Shortcut Icon" href="http://cyxinda.blog.163.com/blog/ani.CUR">
</head>
<body>
<a href="http://cyxinda.blog.163.com/blog/77.htm" target="_self">77</a>
<a href="http://cyxinda.blog.163.com/blog/88.htm">88</a>
</body>
</html>

当点了链接后,跳出的文件是http://www.baidu.com/77.htm或http://www.baidu.com/88.htm,它就是在这些相对路径的文件前加上基链接指向的地址。如果目标文件中的链接没有指定target属性,就用base标记中的target属性。
常在框架结构中用,如左右两个框架,把左边的框架中文件里的连接都显示在右边的框架里。只要用base标记,把其target属性值写为右框架名称,这就不用再为左框架里的文件中的每一个连接都指定target属性。

当使用时,BASE 元素必须出现在文档的 HEAD 内,在任何对外部源的引用之前。

此元素在 Microsoft? Internet Explorer 3.0 的 HTML 中可用,在 Internet Explorer 4.0 的脚本中可用。

此元素不会被渲染。

此元素不需要关闭标签。

ServletContext.getRealPath("/")此方法已经过时,返回工程在操作系统(平台)上面的部署的绝对路径,
其替代方案是:request.getSession().getServletContext().getRealPath("\\")

你可能感兴趣的:(jsp,Path)