SpringMVC 的执行原理

SpringMVC 的执行原理

关键词: Spring MVC

转自SpringMVC 执行流程-睿站-狂神说

SpringMVC 是一个web 框架,它实现了 MVC 三层架构。

大体上来说,SpringMVC 通过 DispatchServlet 拦截用户请求的 url,
然后决定交给哪一个 controller 处理

举一个例子:

  1. 假设用户输入 url 为 http://localhost:8080/SpringMVC/hello
  • http://localhost:8080 是服务器域名
  • SpringMVC 表示部署在服务器上的web站点
  • hello表示控制器

通过分析,如上url表示为:

请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。

  1. HandlerMapping为处理器映射。
    DispatcherServlet调用 HandlerMapping,
    HandlerMapping根据请求url查找Handler。

  2. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为: hello。

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

  4. HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。

  5. Handler让具体的Controller执行。

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

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

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

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

流程图如下,转自秦疆

SpringMVC 执行流程图

Controller 部分代码

import org.springframework.web.servlet.Mode1Andview;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpservletRequest;
import javax.servlet.http.HttpServletResponse;
//注意:这里我们先导入controller接口

public class Hellocontroller implements Controller {
    public NodelAndview handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    //ModelAndView模型和视图
    ModelAndview mv = new ModelAndview();
    //调用业务层,暂时不写


    //封装对象,放在ModelAndView中
    mv.add0bject( attributeName: "msg" , attributeValue: "HelloSpringWVC!");

    // 封装要跳转的视图,放在ModelAndView中
    // 后续会依据配置,使用 name 拼接成 WEB-INF/jsp/hello.jsp,
    // 相当于告诉 SpringMVC 要将数据交给哪个 jsp
    mv.setviewName("hello");
    return mv;
    }
}
posted @ 2022-03-14 19:18  dutrmp19  阅读(52)  评论(0)    收藏  举报