SpringMVC的执行流程

一、DispatcherServlet宏观流程

SpringMVC的执行流程_第1张图片

1、请求被DispatherServlet拦截

2 、HandlerMapping为处理器映射,DispatcherServlet调用,HandlerMapping,HandlerMapping根据请求url查找Handler(处理器)

3、HandlerExecution表示具体Handler,其主要作用是根据url查找控制器,如上url被查找控制器

4、HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。

5、Handler让具体的Controller执行。

6、Controller让具体的执行信息返回给HandlerAdapter,如ModelAndView

7、HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet

8、DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名

9、视图解析器将解析的逻辑视图名传给DispatcherServlet。

10、DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。

11、最终视图呈现给用户

我个人的理解:

一个请求请求进来,被DispatcherServlet进行拦截,然后映射给HandlerMapping,由HandlerMapping找到Controller的id,然后返回给DispatcherServlet,然后由DispatcherServlet交给了HandlerAdapter,找到具体的controller即可,再调用具体的业务,然后返回给DispatcherServlet,将数据封装到VidewResolver,然后返回给前端。

SpringMvc将代码web代码运行过程封装成一个个的对象

SpringMVC的执行流程_第2张图片

二、SpringMVC的两种使用方式:配置文件,注解

1)配置文件方式

(1)配置文件中的web.xml的配置



    
    
        SpringMVC
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:springmvc-servlet.xml
        
        
        1
    

    
    
        SpringMVC
        /
    

在web.xml中进行配置DispatcherServlet,首先当请求请求过来的时候,会被拦截器进行拦截,然后调用DispatcherServlet,由DispatcherServlet然后调用Springmvc-servlet.xml中的映射器

(2)springmvc-servlet.xml





    

    

    
    
        
        
        
        
    


    

由映射器进行映射,url和Controller,然后再通过适配器调取handler

(3)Controller

package com.kuang.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 {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

        ModelAndView mv = new ModelAndView();
        //业务代码
        String result ="HelloSpringMVC";
        mv.addObject("msg",request);
        //视图跳转(页面的名字)
        mv.setViewName("test");
        return mv;
    }
}

2)注解的方式

(1)web.xml



    
    
        SpringMVC
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:springmvc-servlet.xml
        
        
        1
    

    
    
        SpringMVC
        /
    

(2) springmvc-servlet




    
    
    
    
    
    

    
    
        
        
        
        
    

(3) controller


@Controller
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping("/h1")
    public String hello(Model model){
        //封装数据
        model.addAttribute("msg","Hello,SpringMVCAnnotation");
        return "hello"; //会被视图解析器处理
    }
}

 

你可能感兴趣的:(【SpringMVC】,springmvc)