SpringMVC常见问题汇总(1)——404和乱码问题

来源:互联网 发布:如何看淘宝价格走势 编辑:程序博客网 时间:2024/06/11 00:13

第一次发博客,工具和排版不咋滴,还望见谅!!

第一步、在web.xml里配置总控制器DispatcherServlet,如图所示:


请求拦截问题,相信有很多同学遇到过这样的问题,访问不到资源(各种静态和jsp等)404,这得从这个总控制器url-pattern配置讲起,大致我分为三种:

1)固定格式或路径:比如*.do , /user/*.action等等,这种配置不会出现上述问题,不过不符合rest规范

2)/*:这种表示会拦截所有的静态资源以及所有的动态资源,当然包括jsp在内,所以访问jsp或者controller内部转发jsp都会404

3)/:这种表示会拦截所有的静态资源以及controller动态资源,也就是说如果想访问到jsp,可以用这种


综上可以用第三种解决jsp问题,但是静态资源问题依然存在,关于静态资源被拦截有以下三种方案:

1)在web.xml配置如下:

<!-- 静态资源 -->    <servlet-mapping>        <servlet-name>default</servlet-name>        <url-pattern>*.jpg</url-pattern>    </servlet-mapping>    <servlet-mapping>        <servlet-name>default</servlet-name>        <url-pattern>*.gif</url-pattern>    </servlet-mapping>
这种方式效率最高,不过配置代码量多一点,注意这个必须放在总控制器DispatcherServlet之前,表示在请求进入控制器之前拦截把静态资源交由tomcat处理
2)在springMvc的配置文件中添加

      <mvc:resources location="/" mapping="/**/*.html"/>      <mvc:resources location="/" mapping="/**/*.js"/>      <mvc:resources location="/" mapping="/**/*.css"/>      <mvc:resources location="/" mapping="/**/*.png"/>      <mvc:resources location="/" mapping="/**/*.gif"/>

3)开放tomcat的defaultServlet,只需要添加一行配置,是不是很方便

      <mvc:default-servlet-handler/>

第二种和第三种都是放到springMVC里配置的,如果是整合到spring里,那就是在spring里配置的,具体应该使用哪一种方案,先看下面的图

这个是整个请求流程,如果采用第一种方案,那么访问静态资源不会进入总控制器,直接交由tomcat处理,当然也不会进入后面的流程,如果用第二种第三种方案其实实现进入到springMVC内部处理过滤掉,不被总控制器拦截,但是对于静态资源的映射处理器编码不是utf-8,不知道为什么,同一作者,编码不同很费解,所以此时虽然能访问,但是可能会有乱码,而且这种情况依然会经过您自定义的拦截器,所以还需要在您自定义的拦截器里进行过滤

综上所述采用第一种:效率高、直接交给tomcat处理,不会经过您自定义的拦截器,也不会出现乱码问题

如还有问题,请加524178728扣扣群交流!!!

1 0