SpringMvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">


(一)   视图解析器        
    <!-- 1.视图解析器: 负责页面的跳转-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置基本的信息  前缀名,后缀名-->
        <!--配置前缀名-->
        <property name="prefix" value="/pages/"/>
        <!--配置后缀名-->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 2.扫描控制器所在包 -->
    <context:component-scan base-package="com.itheima"/>


(二) SpringMVC注解驱动    

    <!--SpringMvc注解驱动, 起作用:启动springmvc二大组件: 处理器的映射器, 处理器的适配器-->
    <!--RequestMappingHandlerMapping、RequestMappingHandlerAdapter-->

    <mvc:annotation-driven/>


(二)   解决SpringMVC项目静态资源无法访问       
    <!--DefaultServlet的处理器,用于解决SpringMVC项目 全局的静态资源无法访问的问题-->
    <mvc:default-servlet-handler/>

(三)   请求参数类型转换器     

    <!--
             前端传递日期类型(2019-07-01)到后端,但是SpringMVC无法转换字符串为Date日期类型。
             这时我们可以通过自定义类型转换器,实现把请求参数值转换为指定的类型-->

    <!--1. 创建类型转换器-->
    <!--   StringToDateConverter自定义的类型转换器  实现Converter<String,Date>接口
                    public class StringToDateConverter implements Converter<String,Date> {
                        }
      -->

    <bean id="stringToDateConverter" class="com.itheima.utils.StringToDateConverter"/>


    <!--2. 把类型转换器交给类型转换的工厂, 一个类型转换器的工厂是会有很多的类型转换器的。-->
    <bean id="conversionFactory" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <!--以前我们set赋值是使用<value>标签,因为因为set集合存储的是String,现在我们存储的是一个个的对象,所以要求使用ref标签-->
                <ref bean="stringToDateConverter"/>
            </set>
        </property>
    </bean>
    <!--3. 把类型转换交给注解驱动去启动该工厂-->
    <!--注解驱动,目前加不加都不会报错, 起作用:启动springmvc二大组件: 处理器的映射器, 处理器的适配器-->
    <mvc:annotation-driven conversion-service="conversionFactory"/>




(四)   springmvc的文件上传解析器CommonsMultipartResolver  



    <!--配置文件上传解析器
          注意: 文件上传解析器的id值一定要: multipartResolver
       -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--单位是字节  限制10M-->
        <property name="maxUploadSize" value="10485760"/>
    </bean>



 (五)   SpringMvc自定义异常处理类 实现HandlerExceptionResolver接口 

    <!--单独配置异常的处理类-->
    <bean id="自定义的异常处理类" class="com.itheima.utils.MyExceptionHandler"/>

    <!--    或者在自定义的异常处理类上使用注解@Component   然后开启IOC包扫描
           <context:component-scan base-package="com.itheima"/>
      -->



(六) SpringMVC自定义拦截器类 实现HandlerInterceptor接口 
    <!--
            自定义拦截器类 中的方法   preHandle() 如果返回的为False,则不允许后面的其他方法执行,包括配置的path  /findAll方法
    -->
    <!--配置拦截器-->
    <mvc:interceptors>
        <!--配置单个的拦截器-->
        <mvc:interceptor>
            <!--拦截的路径
                /*  : 拦截所有,但是只能匹配一级路径
                /** :拦截所有,但是是可以匹配多级的路径。
            -->
            <mvc:mapping path="/findAll"/>
            <bean class="com.itheima.utils.Demo1Intercepter"/>
        </mvc:interceptor>


        <!--配置多个的拦截器-->
        <mvc:interceptor>
            <!--拦截的路径
                /*  : 拦截所有,但是只能匹配一级路径
                /** :拦截所有,但是是可以匹配多级的路径。
            -->
            <mvc:mapping path="/**"/>
            <bean class="com.itheima.utils.Demo2Intercepter"/>
        </mvc:interceptor>
    </mvc:interceptors>

</beans>