以简单的例子从头开始建spring boot web多模块项目(五)-thymeleaf引擎

继续向里面加,这次是引入thymeleaf渲染引擎。
使用这个引擎的很多,主要是以下几个优点:

  1. Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。
  2. Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显示,也可以作为静态原型工作,从而可以在开发团队中加强协作。
  3. Thymeleaf拥有适用于Spring Framework的模块,与您喜欢的工具的大量集成以及插入您自己的功能的能力。
    步骤:
    1、pom.xml中引入包:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

同时确保spring-boot-starter-web这个包已经引入。

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

2、其实默认thymeleaf配置情况下已经可以用了,不过它默认启用了缓存,更适合生产环境,不太适合开发环境,需要关掉。
application.properties文件中,加入配置:

#thymeleaf 缓存设置
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.encoding=utf-8
spring.thymeleaf.suffix=.html

主要注意的是上面都是默认配置,只有cache=false是修改的。
prefix=classpath:/templates/两边的/都不要漏掉。

3、创建/templates/目录,在resources下。
创建模板文件。
web_1.html 这个包含了一个最简单的text的变量绑定

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8">
<!--  <meta http-equiv="content-type" content="text/html;chatset=UTF-8">--><title>Title</title>
</head>
<body>
<p th:text="${hello}"></p>
</body>
</html>

web_2.html 这个包含了一个List类型变量的绑定,主要是演示遍历循环

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8">
<!--  <meta http-equiv="content-type" content="text/html;chatset=UTF-8">--><title>Title</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0"><tr><td>ID</td><td>Fid</td><td>Fname</td></tr><tr th:each="ware:${warehouses}"><td th:text="${ware.Id}"></td><td th:text="${ware.Fid}"></td><td th:text="${ware.Fname}"></td></tr>
</table>
</body>
</html>

3、编写控制器文件 Demo2Controller.java

package org.rainpet.controller;import org.rainpet.entity.Warehouse;
import org.rainpet.service.WarehouseService;
import org.rainpet.utils.StrUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import java.util.LinkedList;
import java.util.List;@Controller
@RequestMapping("/demo2")
public class Demo2Controller {@AutowiredWarehouseService warehouseService;@GetMapping("web1")public String hello(Model model){model.addAttribute("hello","hello welcome");return "web_1";}@GetMapping("web2")public String web2(HttpServletRequest request){String name="note";request.setAttribute("hello",name);return "web_1";}@GetMapping("web3")public ModelAndView web3(){String name="note3";ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("name",name);List<Warehouse> warehouseList=new LinkedList<>();Warehouse warehouse=new Warehouse();warehouse.setId(1);warehouse.setFid("01");warehouse.setFname("测试01");warehouseList.add(warehouse);modelAndView.addObject("warehouses",warehouseList);modelAndView.addObject("warehouse",warehouse);modelAndView.setViewName("web_2");return modelAndView;}
}

需要注意的问题:
① thymeleaf需要配合@Controller 注解使用,一定不能使用@RestController注解
② LinkedList 对象需要java7及以上支持,需要修改项目的java兼容性,我是修改到了java8。
需要修改:Project Structure中项目的SDK、language level;
在这里插入图片描述

各个模块的Language Level、Dependencies中的Model SDK;
在这里插入图片描述
在这里插入图片描述

设置中的Build.Execution,Deployment中Compiler中,java Compiler的各个模块字节码的version,均改为8。在这里插入图片描述

重新编译,同时在父项目中maven中执行install操作方可。
在这里插入图片描述
不然,可能会出现莫名错误:Could not resolve dependencies for project org.rainpet:Web:jar:1.0-SNAPSHOT: Failed to collect dependencies

4、重新编译,运行,打开页面:
http://localhost:8081/demo2/web1
在这里插入图片描述
http://localhost:8081/demo2/web2
在这里插入图片描述
http://localhost:8081/demo2/web3
在这里插入图片描述
到此,项目已经跑起来了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七牛云 CDN 视频瘦身,为视频分发「减负增效」

随着智能设备的普及&#xff0c;以及各种以分享视频为主的平台的兴起&#xff0c;人们记录生活、分享故事的方式不再局限于文字和图片&#xff0c;而是越来越多地通过视频来表达。视频也不再需要复杂的制作过程&#xff0c;变得随手可得。 然而&#xff0c;视频在互联网上的爆炸…

65 华为交换机CE6800基础配置

一 IPV6 使能配置思路 1 改华为交换机的名字 <huaweice65>sys Enter system view, return user view with return command. [~huaweice65]sysname HWCE6800 [*huaweice65]quit Warning: Uncommitted configurations found. Are you sure to commit them before exiting?…

抖音集团 FlinkSQL 性能优化探索及实践

本文作者&#xff1a;李精卫 更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 背景 随着抖音集团内部对流式任务的需求不断增长&#xff0c;Flink SQL作为一种低成本接入手段&#xff0c;已经在内部多个方向上得到…

K8S系列——(二)、K8S部署RocketMQ集群

1、环境准备 要将RocketMQ部署到K8S上&#xff0c;首先你需要提前准备一个K8S集群环境&#xff0c;如图我已经准备好了一个版本为 v1.28.13 的 K8S 集群&#xff08;其他版本也没问题&#xff09;&#xff1a; 角色IPMaster192.168.6.220Node-1192.168.6.221Node-2192.168.6.…

React 学习——Class类组件的基本结构

老版本的react的写法&#xff1a;是通过class类组件的 import { Component } from react; class Counter extends Component{state {count: 0,}setCount ()>{this.setState({ count: this.state.count 1 })}render(){return <button onClick{this.setCount}>{thi…

