SpirngMVC静态资源被拦截解决方法
方法一 使用default配置映射
- 使用tomcat默认的servlet处理,而不是交由DispatcherServlet去处理
- 配置servlet-name为default的映射,url-pattern设置要交予tomcat过滤的静态资源文件(* .png,* .js…);其他人的博客有的说必须servlet-mapping的位置位于前面,我实际测试放在哪个位置并没有硬性要求,并不会报错(不绝对)。
示例<servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping>
- 配置servlet-name为default的映射,url-pattern设置要交予tomcat过滤的静态资源文件(* .png,* .js…);其他人的博客有的说必须servlet-mapping的位置位于前面,我实际测试放在哪个位置并没有硬性要求,并不会报错(不绝对)。
方法二利用spring提供的mvc标签
-
< mvc:default-servlet-handler / >
在springmvc配置文件中添加上述标签,< mvc:annotation-driven/>注解驱动也要开启 -
< mvc:resources mapping="/imgs/**" location="/imgs/"/>
mapping对应映射的路径即url以/imgs/开头的,location表示实际资源位置;mapping路径写法其实就是 Ant风格路径表达式
页面正常访问,图片不能显示的原因
- 检查请求路径利用网页调试工具,看看请求路径是否正确,图片前面的工程名是否没有直接localhost/img当然请求不到
- 如果是maven工程,一定要重新生成war;你可以查看target目录,在没有重新构建的时候图片是没有的,重新构建之后,复制的图片才会出现。
总结
· SpringMVC框架内部原理,从请求到响应经过的哪些模块器,各自的作用,只有深知内部的执行流程,你才会明白为什么会被拦截;比如说url-patter设置为“ \ *”,访问 * .jsp页面为什么会404,这些只有明白前端控制器,处理器映射器…他们之间的交互过程,也许才会真正的明白为什么会被拦截以及常见的404错误吧!