SpringMVC执行原理、流程以及实现

先来看一张图:
;来源地:百度百科
首先我们要新建一个springMVC配置文件(默认的spring配置文件即可),然后配置web.xml中的拦截器,代码如下:

<servlet>
        <servlet-name>springmvc</servlet-name>
        <!--将拦截到的内容交给DispatcherServlet(中央处理器)处理-->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--将配置文件引入-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlent.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--表示拦截不带后缀的请求-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
然后我们进行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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--配置HandlerMapping(处理器映射器)-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--HandlerAdapter处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--配置后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
编写Controller类(类比原来的servlet):
//继承Controller接口并实现方法
public class Ttt implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView modelAndView = new ModelAndView();
        //传入携带的数据
        modelAndView.addObject("csdn","csdn");
        //指定转发资源名
        modelAndView.setViewName("mydemo");
        return modelAndView;
    }
}
将Controller类注册到spring容器中,注意:此处的id名称是访问时的名称
<!--把Controller类注册-->
    <bean id="/ttt" class="com.qian.control.Ttt"/>
执行看结果:

![在这里插入图片描述](https://img-blog.csdnimg.cn/a01a649a330647bc83e1483c7d0e0101.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Z2i6K-V6KKr6JmQ55qE5bCPbGFsYQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

最后我们来梳理一下执行流程:
用户发送请求至前端控制器DispatcherServlet

DispatcherServlet收到请求调用HandlerMapping处理器映射器。

处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

1、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

2、执行处理器(Controller,也叫后端控制器)。

3、Controller执行完成返回ModelAndView

4、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

5、DispatcherServlet将ModelAndView传给ViewReslover视图解析器

6、ViewReslover解析后返回具体View

7、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

8、DispatcherServlet响应用户。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面试被虐的小lala

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值