jsp中的绝对与相对路径

参考资料 
1 SP文件中引用JavaScript文件路径 
http://tigerben.iteye.com/blog/721595  
2 JSP的相对路径深入研究(多次完善) 
http://www.iteye.com/topic/352202  
3 Java相对路径/绝对路径总结(转) 
http://www.iteye.com/topic/117978  
4 JAVA WEB 开发中路径问题的总结 
http://www.iteye.com/topic/718443  
5 Struts2中的路径问题总结 
http://www.iteye.com/topic/908277  
感觉以上文章总结很完善,就是太多了,   我就使用一种方式(绝对路径)  
一 Myeclipse给出的解决方式 
在Myeclipse创建一个JSP文件,它会默认的加上以下代码: 
Jsp代码   收藏代码
  1. <%  
  2. String path = request.getContextPath();  
  3. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  4. %>  
  5. <base href="<%=basePath%>">  

它使用的就是 绝对路径,不管通过JSP或者是后台服务器分发,重定向都可以找到文件 ,为了以后使用方便,把它写在一个通过的JSP中吧,如下: 
common/meta.jsp 
Html代码   收藏代码
  1. <base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">  
  2. <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>  
  3. <meta http-equiv="Cache-Control" content="no-store"/>  
  4. <meta http-equiv="Pragma" content="no-cache"/>  
  5. <meta http-equiv="Expires" content="0"/>  
  6. <meta http-equiv="X-UA-Compatible" content="IE=7" />  
  7. <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE6" />  

在页面这样引用就行了: 
Html代码   收藏代码
  1. <html>  
  2.     <head>  
  3.         <title>标准DOM示例</title>     
  4.         <%@ include file="/common/meta.jsp" %>      
  5.        ....  

在使用过程中,请参见: JSTL使用配置  
http://liuzidong.iteye.com/blog/617003 中所提到的问题! 
页面引用文件如下,它是相对WebRoot文件夹下的相对路径  
Html代码   收藏代码
  1. <link rel="stylesheet" href="style/mystyle.css" type="text/css">  
  2.  <script src="scripts/jquery-1.6.2.min.js" type="text/javascript"></script>  

在以前大家可能都是这样写的,如下: 
Html代码   收藏代码
  1. <link rel="stylesheet" href="../style/mystyle.css" type="text/css">  
  2.  <script src="../scripts/jquery-1.6.2.min.js" type="text/javascript"></script>  

common/jstl.jsp 
Jsp代码   收藏代码
  1. <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>  
  2. <%@ taglib uri = "http://java.sun.com/jsp/jstl/xml" prefix = "x" %>  
  3. <%@ taglib uri = "http://java.sun.com/jsp/jstl/fmt" prefix = "f" %>  
  4. <%@ taglib uri = "http://java.sun.com/jsp/jstl/sql" prefix = "sql" %>  
  5. <%@ taglib uri = "http://java.sun.com/jsp/jstl/functions" prefix = "fn" %>   
  6. <c:set var="ctx" value="${pageContext.request.contextPath}"/>   

以下为获取工程路径的代码,引用的  
Java代码   收藏代码
  1. System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); System.out.println(FileTest.class.getClassLoader().getResource(""));      
  2. System.out.println(ClassLoader.getSystemResource(""));    
  3. System.out.println(FileTest.class.getResource(""));    
  4. System.out.println(FileTest.class.getResource("/"));  
  5.  //Class文件所在路径  
  6.  System.out.println(new File("/").getAbsolutePath());    
  7.  System.out.println(System.getProperty("user.dir"));  

引用网上的  
Java代码   收藏代码
  1. /**   
  2.     * TODO 取得当前项目的根目录   
  3.     * @author <a href="mailto:pheh.lin@gmail.com">PHeH</a><br>   
  4.     * Created On 2006-12-30 17:15:41   
  5.     */    
  6.    public class Application {     
  7.                 
  8.        /**   
  9.         * TODO 获取根目录   
  10.         * @return   
  11.         * @author <a href="mailto:pheh.lin@gmail.com">PHeH</a><br>   
  12.         * Created On 2007-5-10 15:16:21   
  13.         */    
  14.        public static String getRootPath(){     
  15.            //因为类名为"Application",因此" Application.class"一定能找到     
  16.            String result = Application.class.getResource("Application.class").toString();                
  17.            int index = result.indexOf("WEB-INF");     
  18.            if(index == -1){     
  19.                index = result.indexOf("bin");     
  20.            }     
  21.            result = result.substring(0,index);     
  22.            if(result.startsWith("jar")){     
  23.                // 当class文件在jar文件中时,返回"jar:file:/F:/ ..."样的路径      
  24.                result = result.substring(10);     
  25.            }else if(result.startsWith("file")){     
  26.                // 当class文件在class文件中时,返回"file:/F:/ ..."样的路径      
  27.                result = result.substring(6);     
  28.            }     
  29.            if(result.endsWith("/"))result = result.substring(0,result.length()-1);//不包含最后的"/"     
  30.            return result;     
  31.        }   
  32.          
  33.        public static void main(String[] args) {  
  34.         System.out.println(getRootPath());  
  35.     }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值