找回密码
 立即注册
查看: 464|回复: 0

[后端] springmvc的视图

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-6-24 12:27:39 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-7-3 18:34 编辑

1. 引言
Spring MVC 是一个用于创建 Web 应用程序的框架,它通过模型-视图-控制器 (MVC) 设计模式来组织代码结构。本文将详细介绍 Spring MVC 中的视图(View)部分,包括视图的概念、视图解析器、常用视图类型以及如何配置和使用视图。

2. 视图的概念
在 Spring MVC 中,视图负责呈现模型数据,通常是客户端看到的最终结果。视图可以是 HTML 页面、JSP 页面、PDF 文件、Excel 表格等。控制器将处理后的数据模型传递给视图,视图将数据展示给用户。

3. 视图解析器
视图解析器(View Resolver) 是 Spring MVC 中的一部分,它负责将逻辑视图名称解析为具体的视图实现。Spring MVC 提供了多种视图解析器,常用的有 InternalResourceViewResolver 和 UrlBasedViewResolver。

3.1 InternalResourceViewResolver
InternalResourceViewResolver 用于解析 JSP 视图。它将逻辑视图名称解析为 JSP 文件,并通过 RequestDispatcher 将请求转发给 JSP 文件进行渲染。

3.1.1 配置示例

在 Spring 配置文件(如 `spring-servlet.xml`)中配置 InternalResourceViewResolver:

  1. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  2.     <property name="prefix" value="/WEB-INF/views/" />
  3.     <property name="suffix" value=".jsp" />
  4. </bean>
复制代码


以上配置表示视图文件位于 `/WEB-INF/views/` 目录下,文件扩展名为 `.jsp`。

3.2 UrlBasedViewResolver
UrlBasedViewResolver 是一个通用的视图解析器,可以解析多种类型的视图,如 JSP、Tiles、FreeMarker 等。

3.2.1 配置示例

  1. <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  2.     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  3.     <property name="prefix" value="/WEB-INF/views/" />
  4.     <property name="suffix" value=".jsp" />
  5. </bean>
复制代码


此配置类似于 InternalResourceViewResolver,但更通用。

4. 常用视图类型
Spring MVC 支持多种视图类型,以下介绍几种常用视图。

4.1 JSP
JSP 是最常用的视图类型,通过 InternalResourceViewResolver 或 UrlBasedViewResolver 进行配置和解析。

4.1.1 使用示例

控制器返回逻辑视图名称:

  1. @RequestMapping("/hello")
  2. public String hello(Model model) {
  3.     model.addAttribute("message", "Hello, Spring MVC!");
  4.     return "hello"; // 返回逻辑视图名 "hello"
  5. }
复制代码


在 `/WEB-INF/views/` 目录下创建 `hello.jsp` 文件:

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  2. <html>
  3. <body>
  4.     <h1>${message}</h1>
  5. </body>
  6. </html>
复制代码


4.2 Thymeleaf
Thymeleaf 是一种现代的服务器端模板引擎,Spring MVC 提供了对 Thymeleaf 的良好支持。

4.2.1 配置示例

在 Spring 配置文件中配置 Thymeleaf 视图解析器:

  1. <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
  2.     <property name="templateEngine" ref="templateEngine" />
  3.     <property name="order" value="1" />
  4. </bean>

  5. <bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
  6.     <property name="templateResolver" ref="templateResolver" />
  7. </bean>

  8. <bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
  9.     <property name="prefix" value="/WEB-INF/views/" />
  10.     <property name="suffix" value=".html" />
  11.     <property name="templateMode" value="HTML5" />
  12. </bean>
复制代码


4.2.2 使用示例

控制器返回逻辑视图名称:

  1. @RequestMapping("/greeting")
  2. public String greeting(Model model) {
  3.     model.addAttribute("message", "Hello, Thymeleaf!");
  4.     return "greeting"; // 返回逻辑视图名 "greeting"
  5. }
复制代码


在 `/WEB-INF/views/` 目录下创建 `greeting.html` 文件:

  1. <!DOCTYPE html>
  2. <html xmlns:th="http://www.thymeleaf.org">
  3. <body>
  4.     <h1 th:text="${message}"></h1>
  5. </body>
  6. </html>
复制代码


5. 视图配置和使用
5.1 配置视图解析器
在 Spring 配置文件中配置视图解析器,以解析逻辑视图名称。

5.2 返回逻辑视图名称
控制器方法返回逻辑视图名称,Spring MVC 将根据视图解析器的配置解析并渲染视图。

6. 结论
Spring MVC 的视图部分通过视图解析器和多种视图类型的支持,实现了灵活而强大的视图管理。理解视图解析器的配置和使用,以及常用视图类型的特点和应用,可以帮助开发者更好地实现 Web 应用的视图层开发。希望本文能为读者提供清晰的思路和实践指导。







/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:50 , Processed in 0.063262 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表