如何理解<base href="<%=basePath%>">

"base href "

       今天在写一个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="<%=basePath%>"> 使用了basepath,就是因为这句,所有的链接才不能使用了。看来问题就出在base href 上了,顾名思义,base href不是就是基链接嘛。
上网搜索了一下,原来base href 不单单只有这么点作用,尤其在框架中。


资料如下:

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

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

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

简单例子:


<html> 
<head> 
<base href="http://www.baidu.com" target="_blank"> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title>base标记</title> 
<link rel="Shortcut Icon" href="ani.CUR"> 
</head> 
<body> 
<a href="77.htm" target="_self">77</a> 
<a href="88.htm">88</a> 
</body> 
</html>
       当点了链接后,跳出的文件是http://www.baidu.com/77.htmhttp://www.baidu.com/88.htm,它就是在这些相对路径的文件前加上基链接指向的地址。如果目标文件中的链接没有指定target属性,就用base标记中的target属性。
常在框架结构中用,如左右两个框架,把左边的框架中文件里的连接都显示在右边的框架里。只要用base标记,把其target属性值写为右框架名称,这就不用再为左框架里的文件中的每一个连接都指定target属性。

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

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

       此元素不会被渲染。

       此元素不需要关闭标签。

 

 

       这个标签的用处是解决编程时候的相对路径问题,比如有的cms,因为每页路径不一样,他就给你生成<a href="/sdsd/dsd.html">sddsds</a>之类的,如果我在本地调试,肯定会在本地开一个目录的,这样就乱了,你可以把它生成相对路径,如<a href="sdsd/dsd.html">sddsds</a>,只要在head部分加上<base href=http://localhost/abc/>即可。

所以说,这个标签主要为了解决web编程的时候一些相对路径的问题。

当然,这个base还有一个用法,如在head部分加上这么一行: <base href="_blank"> ,就是默认所有链接在新窗口打开。


       还可以这么理解:
       这是设置基础路径的,basepath为变量 
       简单的静态网页的话你设置比如:<base href="http://www.baidu.com">,那你下面的href属性就会以你上面设的为基准,如:<a href="http://www.baidu.com/xxx.htm"></a>你现在就只需要写<a href="xxx.htm"></a>

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天在写jQuery的例子时,测试时不生效。

jquerybase工程结构如下:

 WebRoot

     js

        jquery-1.6.1.js

     jsp

        one.jsp

one.jsp部分代码如下:

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'one.jsp' starting page</title>
 <script type="text/javascript" src="../js/jquery-1.6.1.js"></script>


最后把 <base href="<%=basePath%>">去掉后运行成功,原因就是当找jquery-1.6.1.js时,把 <base href="<%=basePath%>">
做为基础路径了,http://127.0.0.1:8088/jquerybase/../js/jquery-1.6.1.js 此时是找不到的。

 

解决方法一:<base href="<%=basePath%>">去掉

解决方法二: <script type="text/javascript" src="js/jquery-1.6.1.js"></script>    这时访问的路径就是http://127.0.0.1:8088/jquerybase/js/jquery-1.6.1.js   ,测试成功


原文地址:如何理解<base href="<%=basePath%>">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Web实验报告 Java Web Experiment Report 学生所在学院: 学院 学生所在班级: 学 生 姓 名 : 学 号 : 指 导 教 师 : 月 一、客户端开发设计:系统设计 一、实验目的 掌握Html的语法和用法,能制作简单的网页 二、实验原理 通过学习Html相关知识,了解各个标签的使用方法,设计出自己的网站页面。 三、实验内容 网页部分代码:index.jsp <html> <head> <title>用户管理系统</title> </head> <body> <center><h2>用户管理</h2> <table width=600 border=1> <tr><td>账号<td>密码<td>昵称<td>email<td>操作 </td></tr> </table> <br><a href="login.jsp">用户登陆</a> <br><a href="register.jsp">注册新用户</a> </center> </body> </html> 网页截图: 二、基础语法:用户登录实现 一、实验目的 掌握javascript的语法,能验证表单,实现用户登录。 二、实验原理 通过学习javascript的相关知识,了解javascript的语法,了解javascript的特性, 了解javascript的常用方法,掌握验证表单的方法,实现用户登录。 三、实验内容 网页代码:login.jsp <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>注册</title> <script language="javascript"> function check(){ var userid = new String(document.forms[0].userid.value); var password = new String(document.forms[0].password.value); if(userid==""){ alert("请输入账号!") return false; } if(userid.length>20){ alert("账号太长,不能大于20个字符"); return false; } if(password.length<6){ alert("密码太短,必须大于6个字符"); return false; } return true } </script> </head> <body> <center> <h2>用户登陆</h2> <form action="" method="post" onSubmit="return check()" > <table width="20%"> <tr> <td>账号:<input type="text" name="userid" id="userid" /></td> </tr> <tr> <td>密码:<input type="password" name="password" id="password" /></td> </tr> <tr> <td><input type="submit" name="submit" value="登陆" /> <input type="reset" value="重置" /></td> </tr> </table> </form> </center> </body> </html> 网页截图: 以下是输入正确的登陆截图。 三、程序设计:插入功能设计 一、实验目的 掌握jsp的语法,懂得将Java代码放入页面,实现更多功能。 掌握jdbc的使用,并连接数据库,实现新增用户功能。 二、实验原理 通常在jsp页面收集数据,然后传回服务器处理。服务器连接数据库,将数据存回数 据库中。 三、实验内容 页面代码:register.jsp <html> <head> <base href="<%=basePath%>"> <title>欢迎注册</title> </head> <body> <center> <form action="register.jsp" method="post"> <h2>用户注册</h2> <table width="20%"> <tr> <td>账号:<input type="text" name="userid"></td> </tr> <tr> <td>密码:<input type="password" name="password"></td> </tr> <tr> <td>昵称:<input type="text" name="

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值