首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot应用程序需要模板引擎(如Thymeleaf)吗?

问Spring Boot应用程序需要模板引擎(如Thymeleaf)吗?
EN

Stack Overflow用户
提问于 2021-10-29 18:38:17
回答 2查看 110关注 0票数 2

我目前正在做一个Spring Boot项目,而且我对模板引擎还是个新手。这也将是我自己使用Spring Boot的第一个私人项目。

我想知道在使用Spring Boot开发web应用程序时,是否有必要包括模板引擎,如Thymeleaf。我使用PostegreSQL作为数据库。

我在另一篇文章中读到,如果后端框架使用JSON进行数据交换,则不需要模板引擎,因为模板引擎用于为客户端将检索到的数据呈现为HTML。我从数据库中检索JSON对象,那么我可以将模板引擎排除在我的项目之外吗?

如果需要更多详细信息,请在下面留言。

EN

回答 2

Stack Overflow用户

发布于 2021-10-29 18:57:05

不,它们不是必须的,事实上,大多数需要网页的新项目现在都在使用单页面应用程序,比如Angular,React,Vue,...通过胸腺叶或jsp的。

除此之外,Spring项目并不总是需要web页面,例如,当您刚刚创建REST API以供其他应用程序调用时,或者当您正在自动化诸如:邮件服务/打印/ ...随便你怎么说。

但是,如果您确实想要一个简单的解决方案,其中有些页面并不是那么动态或复杂,pivotal / VMware建议您使用胸腺叶(而不是jsp和其他解决方案),因为它很容易集成。

票数 4
EN

Stack Overflow用户

发布于 2021-10-29 20:02:07

我在另一篇文章中读到,如果后端框架使用

进行数据交换,则不需要模板引擎,因为模板引擎用于为客户端将检索到的数据呈现为HTML。我从数据库中检索JSON对象,那么我可以将模板引擎排除在我的项目之外吗?

这在一定程度上是正确的。是的,Thymeleaf和类似的主要目的是将数据呈现为HTML。它们可以呈现任何文本数据,包括JSON,但也有更适合这项工作的工具。另一方面,在数据库中存储数据的方式或使用的数据库都无关紧要。您不能跳过呈现(序列化)响应,因此如何存储响应并不重要。重要的是你想要返回什么作为响应。对于HTML,Thymeleaf甚至JSP是合适的,但对于JSON,您可能希望使用Jackson或Gson。

您没有提到要使用的技术,因此对于我的示例,我假设您打算使用Spring Web MVC。让我们来看看“传统”控制器:

代码语言:javascript
复制
@Controller
public class GreetingController {

    @GetMapping("/greeting")
    public ModelAndView greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return new ModelAndView("greeting", "greeting", new Greeting(name));
    }
}

当您向"/greeting“发出GET请求时,Spring将调用greeting并获取它返回的对象。在本例中,它包含模型(我们要呈现的数据)和视图(要使用的模板文件)。然后,它将尝试找到一个视图(类似greeting.html或greeting.jsp),并使用诸如Thymeleaf之类的模板引擎(或其他任何配置)来呈现它(通常是HTML)。

如果我们想返回JSON怎么办?在这种情况下,我们需要:

  1. 修改greeting,返回Greeting实例而不是RestController,而不是Controller。这将告诉Spring MVC,我们希望直接序列化返回到JSON (或类似格式)的对象,而不是使用模板来完成此操作。

以下是修改后的示例:

代码语言:javascript
复制
@RestController
public class GreetingController {

    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return new Greeting(name);
    }
}

Spring MVC仍然需要一些帮助来将Greeting实例序列化为JSON。但是如果你使用Spring Boot和web starter,你就不必担心了。它会为你包括杰克逊。

这绝不是详尽的答案。事实上,它跳过了很多细节,但我希望它仍然是有用的。如果您想使用JSON创建REST API,那么这个Building a RESTful Web Service guide是一个很好的起点。如果您遵循Spring Initializr的开始步骤,您将获得一个仅包含所需内容的项目设置(嗯,可能会有一点额外的内容,但我不会太担心它)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69773442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档