【Qt】输入类控件QLineEdit

目录 输入类控件QLineEdit 例子&#xff1a;录入个人信息 例子&#xff1a;使用正则表达式验证输入框的数据 例子&#xff1a;验证俩次输入密码一致 例子&#xff1a;切换显示代码 输入类控件QLineEdit QLineEdit 用来表示单行输入框&#xff0c;可以输入一段文本&#xf…

Go 文件操作基本方法大全

前言 在Go语言中&#xff0c;操作文件主要依赖于标准库中的os和io/ioutil&#xff08;注意&#xff1a;io/ioutil在Go 1.16及以后版本中被逐步弃用&#xff0c;推荐使用io和os包中的函数进行替代&#xff09;以及io和bufio等包。以下是一些基于这些基本库操作文件的方法大全&a…

Python和MATLAB谐波生成导图

&#x1f3af;要点 绘制三次谐波生成透射功率谱、对数对数图表示半导体曲面二次谐波生成&#xff0c;分析判断材料特性谐波均值估计计算边际似然&#xff08;贝叶斯统计&#xff09;二次谐波散射分析胶体染料分子结构交流电谐波波形傅立叶分析分析旋转各向异性谐波高次谐波非线…

appium下载及安装

下载地址&#xff1a;https://github.com/appium/appium-desktop/releases 双击安装就可以

深入学习SQL优化的第三天

目录 聚合函数 排序和分组 聚合函数 1251. 平均售价 表&#xff1a;Prices------------------------ | Column Name | Type | ------------------------ | product_id | int | | start_date | date | | end_date | date | | price | int …

桌球厅助教陪练系统源码开发和行业市场分析

台球助教陪练系统&#xff1a;引领智能化运动体验 作为一款专为台球爱好者设计的智能陪练系统&#xff0c;我们的目标是通过技术创新&#xff0c;让每位用户都能享受到个性化、高效的学习体验。无论是初学者还是寻求突破的高手&#xff0c;都能在我们的平台上找到适合自己的陪…

基于YOLO V8的PCB缺陷检测识别系统(python源码+Pyqt5界面+数据集+训练代码)

数据集准备&#xff1a;收集并标注PCB缺陷的图像。模型训练&#xff1a;使用YOLO v8框架训练一个模型来识别这些缺陷。GUI开发&#xff1a;利用PyQt5创建一个用户友好的图形界面。模型部署&#xff1a;在GUI中集成训练好的模型&#xff0c;使用户能够上传PCB图像并得到缺陷检测…

IOS 11 通用Base控制器封装

整体规划 BaseController&#xff1a;把viewDidLoad逻辑拆分为三个方法&#xff0c;方便管理。 BaseCommonController&#xff1a;不同项目可以复用的逻辑&#xff0c;例如&#xff1a;设置背景颜色方法等 BaseLogicController&#xff1a;本项目的通用逻辑&#xff0c;主要…

实现 FastCGI

CGI的由来&#xff1a; 最早的 Web 服务器只能简单地响应浏览器发来的 HTTP 请求&#xff0c;并将存储在服务器上的 HTML 文件返回给浏 览器&#xff0c;也就是静态 html 文件&#xff0c;但是后期随着网站功能增多网站开发也越来越复杂&#xff0c;以至于出现动态技 术&…

【Pyhthon读取 PDF文件表格 ,转为 CSV/TSV/JSON文件】

tabula-py tabula-py 是一个将 PDF 表格转换为 pandas DataFrame 的工具。 tabula-py 是 tabula-java 的包装器&#xff0c;需要您的机器上有 java。 tabula-py 还允许您将 PDF 中的表格转换为 CSV/TSV 文件。 tabula-py 的 PDF 提取准确度与 tabula-java 或 tabula app 相…

8月21日笔记

Frp Frp(Fast e Reverse ) Proxy) 是一款简单&#xff0c;好用&#xff0c;稳定的隧道工具。Frp 使用 Go语言开发&#xff0c;支持跨平台&#xff0c;仅需下载对应平台的二进制文件即可执行&#xff0c;没有额外依赖。它是一款高性能的反向代理应用&#xff0c;可以轻松地进行…

Spring DI 数据类型—— set 方法注入

首先新建项目&#xff0c;可参考 初识IDEA、模拟三层--控制层、业务层和数据访问层 一、spring 环境搭建 &#xff08;一&#xff09;pom.xml 导相关坐标 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.or…

http连接未释放导致生产故障

凌晨4点运维老大收到报警&#xff08;公司官网页面超时&#xff0c;上次故障因为运维修改nginx导致官网域名下某些接口不可用后&#xff0c;运维在2台nginx服务器上放了检测程序&#xff0c;检测官网页面&#xff09;&#xff0c;运维自己先看了看服务器相关配置&#xff0c;后…

Java实现STL中的全排列函数next_permutation()

目录 一、引言 二、全排列函数next_permutation() 三、next_permutation()的使用 四、Java实现next_permutation() 五、使用next_permutation()实现全排列 一、引言 相信很多小伙伴们都做过全排列的算法题&#xff0c;输入一个n&#xff0c;输出1~n的全排列。对于这个问题…

JVM 有哪些垃圾回收器?

JVM 有哪些垃圾回收器&#xff1f; 图中展示了7种作用于不同分代的收集器&#xff0c;如果两个收集器之间存在连线&#xff0c;则说明它们可以搭配使用。虚拟机所处的区域则表示它是属于新生代还是老年代收集器。 新生代收集器&#xff08;全部的都是复制算法&#xff09;&…