SpringBoot之视图渲染技术

这篇具有很好参考价值的文章主要介绍了SpringBoot之视图渲染技术。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在Spring Boot中,视图渲染技术用于将动态数据渲染到用户界面,生成最终的HTML、XML、JSON等文档,以便将其返回给客户端浏览器

SpringBoot之视图渲染技术,spring boot,java,后端

一.关于Freemarker

1.介绍

Freemarker是一个Java模板引擎,用于生成基于模板的动态内容。它是一种用于生成文本输出的模板引擎,常用于Web应用程序开发中的视图层。

Freemarker的主要功能是将数据模型与模板文件结合起来生成输出文本。通常情况下,开发人员将预定义的模板文件与应用程序中的数据模型结合使用。模板文件中包含的特殊标记和语法用于表示动态内容和处理逻辑。当模板引擎处理模板文件时,它会根据模板中的标记和语法与数据模型进行交互,并生成最终的文本输出。

SpringBoot之视图渲染技术,spring boot,java,后端

Freemarker提供了丰富的功能,包括条件指令、循环指令、模板引用、宏、变量定义等。它采用基于表达式的语法,允许开发人员在模板中使用变量、运算符和函数。此外,Freemarker还支持国际化和本地化,以及对日期、数字和字符串的格式化。

在Web应用程序开发中,使用Freemarker可以将动态生成的内容与标准的HTML或其他文本格式结合,从而实现数据的动态展示和页面的个性化定制。它可以与各种Java框架集成,如Spring MVC、Struts、Play Framework等

2.优点

1.很好地分离表现层和业务逻辑

JSP功能很强大,它可以在前台编写业务逻辑代码,但这也带来了一个很大的弊端——页面内容杂乱,可读性差,这将会大大增加后期的维护难度。而FreeMarker职责明确,功能专注,仅仅负责页面的展示,从而去掉了繁琐的逻辑代码。FreeMarker的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。

2.提高开发效率

众所周知,JSP在第一次执行的时候需要转换成Servlet类,之后的每次修改都要编译和转换。这样就造成了每次修改都需要等待编译的时间,效率低下。而FreeMarker模板技术并不存在编译和转换的问题,所以就不会存在上述问题。相比而言,使用FreeMarker可以提高一定的开发效率。

3.明确分工

JSP页面前后端的代码写到了一起,耦合度很高,前端开发需要熟悉后台环境,需要去调试,而后台开发人员需要去做不熟悉的前端界面设计。对两者而言,交替性的工作需要花费一定的学习成本,效率低下。而使用FreeMarker后,前后端完全分离,大家各干各的,互不影响。

4.独立性与可移植性

JSP是基于Java Servlet规范的一种技术,与Java Servlet容器紧密耦合,限制了其在不同容器中的可移植性。而Freemarker是一个独立的模板引擎,可以与各种Java框架无缝集成,而不依赖于特定的容器,提高了项目的灵活性和可移植性。

二.SpringBoot整合Freemarker

1.配置pom文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2.配置application.yml或者application.properties文件

