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

本文主要是介绍以简单的例子从头开始建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
在这里插入图片描述
到此,项目已经跑起来了。

这篇关于以简单的例子从头开始建spring boot web多模块项目(五)-thymeleaf引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098958

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory