spring mvc 中的 Servlet

the*_*379 4 spring servlets spring-mvc

我对 servlet 和 spring mvc 有基本的了解。但是我不知道spring mvc中是否有servlet的使用。在 spring mvc 中,我们有控制器类。我的想法是servlet在spring mvc中用作控制器。如果我不正确,请纠正我。

小智 8

是的,你是完全正确的。Spring-MVC 中使用了 Servlet。在 Spring-MVC 中,当您编写像 @Controller 这样的注解时,您间接地使用了一个名为 Dispatcher Servlet 的 Servlet。Dispatcher Servlet 在 web.xml 文件中定义,属性和类名映射到 .jsp 页面和控制器部分。


Old*_*txo 6

与何时使用 Servlet 或 @Controller相关/重复。问题不一样,但对该问题的解释您将能够理解:

如果您是一名有兴趣学习该语言的学生,那么我现在会坚持使用 servlet。可以仅使用 servlet 来编写 Web 应用程序,但实际上您可能还想查看 JSP。

JSP 是编写 servlet 的一种便捷方法,它允许您将 html 与脚本元素混合在一起(尽管建议避免在 jsp 中使用 Java 代码,而使用标签和 el 表达式)。在幕后,它将被编译为 servlet,但它避免了您必须使用大量混乱的打印语句。

至少对 servlet 和 JSP 有基本的了解非常重要。Spring MVC 是构建在 servlet 之上的众多框架之一,旨在使编写 Web 应用程序的任务变得更容易。基本上所有请求都映射到充当前端控制器的 DispatcherServlet。

然后,DispatcherServlet 将调用其注释与传入请求匹配的控制器。这比必须自己在 web.xml 中编写这些映射要简洁(尽管使用 servlet 3.0,您现在可以注释 servlet)。但您还可以获得许多其他好处,例如将表单字段映射到对象、使用 jsr303 注释验证该对象、将输入和输出映射到 xml 或 json 等。此外,它与核心 spring 紧密集成,因此您可以轻松连接您的服务供控制器调用。

值得注意的是,有大量的竞争框架构建在 servlet 之上。Spring MVC 是最流行的 MVC 之一,因此研究一下它是一个不错的选择。


小智 5

控制器不是 Servlet!控制器是不扩展的普通 Spring MVC bean HttpServlet。相反,Spring 有一个HttpServlet名为的自定义扩展DispacherServlet。查看DispacherServlet\ 的源代码,您可以看到类层次结构为:DispatcherServlet extends FrameworkServlet \xe2\x86\x92 FrameworkServlet extends HttpServletBean\xe2\x86\x92 HttpServletBean extends HttpServlet

\n

与任何其他 Servlet 一样,它DispatcherServlet是在 web.xml 中声明的。它处理所有传入的 HTTP 请求。它称为前端控制器,它在您的应用程序中提供单一入口点。它通过将请求委托给不扩展 HTTP Servlet API 的 Spring MVC 控制器的其他组件来负责请求处理。

\n

看下图\n调度程序servlet

\n

这张照片中DispacherServlet是唯一的HttpServlet。s ControllerHandlerMappingViewResolver都是 Spring MVC bean。

\n