问题
在java web项目中,添加静态文件到webapp下,然后重启项目,页面上样式未生效,在浏览器的Sources
下无新加的静态文件,在浏览器的Network
下发现请求静态文件404
。
解决
删除target
,重新运行项目。
原因
开发工具IDEA进行编译时没有将静态文件编译进去,这种情况概率不高,但是会存在。
知识点
webapp
与WEB-INF
的区别
webapp
相对来说安全性较低些,可以直接访问。
接下来说明WEB-INF
WEB-INF
相对来说安全性高些,首先看web.xml
的前端控制器的拦截路径,再看springmvc.xml
的放行路径。
前端控制器拦截的三种方式(web.xml
包下的DispatcherServlet
):
路径 | 解释 |
---|---|
*.do | 只拦截.do文件 |
/ | 除jsp外,其它均拦截 |
/* | 拦截所有请求包括jsp页面 |
放行一般是由spring mvc
来做,即配置文件spring mvc.xml
中
<mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/>
location
:指location指定的目录不要拦截,直接请求,这里指在根目录下的resources文件下的所有文件
mapping
:值在resources文件下的所有文件(**代表所有文件)
所有意思就是在根目录下resources的所有文件不会被DispatcherServlet拦截,直接访问,当做静态资源交个Servlet处理