SpringMVC--执行流程

一.SpringMVC执行过程

 

 SpringMVC中新增的DispatcherServlet是前后端的大脑,不同于普通的MVC架构,前端有了自己的控制器,它兼容了前后端的控制器,实现了前后端的共同控制

第一步:用户端发送对网页的请求,会全部被DispatcherServlet拦截下来,这些请求都会交由Spring托管,并将请求地址解析出来:http://127.0.0.1:8080/SpringMVC/hello

  • 解析出地址:http://127.0.0.1:8080
  • 解析出项目名称:/springMVC(如果tomcat没有配置启动项目名就没有)
  • 解析出实际的请求:/hello

第二步:DispatcherServlet调用HeadlerMapping查找到Headler,中央处理器会在spring容器中寻找是否有这个请求的处理程序,如果有就返回处理对象,没有就404

第三步:调用处理器执行器HeadlerExecution

第四步:返回HedlerIntercepter和Handler,这是有请求的处理情况,HedlerIntercepter负责将数据匹配为处理对象需要的,如:处理对象的参数为String类型,那么匹配时也会将其转换为String类型

第五步:DispatcherServlet拿到HandlerExecutionchain对象去找HandlerAdapter

第六步:处理器适配器会根据处理对象去调用相对应的处理程序,也就是Java中的类,一般是Controller层的类,处理的时候会根据业务需要处理静态资源和数据库数据查询

第七步:Handler返回ModelAndView,这是两个东西,Model是模型,也就是Headler处理请求后的返回数据,View即视图,这些数据需要在那个视图进行渲染

第八步:返回ModelAndView给DispatcherServlet

第九步:将View模块交给ViewResolver,视图解析器会自动拼接字符串,拼接完成以后就是一个完整的url

第十步:将拼接好的url地址返回给DisparcherServlet

第十一步:DispatcherServlet显示当前的url地址页面,并且将Model的数据渲染到此页面上

第十二步:把渲染好的页面响应给用户

 二.配置DispatcherServlet

DispatcherServlet是Spring写好的一个类,配置XML的时候只需要将其绑定在一个启动XML中就可以了,并且配置拦截为全部请求

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

DispatcherServlet绑定的核心配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/page/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean id="/hello" class="top.lostyou.controller.Test"/>
</beans>

这里只配置了视图解析器

 

posted @ 2023-11-26 15:38  回忆也交给时间  阅读(9)  评论(0编辑  收藏  举报