本文将给大家简述一下在Jsp页面中<base>标签设置全局资源路径的使用,也就是<base>标签 大战 ..和/ 。
先通过以下截图看一下资源文件script和images文件夹与根目录的位置关系。
大家看清这里script和images两个文件夹在Java项目中的位置。
分别从Tomcat部署后的资源访问情况来看,script和images文件夹在项目中的位置。
在Jsp文件头部键入以下代码,从而获取URL根路径.
- //getContextPath():返回项目名称
- //getScheme(): Returns the name of the scheme used to make this request, for example, http, https, or ftp.
- //getServerName():返回服务器名称
- //getServerPort():返回服务端口号
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
从图中我们可以看出,script文件夹在WebRoot目录下,也就是在项目根目录下。在<head>标签中直接用<base>标签即可给全局资源路径设置根路径。
- <html>
- <head>
- <%--使用<base>标签来处理全局的资源访问路径--%>
- <base href="<%=basePath %>"/>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
- <title>添加物料</title>
- <link rel="stylesheet" href="style/drp.css" mce_href="style/drp.css">
- <%--<mce:script src="../script/client_validate.js" mce_src="script/client_validate.js"></mce:script>--%>
- <mce:script src="script/client_validate.js" mce_src="script/client_validate.js"></mce:script>
- </head>
我们平时更多的是使用..来返回上级目录,用..和/ 的组合来拼接成项目资源路径,它俩总是成对出现,这样做反而还费力不讨好,经常出现问题。
当我们使用<base>标签,从根本路径上解决资源访问问题之后,就不用考虑资源文件夹和根目录的位置关系了,不管是相对还是绝对位置,都只要在写清该文件的路径即可。其实,这也是把繁琐的路径拼写抽象出来,提供了一个简洁的方法来给全局设置一个根路径,避免了拼写疏忽导致某些资源找不到,无法访问。
这样<base>标签要比..和/的组合使用效果要好,更加省心。
但要注意一点,在javascript代码中,我们是需要这样操作的。因为在javascript中<base>标签是起不到效果的。
- function addItem() {
- window.self.location ="<%=basePath %>servlet/basedata/ShowAddItemServlet";
- }