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