Spring MVC配置DispatcherServlet前端控制器和拦截器(对静态资源不拦截)的方法
2019-06-20 19:58
447 查看
自己在做作业的时候碰到在jsp里导图片无法正常显示的情况,后来发现是自定义的interceptor对图片进行了拦截,所以无法获取到图片
.xml文件里的代码
web.xml里的部分配置信息(配置DispatcherServlet):
<!-- 配置Spring MVC前端核心控制器 --> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <!-- 配置服务器启动后立即加载Spring MVC配置文件 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
springmvc-config.xml里的部分配置信息(配置静态资源的访问映射即不拦截静态资源):
<!-- 配置静态资源的访问映射,此配置中的文件,将不被DispatcherServlet前端控制器拦截 --> <mvc:resources location="/js/" mapping="/js/**" ></mvc:resources> <mvc:resources location="/css/" mapping="/css/**"></mvc:resources> <mvc:resources location="/fonts/" mapping="/fonts/**"></mvc:resources> <mvc:resources location="/images/" mapping="/images/**"></mvc:resources> <!-- 配置登录校验拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.edu.bdu.interceptor.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
原来经常这样配置,所以觉得静态资源都放行了,但是经过多次实验还是被拦截了,所以我怀疑是拦截器给拦掉了,对拦截器配置进行修改
第一种方法:在拦截器里配置不需要拦截的资源路径(我的是图片)
<!-- 配置登录校验拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 增加的信息 /start --> <mvc:exclude-mapping path="/**/*.png"/> <mvc:exclude-mapping path="/**/*.gif"/> <mvc:exclude-mapping path="/**/*.jpg"/> <!-- 增加的信息 /end --> <bean class="com.edu.bdu.interceptor.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
第二种方法:在web.xml中配置默认拦截器,不拦截静态资源
用这种方法的话需要在web.xml里添加servlet-mapping
<!-- 不对静态文件拦截 --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/js/*</url-pattern> <url-pattern>/css/*</url-pattern> <url-pattern>/fonts/*</url-pattern> <url-pattern>/images/*</url-pattern> </servlet-mapping>
springmvc-config.xml里添加<mvc:default-servlet-handler />(我用的tomcat默认servlet名字是default)
<mvc:default-servlet-handler default-servlet-name="default"/>
用这种方法配置那么<mvc:resources>也就不要了,拦截器里也不用写<mvc:exclude-mapping>了
第三种方法:在web.xml中配置特定的<url-pattern>
<!-- 配置Spring MVC前端核心控制器 --> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <!-- 配置服务器启动后立即加载Spring MVC配置文件 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
用这种方法,spring拦截的时候只拦截 “.action” 结尾的请求,就无关于静态资源的维护了。
<mvc:resources>也就不要了,拦截器里也不用写<mvc:exclude-mapping>了
相关文章推荐
- 防止SpringMVC拦截器拦截js等静态资源文件的解决方法
- java 拦截器不拦截静态资源的配置方式
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
- Spring MVC 拦截器配置及使用(包括静态资源的处理)
- SpringMVC 拦截器不拦截静态资源的三种处理方式方法
- 【转】Spring Mvc Web 配置拦截规则与访问静态资源
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
- Spring MVC前台使用html页面作为视图,配置静态资源后Controller控制器不起作用的解决办法
- SpringMVC 拦截器不拦截静态资源的三种处理方式方法
- 关于spring mvc不拦截静态资源的配置
- spirngmvc配置不拦截的静态资源方法
- Spring MVC 框架不拦截静态资源的配置
- SpringMVC 拦截器不拦截静态资源的三种处理方式方法
- Spring MVC前台使用html页面作为视图,配置静态资源后Controller控制器不起作用的解决办法
- Django静态资源URL STATIC_ROOT的配置方法
- SpringMVC 多控制器,静态资源访问,配置文件位置更改
- SpringMVC 拦截器不拦截静态资源的三种处理方式
- spring mvc 配置对静态资源的访问
- Spring MVC配置静态资源,直接映射到对应的文件夹,DispatcherServlet 不处理
- spring boot.2x 启用拦截器配置 静态资源不能访问 3ff8