request.getSession().getServletContext().getRealPath()的一些坑


今天是學校機房的服務器上對之前的一個網站升級時發現了一個bug,我自己的機器上用的tomcat8,機房上是tomcat7,結果一運行就開始報找不到文件,最后發現是文件分隔符的問題

原來在代碼中涉及到路徑的寫法是request.getSession().getServletContext().getRealPath("/WEB-INF/"),總是File Not Found.於是修改為request.getSession().getServletContext().getRealPath("/") +"WEB-INF"+"/",重新編譯運行后正常,很奇葩的問題下午抽個時間又對request.getSession().getServletContext().getRealPath()進行了一番測試,發現即使使用File.separator也沒用,注意第5行結果

1 System.out.println(request.getSession().getServletContext().getRealPath(""));   G:\apache-tomcat-8.5.24\webapps\servlet\ 2 System.out.println(request.getSession().getServletContext().getRealPath("/"));  G:\apache-tomcat-8.5.24\webapps\servlet\ 3 System.out.println(request.getSession().getServletContext().getRealPath(File.separator)); G:\apache-tomcat-8.5.24\webapps\servlet 4 System.out.println(request.getSession().getServletContext().getRealPath(File.separator+ "WEB-INF")); G:\apache-tomcat-8.5.24\webapps\servlet\WEB-INF 5 System.out.println(request.getSession().getServletContext().getRealPath(File.separator + "WEB-INF" + File.separator)); G:\apache-tomcat-8.5.24\webapps\servlet\WEB-INF 6 System.out.println(request.getSession().getServletContext().getRealPath("/WEB-INF/"));G:\apache-tomcat-8.5.24\webapps\servlet\WEB-INF\

推薦寫法request.getSession().getServletContext().getRealPath("/") + 你的路徑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM