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

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

第一步、在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扣扣群交流!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值