<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
首先大家看到myeclipse2014会在新建jsp页面的时候,会自动给我们生成这两句代码;
那么这两句有什么用呢?
我们看看输出结果吧:
<%System.out.println("basePath:"+basePath); %>
<%System.out.println("path:"+path); %>
结果为:
basePath:http://localhost:8080/item_bank/
path:/item_bank
basePath后面带了一个“/”个哦~,这个各位注意一下
看的出来basePath就是绝对路径
path是相对路径
当我们在表单提交的时候,可以使用相对路径:
<form action="<%=path+"/" %>RegistServlet" method="post">
注意就是path后面要带上“/”
当然还可以使用相对路径:
<form action="<%=basePath %>RegistServlet" method="post">
web.xml里面正常写就可以了,多层也无妨!即(/servlet/RegistServlet)
最后有一个:<base href="<%=basePath%>">
当我们使用:<base href="<%=basePath%>">
的时候
那么我们可以直接写:
<form action="RegistServlet" method="post">
因为,使用了<base href="<%=basePath%>">
,就相当于之后的相对路径在链接时都将在前面加上基链接指向的地址。即变成了:
http://localhost:8080/item_bank/RegistServlet这个了
若是不使用的话,那么就是相当于在当成文件夹下面寻找,可是当前是有个新的文件夹包裹住的,是为了分类嘛,所以这里相对路径要想能够有效的找到RegistServlet的url就要使用:
<form action="../RegistServlet" method="post">
这样就可以了!
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.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 的脚本中可用。
此元素不会被渲染。
此元素不需要关闭标签。