basehref
今天在写一个JSP网页的时候,href不能用了,所有href鼠标放上去前面现实的都是“http:///”,竟然有三个“/”,而且前面也没有显示“loc alhost:8080”找了大半天找不出来,最后才发现不小心将Eclipse自动生成的下面两行代码误删了,
<% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort()+path+"/"; %>
我一直没有使用path和basepath,为什么会这样呢,最后终于发现,原来在<head></head>中,有一句
<basehref="<%=basePath%>">
使用了basepath,就是因为这句,所有的链接才不能使用了。看来问题就出在basehref上了,顾名思义,basehref不是就是基链接嘛。
上网搜索了一下,原来basehref不单单只有这么点作用,尤其在框架中。
资料如下:
base标记是一个基链接标记,是一个单标记。用以改变文件中所有连结标记的参数内定值。它只能应用于标记<head>与</head>之间。
你网页上的所有相对路径在链接时都将在前面加上基链接指向的地址。
重要属性:
href
设定前缀的链接地址
target
设定文件显示的窗口,同a标记中的target
简单例子:
<html> <head> <basehref="http://www.javaweb.top"target="_blank"> <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"> <title>base标记</title> <linkrel="ShortcutIcon"href="ani.CUR"> </head> <body> xiuxiu api </body> </html>
当点了链接后,跳出的文件是
http://www.javaweb.top/xiuxiu
或
http://www.javaweb.top/api
,它就是在这些相对路径的文件前加上基链接指向的地址。如果目标文件中的链接没有指定target属性,就用base标记中的target属性。
常在框架结构中用,如左右两个框架,把左边的框架中文件里的连接都显示在右边的框架里。只要用base标记,把其target属性值写为右框架名称,这就不用再为左框架里的文件中的每一个连接都指定target属性。
当使用时,BASE元素必须出现在文档的HEAD内,在任何对外部源的引用之前。
此元素在Microsoft?InternetExplorer3.0的HTML中可用,在InternetExplorer4.0的脚本中可用。
此元素不会被渲染。
此元素不需要关闭标签。
这个标签的用处是解决编程时候的相对路径问题,比如有的cms,因为每页路径不一样,他就给你生成sddsds之类的,如果我在本地调试,肯定会在本地开一个目录的,这样就乱了,你可以把它生成相对路径,如sddsds,只要在head部分加上
<basehref=http://localhost/abc/>
即可。
所以说,这个标签主要为了解决web编程的时候一些相对路径的问题。
当然,这个base还有一个用法,如在head部分加上这么一行:<basehref=”_blank”>,就是默认所有链接在新窗口打开。
还可以这么理解:
这是设置基础路径的,basepath为变量
简单的静态网页的话你设置比如:
<basehref="http://www.javaweb.top">
,那你下面的href属性就会以你上面设的为基准,如:你现在就只需要写
—————————————————————————————————————————————————————————-
今天在写jQuery的例子时,测试时不生效。
jquerybase工程结构如下: WebRoot js jquery-1.6.1.js jsp one.jsp one.jsp部分代码如下: <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request. getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <html> <head> <basehref="<%=basePath%>"> <title>MyJSP'one.jsp'startingpage</title> <scripttype="text/javascript"src="../js/jquery-1.6.1.js"> </script> 最后把<basehref="<%=basePath%>">去掉后运行成功,原因就是当找jquery-1.6.1.js时,把<basehref="<%=basePath%>"> 做为基础路径了,http://127.0.0.1:8088/jquerybase/../js/jquery-1.6.1.js此时是找不到的。 解决方法一:<basehref="<%=basePath%>">去掉 解决方法二:<scripttype="text/javascript"src="js/ jquery-1.6.1.js"></script>这时访问的路径就是http:// 127.0.0.1:8088/ jquerybase/js/jquery-1.6.1.js,测试成功