(转)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 不仅仅只有这么点做用,尤为在框架中。html


资料以下:框架

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

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

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

简单例子:
<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>ui

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

当使用时,BASE 元素必须出如今文档的 HEAD 内,在任何对外部源的引用以前。操作系统

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

此元素不会被渲染。blog

此元素不须要关闭标签。

ServletContext.getRealPath("/")此方法已通过时,返回工程在操做系统(平台)上面的部署的绝对路径,其替代方案是:request.getSession().getServletContext().getRealPath("\\")
相关文章
相关标签/搜索