Spring MVC DispatcherServlet

1.前端控制器

在Web应用程序模式中,前端控制器 将请求委托给应用程序的其他组件 来执行实际的处理。Spring MVC中,DispatcherServlet就是前端控制器。DispatcherServelt是 Spring MVC的核心,在这里 请求第一次 接触到框架,它主要负责 把请求 路由到 其他组件中。把请求 借助HandlerMapping 路由到控制器中。把控制器处理过的请求 借助 ViewResolver路由到 视图中。

2.Spring MVC工作流程

   2.1 DispatcherSevlet 工作是 1拿到请求,2查询HandlerMapping(处理器映射)  处理器映射来决定 要把请求发给哪一个控制器,然后3把请求发送到 选中的控制器。

        PS: DispatcherServlet(前端控制器) 负责 把请求 发送的Spring MVC 控制器(Controller),但是 Controller有很多。DispatcherServlet需要借助HandlerMapping(处理器映射) 来决定 要把请求发给哪一个控制器。HandlerMapping(处理器映射) 会根据请求 所携带的URL信息来进行决策 请求的下一站在哪里。

   2.2 控制器(Controller) 负责1处理请求,2产生需要返回给用户并且在浏览器上显示的信息,这些信息被称为模型(model),控制器还负责把模型数据打包,3表示出用户渲染输出的逻辑视图名。4把请求,模型和视图名一起返回给DispatcherServlet。

   2.3 DispatcherServlet 使用视图解析器(view resolver)把逻辑视图名 匹配为一个 特定的视图(view) 实现,并交付数据模型。

         PS: DispatcherServlet 负责 把controller返回的逻辑视图名匹配到一个特定的视图实现,这个过程是借助视图解析器(view resolver) 来实现的。就像把 请求 发送到控制器 通过借助 handler mapping来实现。

   2.4 视图(view)将使用模型数据渲染输出,输出会通过相应对象 传递给客户端。

          PS:控制器处理请求产生的model不能直接返回给用户,这些信息需要以用户友好的方式进行格式化,再返回给用户浏览器。所以会先把信息 发送给视图(view),通常是JSP。

          PS:所以MVC里C-controller指的是控制器controller,M-model指的是Controller处理请求产生的信息这些信息被称为模型(view)。 V-view 指的是 把controller产生的model格式化为用户友好的方式的一种视图(view),通常是JSP。

3.Spring MVC DispatcherServlet继承关系

 
 
//Spring MVC
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.FrameworkServlet;
import org.springframework.web.servlet.HttpServletBean;

//Spring
import org.springframework.context.EnvironmentAware;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.env.EnvironmentCapable;
import org.springframework.beans.factory.Aware;

//java 
import javax.servlet.http.HttpServlet;
import javax.servlet.GenericServlet;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;

public class DispatcherServlet extends FrameworkServlet {}
public abstract class FrameworkServlet extends HttpServletBean implements ApplicationContextAware {}
public abstract class HttpServletBean extends HttpServlet implements EnvironmentCapable, EnvironmentAware {}

public interface ApplicationContextAware extends Aware {}
public interface EnvironmentCapable {}
public interface EnvironmentAware extends Aware {}
public interface Aware {}


public abstract class HttpServlet extends GenericServlet {}
public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable {}
public interface Servlet {}
public interface ServletConfig {}
public interface Serializable {}

Servlet https://www.cnblogs.com/whgk/p/6399262.html

Servlet https://www.cnblogs.com/xdp-gacl/p/3760336.html

https://blog.csdn.net/qq_38410730/article/details/79507465

https://www.cnblogs.com/chenjunjie12321/articles/6118426.html

https://www.cnblogs.com/tengyunhao/p/7658952.html

https://www.cnblogs.com/chenjunjie12321/articles/6118426.html

posted on 2019-04-22 11:16  dreamstar  阅读(62)  评论(0编辑  收藏  举报