SpringMVC容器配置相关信息

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--spring配置-->
    <!--spring配置上下文链接-->
    <context-param>
        <!--contextConfigLocation:表示用于加载Bean的配置文件-->
        <param-name>contextConfigLocation</param-name>
        <!--制定spring配置文件的位置-->
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!--监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--
    Spring的前端/核心/中央控制器,所有的请求都会经过此控制器,然后通过此控制器分发到各个分控制器,
    前段控制器本质上还是一个Servlet,因为SpringMVC底层就是使用servlet编写的
    -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--创建前段控制器的时候读取springMVC配置文件启动IOC容器-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--是不是要在容器启动的时候直接创建,数字越小优先级越高,小于零不直接创建-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--配置拦截路径url,所有以.do结尾的请求都会被前段控制器拦截处理-->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <!--
    Day1026:SpringMVC入门程序整合
    创建Spring容器以及SpringMVC容器并分别配置SpringMVC前端控制器(DispatcherServlet)以及视图解析器(ContextLoaderListener),
    以此创建相应的SpringMVC模式
    知识点:
    1.在Web容器(例如Tomcat)中,需要创建相应两个Spring容器以及SpringMVC容器来分别配置前端控制器以及视图解析器.
    2.表现层技术一般都是由视图解析器(ContextLoaderListener)初始化的上下文加载的,是前端控制器(DispatcherServlet)的父类,
    除控制器之外的其他beans都是由ContextLoaderListener来初始化的.
    3.DIspatcherServlet初始化的上下文加载的bean是只对Spring Web MVC有效的bean,如Controller、HandlerMapping、HandlerAdapter等等,
    该初始化上下文应该只加载Web相关组件
    4.用户发送的请求到达服务端后,会寻找前端控制器DIspatcherServlet去处理,只在SpringMVC中找,所以Controller必须在SpringMVC容器中扫描
    5.SpringMVC容器中是可以扫描所有Bean的,但一般是及开发不会这么做,一是为了方便配置文件的管理,
    二是未来在Spring+SpringMVC+Mybatis组合中,要写的配置内容很多,一般都会根据功能分开编写
    -->
    <!--Day1026:url-pattern解析&静态资源的处理
    url-pattern这个节点在配置是一般有两种写法,一是*.do,在没有特殊要求的情况下,前端控制器的常使用后缀匹配方式
    二是/,但是DIspatcherServlet会将静态内容-例如.css、.js、图片等资源的获取请求也当做是一个普通的Controller请求,
    前端控制器调用处理器映射器为其查找相应的处理器,但基本是找不到这样的Controller,报错404
    知识点:
    1.当url-pattern的值配置为/后,静态资源可以通过以下两种方法解决
    (1)在springmvc的配置文件中添加<mvc:default-servlet-handler/>
    声明了<mvc:default-servlet-handler/>后,SpringMVC框架会在容器中创建DefaultServletHttpRequestHandler处理器对象.
    该对象会对所有进入DispatcherServlet的URL进行检查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理.
    一般的服务器都有默认的Servlet.例如Tomcat服务器中有专门的处理静态资源访问的DefaultServlet.
    (2)使用<mvc:resources location="/images/" mapping="images/** "/>
    在Spring3.0版本之后,Spring定义了专门用于处理静态访问请求的处理器.
    ResourceHttpRequestHandler,并且添加了<mvc:resources/>标签,专门用于解决静态资源无法访问的问题
    -->
</web-app>

applicationContext.xml(spring容器)

<?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"
       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
        ">

    <!--spring的配置文件:除了控制器之外的bean对象都在这里扫描-->

    <context:component-scan base-package="com.kkb.dao,com.kkb.service"/>

</beans>

springmvc.xml(springMVC容器)

<?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
        ">
    <!--springMVC的配置文件:控制器的bean对象都在这里扫描-->
    <context:component-scan base-package="com.kkb.controller"/>
    <!--可以对表示分发用户请求-->
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀和后缀-->
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <mvc:annotation-driven/>
    <!--
    annotation-driven是一种简写形式,也可以手动配置代替这种简写形式,简写形式可以让初学者快速应用默认配置方案
    该注解会自动注册DefaultAnnotationHandlerMapping(扫描包中具有@Controller的类)与
    AnnotationMethodHandlerAdapter(扫描类中具有@RequestMapping的方法)两个bean,是springMVC为@Controller分发用于请求所必须的,
    解决了@Controller注解使用的前提配置.
    同事它还提供了:数据绑定支持、@NumberFormatAnnotation支持、@DateTimeFormat支持、@valid支持,
    读写XML的支持(JAXB,读写JSON的支持-Jackson)、我们处理相应Ajax请求时,就使用到了对JSON的支持
    (配置之后,再加入Jackson的core和mapper包之后,不写配置文件也能自动转换成json)
    -->

</beans>

猜你喜欢

转载自blog.csdn.net/qq152521766/article/details/120985038