2021-02-18

Springmvc执行流程

1、启动Tomcat

2、加载项目中的web.xml

在这里插入图片描述

web.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	<!--配置核心控制器-->
	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!--springmvc配置文件加载路径
			1)默认情况下,读取WEB-INF下面的文件
			2)可以改为加载类路径下(resources目录),加上classpath
		-->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springMVC.xml</param-value>
		</init-param>
		<!--DispatcherServlet对象创建时间问题
			1)默认情况下,第一次访问该Servlet的创建对象,意味着再这个时间才去加载springMVC.xml
			2)可以改变为再项目启动的时候就创建该Servlet,提高用户访问体验
			数值越大,对象创建优先级越低
		-->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcherServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>

3、初始化web.xml里面配置好的DispatcherServlet

4、加载DispatcherServlet里面的SpringMVC.xml配置文件

第三步和第四步图解

在这里插入图片描述
在这里插入图片描述

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">
    <!--扫描Controller的包-->
    <context:component-scan base-package="com.springMVC.controller"/>
    <!--2配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--2.1页面前缀-->
        <property name="prefix" value="/pages/"/>
        <!--2.2页面后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
    <!--3.开启mvc注解驱动-->
    <mvc:annotation-driven/>
</beans>

5、扫描springMVC.xml里面的包扫描路径

第五步图解

在这里插入图片描述

6、扫描(第五步配置路径下加了Controller注解的所有类)

controller代码

在这里插入图片描述

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
    @RequestMapping("/hello.do")
    public String hello(){
        System.out.println("进入控制器方法");
        return "success";
    }
}

前端代码

在这里插入图片描述

7、创建HelloController等所有注解了Controller的类,放入IOC容器

8、扫描类的所有方法,获取@RequestMapping的路径,把所有路径和对应的方法名都存放再集合中,然后把这个集合存放在缓存中

9、用户发出请求到Tomcat

10、这时因为第二步的时候Tomcat已经加载了web.xml,实例化了里面的DispatcherServlet,所以Tomcat知道DispathcerServlet需要拦截什么,如现在代码中拦截的是.do,如果符合Tomcat就会把这个请求交给DispatcherServlet,不符合则返回404

11、在控制器的所有方法路径集合中匹配合适的路径,因为springMVC.xml只需要加载一次所以现在不需要重新加载就可以通过集合中的路径匹配请求的路径这样就可以找到需要执行的方法,如果没有找到就会报404

12、执行控制器的方法

13、返回页面

14、通过视图解析器拼接页面名称的前缀和后缀

第十四步图解(springMVC.XML里面的配置)

在这里插入图片描述

15、拼接好页面地址之后就转发页面

第十五步图解

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值