什么是春季调度程序 Servlet?

在这个图像中(我是从这里得到的),HTTP请求向调度程序Servlet发送了一些东西。

enter image description here

我的问题是 Dispatcher Servlet 是做什么的?

它是否类似于从网页上获取信息并将其抛出到控制器?


答案 1

DispatcherServlet 的工作是获取传入的 URI,并找到处理程序(通常是 Controller 类上的方法)和视图(通常是 JSP)的正确组合,这些处理程序组合在一起形成应该在该位置找到的页面或资源。

我可能有

  • 文件/WEB-INF/jsp/pages/Home.jsp
  • 和类上的方法

    @RequestMapping(value="/pages/Home.html")
    private ModelMap buildHome() {
        return somestuff;
    }
    

Dispatcher servlet 是“知道”在浏览器请求页面时调用该方法,并将其结果与匹配的 JSP 文件组合以生成 html 文档的位。

它如何实现这一点因配置和Spring版本而异。

也没有理由最终结果必须是网页。它可以做同样的事情来定位RMI端点,处理SOAP请求,任何可以进入servlet的东西。


答案 2

在Spring MVC中,所有传入的请求都通过单个servlet。此 servlet - - 是前端控制器。前端控制器是 Web 应用程序开发中的典型设计模式。在这种情况下,单个 servlet 接收所有请求,并将它们传输到应用程序的所有其他组件。DispatcherServlet

的任务是向特定的Spring MVC控制器发送请求。DispatcherServlet

通常我们有很多控制器,并引用以下映射器之一来确定目标控制器:DispatcherServlet

如果未执行任何配置,则默认使用和。DispatcherServletBeanNameUrlHandlerMappingDefaultAnnotationHandlerMapping

识别目标控制器后,向其发送请求。控制器根据请求执行一些工作(或将其委托给其他对象),并返回带有模型和视图名称的 。DispatcherServletDispatcherServlet

视图的名称只是一个逻辑名称。然后,此逻辑名称用于搜索实际的视图(以避免与控制器和特定视图耦合)。然后引用视图解析器,并将视图的逻辑名称映射到视图的特定实现。DispatcherServlet

的一些可能的实现是:ViewResolver

当 确定将显示结果的视图时,它将呈现为响应。DispatcherServlet

最后,将对象返回给客户端。DispatcherServletResponse


推荐