Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 没有servlet的springmvc_Spring Mvc - Fatal编程技术网

Spring mvc 没有servlet的springmvc

Spring mvc 没有servlet的springmvc,spring-mvc,Spring Mvc,我是SpringMVC(以前使用的Rails和ASP.NETMVC)新手。我注意到我仍然必须使用servlet。据我所见,Spring要求您使用servlet——您不能将其替换为其他视图引擎(如ApacheVelocity) 可以将SpringMVC与不同的视图引擎一起使用吗?我似乎找不到任何与此相关的资料。Servlet API不是一个视图引擎,它是一个用于处理HTTP请求的API。换句话说,它是web服务器(servlet容器)用来将HTTP请求传递给应用程序并发送响应的接口 Spring

我是SpringMVC(以前使用的Rails和ASP.NETMVC)新手。我注意到我仍然必须使用servlet。据我所见,Spring要求您使用servlet——您不能将其替换为其他视图引擎(如ApacheVelocity)


可以将SpringMVC与不同的视图引擎一起使用吗?我似乎找不到任何与此相关的资料。

Servlet API不是一个视图引擎,它是一个用于处理HTTP请求的API。换句话说,它是web服务器(servlet容器)用来将HTTP请求传递给应用程序并发送响应的接口


Spring MVC可以与不同的视图引擎一起使用:JSP、Thymeleaf、Velocity等。您甚至可以使用静态HTML页面(如果您的应用程序纯粹基于AJAX)。

有些混乱

  • 如果没有Servlet,您就不能拥有SpringMVC,因为SpringMVC构建在Servlet技术之上。(但这不是问题,因为您可以使用其他视图技术。)
  • 您将视图技术与servlet混淆了。
    • 有几种可能的视图技术
    • 如果有什么问题的话,servlet是控制器,而不是视图(实际上,SpringMVC遵循a,所以servlet不是视图中的控制器) 与标准MVC模式中使用的含义相同)
  • Spring框架有一章专门介绍查看技术:

    在那里,您可以找到信息以及如何配置多个视图技术,例如:

    • XSLT、文档视图(PDF/Excel)、JasperReports和其他
    但不要局限于那个指南。这里没有列出其他视图技术(因为视图机制非常灵活和可扩展)。这里没有列出的一个很好的例子是


    我将尝试澄清Servlet与控制器的问题:

    MVC模式 “标准”MVC模式的工作原理如下图所示:

    混淆的第一个原因是试图将SpringMVC(因为名称)融入到这个MVC中。这通常会导致一个错误,因为SpringMVC与这种模式的变化关系更好,如下所述

    关于这个问题,我的意思是:如果你真的只想考虑这个MVC模式,servlet更像控制器,而不是视图

    模型2 MVC模式 确切地说,如前所述,Spring MVC并不遵循“标准”MVC,事实上它更符合a,除了现有组件(模型、视图和控制器)之外,还包括一个前端控制器组件,如图所示:

    现在,在Model2 MVC中,servlet不是控制器组件。它们是前端控制器(实际上,
    org.springframework.web.servlet.DispatcherServlet
    是前端控制器)

    在这张照片中:

    • 前端控制器是
      org.springframework.web.servlet.DispatcherServlet
    • 控制器是您的类(通常用
      @Controller
      注释)
    • 视图模板是一个JSP/VM/HTML文件,它将根据您选择的视图技术(如JSP、Tiles、Velocity、Thymeleaf…--而非Servlets之前所列)的模型呈现
    • 模型是来自域的数据(对象),从控制器传递到视图

    最常用的视图引擎是什么? 这是一个非常相对的问题。Spring参考中列出的所有这些都非常流行。除此之外,我知道百里香是另一个非常好的选择

    说一个比另一个好是不公平的,最终的决定将取决于项目的需要。尽管如此,以下是我使用过的两分钱:

    • 是最古老的(同时是好的和坏的),也是最快的,但可能非常冗长,允许在页面中使用Java代码段
    • 以性能为代价,改进了JSP页面的语法
    • 看起来非常相似,它们的速度非常快,它们的语法不同于JSP(是否更清晰可能是个人观点),并且它们有非常好的模板系统
    • 我没有使用,但我听说他们有非常好的模板和组件化
    • 押注于拥有非常可维护的HTML,这是一个非常健康的项目,具有不断增长的一致性。看

    你说得对。我几乎删除了我的问题,因为它没有意义。本页解释了servlet在此体系结构中作为控制器的功能:@Crowie/ashes999:我已更新了答案,试图解决您的评论提出的问题。如果他们不够清楚,请让我知道。看起来不错,干杯。我已经忘记了dispatcher servlet/前端控制器的关系谢谢您的输入。我将尝试一下Thymeleaf。正如最后一点:Thymeleaf很好,但是如果您从SpringMVC开始,可能使用普通JSP会让您更快、更简单,因为有大量的资源。我建议我采取的方法是:从JSP开始,更好地了解一些东西(Spring安全性、Spring验证),然后转到thymeleaf。将来,每当发布某些内容时,人们总是使用普通JSP创建一个示例,但现在总是使用Thymeleaf或其他视图技术。