zoukankan      html  css  js  c++  java
  • springmvc框架中的核心对象DispatcherServlet

    SpringMVC是Spring中的模块,它实现了mvc设计模式,
    首先用户发起请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handle,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handle进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染,并把数据装入到request域,返回给用户。

    DispatcherServlet作为SpringMVC的前端控制器,负责接收用户的请求,并根据用户的请求返回相应的视图给用户。实现业务在service层

    ===============================================================

    DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。

    DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:

    1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;

    2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);

    3、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);

    4、通过ViewResolver解析逻辑视图名到具体视图实现;

    5、本地化解析;

    6、渲染具体的视图等;

    7、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。
     
    <?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_3_1.xsd"
             version="3.1">
        <!--注册springmvc框架的核心对象DispatcherServlet(中央调度器)-->
    
        <!--
           在服务器启动的时候,会找/WEB-INF/myweb-servlet.xml ,/WEB-INF/springmvc-servlet.xml
           找的文件命名是: 目录是WEB-INF, 文件名称是: <servlet-name>-servlet.xml
    
           为什么要找这个文件?
             在DispatcherServlet这个Servlet的init()方法中,会创建springmvc的容器对象WebApplicationContext,
             在创建容器对象时,会加载读取springmvc需要的配置文件,默认查找位置就是/WEB-INF/<servlet-name>-servlet.xml
           springmvc需要的配置文件,可以单独指定的,需要配置参数contextConfigLocation.
    
        -->
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <!--前端控制器(front controller)-->
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
            <!--指定springmvc配置文件-->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc.xml</param-value>
            </init-param>
            <!--在服务器启动的时候,创建Servlet对象-->
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <!--
               <url-pattern> : 表示把请求交给指定的Servlet对象。只有把请求交给DispatcherServlet,
               这样的请求才能使用springmvc框架处理。 使用DispatcherServlet接收用户的请求。
               在框架中url-pattern:
               1.扩展名: *.xxxx , xxxx 就是自定义的扩展名。 例如 *.do , *.action,*.mvc等等,不能使用*.jsp
               2.使用斜杠"/"
    
            -->
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    </web-app>

    以上是一个springmvc示例的xml配置文件。需要在xml文件中注册DispatcherServlet对象

     
     
     
  • 相关阅读:
    L2-004. 这是二叉搜索树吗?*
    L2-001. 紧急救援(最短路的变形)*
    L2-002. 链表去重(数组模拟)
    L1-028. 判断素数
    Linux相关
    2016ICPC-大连 A Simple Math Problem (数学)
    2016ICPC-大连 Convex (几何)
    2016ICPC-大连 To begin or not to begin (简单思维)
    TC704div2 C ModEquationEasy 矩阵快速幂+dp
    poj 3150 Cellular Automaton 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/Tpf386/p/10871019.html
Copyright © 2011-2022 走看看