首先一点,WebRoot目录下的文件是都可以通过浏览器输入路径,直接读取到的、
例如这样:

而WebRoot下面WEB-INF是无法浏览器输入路径直接读取的。
因为是受保护的。
如果jsp读取一个图片的话。
jsp在WebRoot/jsp下
图片在WebRoot/imag下
那么就要../imag/xx.jpg获取相对路径。
因为servlet程序是无法读取C:\xx\xx\xx这样的绝对路径的。
除非更改tomcat配置文件,但我觉得那样完全没有意义。
另外,要注意你请求的路径是否被拦截。
例如web.xml里面配置servlet-mapping为(此为spring mvc配置):
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
那么一切请求都会被拦截,在springmvc里寻找bean或注解,若找不到报404错误。也不可能直接jsp获取图片路径了。
报错
No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘springmvc’
解决方法:将 <url-pattern>/</url-pattern>
改为 <url-pattern>*.do</url-pattern>或 <url-pattern>*.html</url-pattern>
本文详细解析了WebRoot目录及其子目录WEB-INF的访问权限,阐述了如何在JSP中正确引用WebRoot下的资源文件,如图片,并讨论了在Spring MVC框架下配置不当导致的资源访问问题。

492

被折叠的 条评论
为什么被折叠?



