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>
      

方法二利用spring提供的mvc标签

  • < mvc:default-servlet-handler / >
    在springmvc配置文件中添加上述标签,< mvc:annotation-driven/>注解驱动也要开启

  • < mvc:resources mapping="/imgs/**" location="/imgs/"/>
    mapping对应映射的路径即url以/imgs/开头的,location表示实际资源位置;mapping路径写法其实就是 Ant风格路径表达式

页面正常访问,图片不能显示的原因

  1. 检查请求路径利用网页调试工具,看看请求路径是否正确,图片前面的工程名是否没有直接localhost/img当然请求不到
  2. 如果是maven工程,一定要重新生成war;你可以查看target目录,在没有重新构建的时候图片是没有的,重新构建之后,复制的图片才会出现。

总结

· SpringMVC框架内部原理,从请求到响应经过的哪些模块器,各自的作用,只有深知内部的执行流程,你才会明白为什么会被拦截;比如说url-patter设置为“ \ *”,访问 * .jsp页面为什么会404,这些只有明白前端控制器,处理器映射器…他们之间的交互过程,也许才会真正的明白为什么会被拦截以及常见的404错误吧!

发布了10 篇原创文章 · 获赞 0 · 访问量 601

猜你喜欢

转载自blog.csdn.net/qq_30591155/article/details/104142261
今日推荐