Spring MVC 6.0和Thymeleaf 3.0的新特性

在本文中,我们将探讨Spring MVC 6.0 和 Thymeleaf 3.0 的最新功能以及如何利用它们来开发企业应用程序.

Spring MVC 是 Spring 框架的基础且更广泛的部分。它用于开发基于 Java 的应用程序。 Spring MVC 使用前端控制器模式——所有请求都通过处理请求路由的 DispatcherServlet。 @Controller、@RequestMapping 等注释通常用于构建控制器类并将 URL 映射到处理程序方法。 Spring MVC 可以轻松构建 RESTful Web 服务并将其与其他 Spring 项目(如 Spring Security、Spring Data JPA 等)集成。

Thymeleaf 3.0 是一个主要版本,带来了许多改进和新功能。最大的变化之一是对 HTML5 解析的支持,在 Thymeleaf 的早期版本中,将模板解析为 XML,这可能会限制 HTML5 功能,例如可选关闭标签。 Thymeleaf 3.0 完全支持开箱即用的 HTML5 解析。

Spring MVC 6.0 – 新特性

  • 反应式支持: Spring MVC 6.0 对使用 Reactor 和 RxJava 进行反应式编程提供一流的支持。控制器现在可以返回 Mono/Flux 类型以支持异步和非阻塞请求。
  • 处理程序方法返回类型:除了传统的 ModelAndView 和 ResponseEntity 之外,处理程序方法现在还支持返回 CompletableFuture、DeferredResult 和 AsyncResult。
  • 自定义处理程序方法参数:可以对方法参数进行注释,以绑定到请求的特定部分,例如路径变量、请求参数等,而不是依赖于请求映射属性。< /span>
  • 模块结构:Spring MVC 代码被分为多个逻辑模块,以便更轻松地使用特定功能。
  • 异步支持t:使用 Servlet 4.0 异步支持和非阻塞 I/O 进行异步请求处理。
  • WebFlux 集成:与 Spring WebFlux 紧密集成,用于构建响应式 Web 应用程序。

这里我们开发了一个学生管理系统,
与使用 Spring MVC 构建的简单 Web 应用程序进行交互的步骤很简单:

  • 请求应用程序的主页 URL(例如 localhost:8080)。这通常由映射到根 URL 的控制器方法来处理,该方法显示所有学生详细信息,例如学生姓名、年龄和注册课程。
  • 控制器方法将返回视图名称(例如“student”)。 Spring MVC 会将此视图名称解析为物理视图(JSP、HTML 等)并呈现它。
  • 该视图将填充由控制器添加到模型的任何模型属性。这些可以在视图模板中使用(例如 ${name})。
  • 该视图将作为对学生主页请求的 HTTP 响应返回。
  • 要提交表单或请求数据,请提供我们在请求中的学生实体类中提到的学生的表单参数,并将其 POST 到映射到控制器处理程序方法的特定 URL。
  • 处理程序方法从请求中检索参数、执行操作并返回要呈现的视图名称。
  • 要查看学生的响应,请获取相同或不同的 URL。控制器返回填充有任何更新的模型数据的视图。
  • UI 中的链接和按钮可以触发对其他控制器方法的 GET 请求以显示相关页面/数据。
  • 通常通过添加 BindingResult 参数来捕获验证错误来处理错误。自定义错误显示在视图上。
  • 使用浏览器的网络工具和调试日志来跟踪请求、参数和响应以进行调试。

Thymeleaf 3.0 特点

  • HTML5 支持:Thymeleaf 3.0 完全支持开箱即用的 HTML5 解析。它可以将模板解析为 HTML5 而不是 XML。
  • 片段缓存:现在可以缓存片段(可重用模板代码块)以提高性能。当fragment发生变化时,缓存会自动失效。
  • 增强的国际化 (i18n): 新的 i18n 方言,具有复数、特定于区域的数字/日期格式等功能。模板的国际化更加轻松。
  • 布局方言:定义可由其他模板扩展的模板布局,以进行 DRY 模板设计。
  • 链接重写:使用片段时自动重写相关链接/引用。
  • 异步支持:异步处理支持,具有延迟表达式等功能。
  • 模块化:Thymeleaf 代码被拆分为子项目,以便更轻松地使用特定功能。
  • Java 8 支持:完全支持 Java 8 功能,例如 lambda、流、日期/时间 API 等。

Thymeleaf 所需的配置

  • 在 pom.xml 中添加 Thymeleaf 依赖
  • 在 servlet 上下文文件中配置 ThymeleafTemplateResolver bean:URL。我们设置前缀、后缀和可缓存。
  • 配置TemplateEngine bean:我们设置templateResolver、附加属性等。
  • 配置 ViewResolver bean:这会将视图名称解析为视图。
  • 注释控制器方法以返回“thymeleaf 视图名称”字符串。
  • 在指定的前缀位置创建带有 .html 后缀的模板文件(html 文件)。
  • 在控制器中添加模型属性并使用 ${…} 语法在模板中访问。

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>6.1.1</version>
</dependency>


在 Spring MVC 中,HTTP 模板是常见 HTTP 请求(如 GET、POST、PUT、DELETE 等)的可重用模式。一些主要的 HTTP 请求模板是:

  • GET:用于请求资源的表示。没有正文,参数通过 URL 或标头传递。
  • POST:用于创建新资源并提交要处理的数据。
  • PUT:用于完全或部分更新现有资源。
  • DELETE:用于删除资源。

总之,Spring MVC 6.0 和 Thymeleaf 3.0 提供的新功能可通过更实用、简约的配置和更多功能的方法来增强开发人员的体验