|
本帖最后由 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:
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/views/" />
- <property name="suffix" value=".jsp" />
- </bean>
复制代码
以上配置表示视图文件位于 `/WEB-INF/views/` 目录下,文件扩展名为 `.jsp`。
3.2 UrlBasedViewResolver
UrlBasedViewResolver 是一个通用的视图解析器,可以解析多种类型的视图,如 JSP、Tiles、FreeMarker 等。
3.2.1 配置示例
- <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
- <property name="prefix" value="/WEB-INF/views/" />
- <property name="suffix" value=".jsp" />
- </bean>
复制代码
此配置类似于 InternalResourceViewResolver,但更通用。
4. 常用视图类型
Spring MVC 支持多种视图类型,以下介绍几种常用视图。
4.1 JSP
JSP 是最常用的视图类型,通过 InternalResourceViewResolver 或 UrlBasedViewResolver 进行配置和解析。
4.1.1 使用示例
控制器返回逻辑视图名称:
- @RequestMapping("/hello")
- public String hello(Model model) {
- model.addAttribute("message", "Hello, Spring MVC!");
- return "hello"; // 返回逻辑视图名 "hello"
- }
复制代码
在 `/WEB-INF/views/` 目录下创建 `hello.jsp` 文件:
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- <html>
- <body>
- <h1>${message}</h1>
- </body>
- </html>
复制代码
4.2 Thymeleaf
Thymeleaf 是一种现代的服务器端模板引擎,Spring MVC 提供了对 Thymeleaf 的良好支持。
4.2.1 配置示例
在 Spring 配置文件中配置 Thymeleaf 视图解析器:
- <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
- <property name="templateEngine" ref="templateEngine" />
- <property name="order" value="1" />
- </bean>
- <bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
- <property name="templateResolver" ref="templateResolver" />
- </bean>
- <bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
- <property name="prefix" value="/WEB-INF/views/" />
- <property name="suffix" value=".html" />
- <property name="templateMode" value="HTML5" />
- </bean>
复制代码
4.2.2 使用示例
控制器返回逻辑视图名称:
- @RequestMapping("/greeting")
- public String greeting(Model model) {
- model.addAttribute("message", "Hello, Thymeleaf!");
- return "greeting"; // 返回逻辑视图名 "greeting"
- }
复制代码
在 `/WEB-INF/views/` 目录下创建 `greeting.html` 文件:
- <!DOCTYPE html>
- <html xmlns:th="http://www.thymeleaf.org">
- <body>
- <h1 th:text="${message}"></h1>
- </body>
- </html>
复制代码
5. 视图配置和使用
5.1 配置视图解析器
在 Spring 配置文件中配置视图解析器,以解析逻辑视图名称。
5.2 返回逻辑视图名称
控制器方法返回逻辑视图名称,Spring MVC 将根据视图解析器的配置解析并渲染视图。
6. 结论
Spring MVC 的视图部分通过视图解析器和多种视图类型的支持,实现了灵活而强大的视图管理。理解视图解析器的配置和使用,以及常用视图类型的特点和应用,可以帮助开发者更好地实现 Web 应用的视图层开发。希望本文能为读者提供清晰的思路和实践指导。
/ 荔枝学姐de课后专栏 /
Hi!这里是荔枝学姐~
欢迎来到我的课后专栏
自然语言学渣 NLP摆烂姐
热衷于技术写作 IT边角料
AIGC & Coding & linux ...
~互撩~ TG: @Shaw_0xyz
|
|