springMVC执行流程

1、第一个hello程序

  • 导入依赖
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.8</version>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
</dependency>
  • 在web.xml中配置DispatcherServlet
<?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">


    <!--注册DispatcherServlet-->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <!--DispatcherServlet的配置-->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMvc-config.xml</param-value>
        </init-param>
        <!--跟随服务器启动-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <!--
            / 不会匹配有后缀的视图 如.jsp
            /* 会匹配有后后缀的视图

            放在WEB-INF下面的视图不可见
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
  • 创建HelloController类实现Controller接口
package cn.butcher.controller;


import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        // 模型与视图
        ModelAndView mv = new ModelAndView();
        
        // 将数据放入模型视图中
        mv.addObject("msg","hello SpringMVC!");

        // 设置要跳转得视图
        mv.setViewName("hello");

        return mv;
    }
}

  • 在resources下创建springMvc-config.xml作为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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--url映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--controller适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--handler-->
    <bean id="/hello" class="cn.butcher.controller.HelloController"/>


</beans>

启动tomcat,访问 hello

在这里插入图片描述

2、执行流程

在这里插入图片描述
注意只有虚线的部分需要我们去做,实线部分都是spring帮我们做好了!

  1. 所有请求进入DispatcherServlet
  2. HandlerMapping为处理器映射,根据请求的url,查找Handler
  3. HandlerExecution表示具体的Handler 也就是 url去掉前缀后缀,如例子中的hello
  4. 将信息传回给DispatcherServlet
  5. HandlerAdapter处理器适配器,用来适配对应的controller
  6. 执行controller
  7. controller去调用业务层获得数据
  8. 业务层返回数据
  9. controller返回数据
  10. 适配器返回视图或模型返回给DispatcherServlet
  11. DispatcherServlet调用视图解析器解析
  12. 解析的逻辑视图名传回
  13. DispatcherServlet根据解析结果调用具体视图
  14. 呈现给用户
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值