个人理解,仅供参考,多多指教(URL URI 表示对应的对象)。
问题:
在获取项目的根目录时,一开始直接用getResource()的方法得到URL的对象,然后去getPath()。在我自己的电脑上测试没什么问题。但是提交到服务器上测试时,通过getPath()获取到的路径却乱码了。百思不得其解。
后来用getResource()的带的URL对象.toURI()获取到URI对象,再getPath(),得到的路径就是完整的路径了。
原因:
URL.getPath() 会经过application/x-www- form-urlencoded编码,所以如果你服务器上的路径中有特殊的字符&%或者空格,那么会自动帮你编码。而URI.getPath()不会帮你编码,直接返回对应的路径。
延伸:
为什么URL.getPath() 会自动进行编码,而URI不会?这就要谈到URL和URI的区别了。