spring:
  freemarker:
    # 设置模板后缀名
    suffix: .ftl
    # 设置文档类型
    content-type: text/html
    # 设置页面编码格式
    charset: UTF-8
    # 设置页面缓存
    cache: false
    # 设置ftl文件路径
    template-loader-path: classpath:/templates
  # 设置静态文件路径,js,css等
    mvc:
        static-path-pattern: /static/** 

注意:如果是yml配置文件,mvc一定要再freemarker下

3.创建Freemarker模板文件

 在setting--Editor--File And Code Templates配置模板文件

SpringBoot之视图渲染技术,spring boot,java,后端

SpringBoot之视图渲染技术,spring boot,java,后端 然后将下方模板内容填到空白处,apply确认即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Freemarker</title>
</head>
<body>
<h1>Hello FreeMarker!!!</h1>
</body>
</html>

4.创建控制层,配置跳转路径

@Controller
public class IndexController {
    @RequestMapping("/")
    public String toIndex(){
        return "index";
    }
}

注意:在配置当前Controller类时需要配置@Controller注解而不是@RestController

@Controller是控制页面跳转,而@RestController则是返回值

三.Freemarker不同数据类型处理方式

1.字符串

在文本中确定字符串值的方法是看双引号,比如: "some text",或单引号,比如: 'some text'。这两种形式是等同的。 如果文本自身包含用于字符引用的引号 ( "')或反斜杠时, 应该在它们的前面再加一个反斜杠;这就是转义。 转义允许直接在文本中输入任何字符, 也包括换行

方法 含义
?substring(start,end) 截取字符串(左闭右开)
?uncap_first 首字母小写输出
?cap_first 首字母大写输出
?lower_case 字母转小写输出
?upper_case 字母转大写输出
?length 获取字符串长度
?starts_with("xx")?string 是否以指定字符开头(boolean类型)
?ends_with("xx")?string 是否以指定字符结尾(boolean类型)
?index_of("xx") 获取指定字符的索引
?trim 去除字符串前后空格
?replace("xx","xx") 替换指定字符串

字符串空值情况处理:

FreeMarker 的变量必须赋值,否则就会抛出异常。而对于 FreeMarker 来说,null 值和不存在的变量是完全一样的,因为 FreeMarker 无法理解 null 值。

2.布尔值

当我们要向前端展示结果输出的布尔值时,我们将布尔类型转换为字符串类型才能展示,否则报错

${flag?string}
${flag?string("yes","no")}<br>

3.数值

输入不带引号的数字就可以直接指定一个数字, 必须使用点作为小数的分隔符而不能是其他的分组分隔符。

${0.45}<br>
${18}<br>
<#-- 将数值转换成字符串输出 -->
${1000?c} <br>
<#-- 将数值转换成货币类型的字符串输出 -->
${1000?string.currency} <br>
<#-- 将数值转换成百分比类型的字符串输出 -->
${0.45?string.percent} <br>
<#-- 将浮点型数值保留指定小数位输出 (##表示保留两位小数) -->
${0.45723123?string["0.##"]} <br>

4.日期

日期变量可以存储和日期/时间相关的数据。

注意:在freemarker中日期类型不能直接输出;如果输出要先转成日期型或字符串

日期格式输出:

输出方式 说明
?date 年月日
?time 时分秒
?datetime 年月日时分秒
?string("自定义格式") 指定格式

四.Freemarker常用标签

 1.assign

在Freemarker中,<#assign> 指令用于给一个变量分配值。这可以用于在模板中创建和设置变量,以便稍后在模板中引用这些变量

<#assign variableName = value>
 

其中,variableName是您要创建的变量的名称,value是要分配给该变量的值。可以使用assign标签将字符串、数值、布尔值、集合等分配给变量。

在实际Freemarker项目开发中,assign标签一般用于定义后台传过来的公共路径

2.include

Freemarker中的include是一种用于在模板中引用其他模板的指令。通过include,可以将一个模板中的内容嵌入到另一个模板中,实现代码的复用和模块化

<#include "template.ftl">

在实际开发中,如果遇到需要嵌套的页面则需要使用到include标签文章来源地址https://www.toymoban.com/news/detail-772564.html

到了这里,关于SpringBoot之视图渲染技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序的授权登录-Java 后端 (Spring boot)

    微信开发文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 一个可以测试的微信小程序 此微信小程序的APPID和APPscret(至开发者后台获取) 从时序图我们可以了解到流程大致分为两步: 小程序端获取code后传给Java后台 Java后台获取code后向微信后台接口

    2024年02月09日
    浏览(51)
  • “从零开始学习Spring Boot:快速搭建Java后端开发环境“

    标题:从零开始学习Spring Boot:快速搭建Java后端开发环境 摘要:本文将介绍如何从零开始学习Spring Boot,并详细讲解如何快速搭建Java后端开发环境。通过本文的指导,您将能够快速搭建一个基于Spring Boot的Java后端开发环境并开始编写代码。 正文: 一、准备工作 在开始之前,

    2024年02月15日
    浏览(55)
  • 【SpringBoot】FreeMarker视图渲染

    目录 一、FreeMarker 简介 1.1 什么是FreeMarker? 1.2 Freemarker模板组成部分 1.3 为什么要使用FreeMarker 二、Springboot集成FreeMarker 2.1 配置 2.2 数据类型 2.2.1 字符串 2.2.2 数值 2.2.3 布尔值 2.2.4 日期 2.3 常见指令   2.3.2 assign 2.3.3 include ... 三、常见指令实现增删改查(综合案例)⭐ 3.1 后端

    2024年02月04日
    浏览(35)
  • 【SpringBoot系列】Spring Boot 3核心技术与最佳实践

    强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工智能 引言 Spring Boot 3 是对 Spring Boot 框架的一个重要更新版本,它延续了 Spring Boot 简化 Spring 应用程序开发的宗旨,进一步提升了开发者体验和应用程

    2024年03月09日
    浏览(65)
  • 【SpringBoot系列】Spring Boot Bean Factory的生命周期 Spring Boot学习大纲,可以留言自己想了解的技术点

    继续完成既定的任务,走起 可以概括为以下步骤: 资源加载:Spring Boot 应用程序启动时,会扫描指定的路径,加载配置文件和类文件等资源。 配置加载:Spring Boot 会根据配置文件(比如 application.properties)中的配置,创建一个 Environment 对象,用于保存应用程序的配置信息。

    2024年02月05日
    浏览(58)
  • 2023 最新版IntelliJ IDEA 2023.1创建Java Web前(vue3)后端(spring-boot3)分离 项目详细步骤(图文详解)

    2023 最新版IntelliJ IDEA 2023.1创建Java Web 项目详细步骤(图文详解) 本篇使用当前Java Web开发主流的spring-boot3框架来创建一个Java前后端分离的项目,前端使用的也是目前前端主流的vue3进行一个简单的项目搭建,让你距离Java全栈开发更近一步 🏴‍☠️。 使用版本: “17.0.1”

    2024年02月12日
    浏览(85)
  • Spring Boot 整合 Shiro(后端)

    1 Shiro 什么是 Shiro 官网: http://shiro.apache.org/ 是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、 授权、会话管理、加密等操作。 Shiro 就是用来解决安全管理的系统化框架。 2 Shiro 核心组件 用

    2024年02月09日
    浏览(49)
  • UWB高精度人员定位系统源码,微服务+java+ spring boot+ vue+ mysql技术开发

    工业物联网感知预警体系,大中小企业工业数字化转型需求的工业互联网平台 工厂人员定位系统是指能够对工厂中的人员、车辆、设备等进行定位,实现对人员和车辆的实时监控与调度的系统,是智慧工厂建设中必不可少的一环。由于工厂的工作环境比较复杂,如果管理不当

    2024年02月11日
    浏览(55)
  • Android前端+Spring Boot后端 登录功能实现

    创建项目后,自己添加包,框架如下   userController里的一些内容,只供参考,代码不全,无法实现 数据库是直接在社区版IDEA里连接Mysql,在控制台端创建的数据库和user表,用于数据交互。 Activity包里是Activity Java类,主要响应layout包里activity_login.xml等页面布局内的按钮响应 a

    2024年02月12日
    浏览(65)
  • [SpringBoot3]视图技术Thymeleaf

    Thymeleaf是一个表现层的模板引擎,一般被使用在Web环境中,它可以处理HTML、XML、JS等文档,简单来说,它可以将JSP作为Java Web应用的表现层,有能力展示与处理数据。 这样,同一个模板文件,既可以使用浏览器直接打开,也可以放到服务器中用来显示数据,并且样式之间基本

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包