Web大作业实录Day2

二.Springboot+Thymeleaf 整合之前后端(文本)交互 springboot 与 thymeleaf 整合前后端(文本)交互 阅读详情

开始第二天的工作!昨天回宿舍又思考了一下我的网站需要的界面,但愿今天能完成几个网站的功能。

开始学习

动态改变网页展示内容

Thymeleaf详细教程(SpringBoot版)_springboot thymeleaf-优快云博客

  • 写一个html网页

  • 写一个控制器

  • 浏览器访问http://localhost:8080/test


thymeleaf基础

语法:

  • 引用名称空间(必须写的)
    <html xmlns:th="http://www.thymeleaf.org">
  • 动态传值语法 - th:指定指令
    • 引用web静态资源 - “@{}”(静态资源包括写好的css,写好的js等)
      <link rel="stylesheet" type="text/css" th:href="@{/CSS/index.css"}
    • 访问model模型中的数据 - “${}”
      <span th:text="${user.name}"></span>
      //引用其他博主的代码
    • 数据遍历 - th:each + "${对象.属性}"
      <tr th:each="user:${userlist}">
          <td th:text="${user.name}">默认</td>
          <td th:text="${user.age}">默认</td>
      </tr>
      //引用其他博主代码
      
    • 条件判断 - th:if + "${对象.属性}"
      <tr th:if="${messages.empty}">
          <td>默认</td>
      </tr>

      @Data注解作用以及Eclipse中@Data注解报错的解决方法_eclipse @data-优快云博客

                不过太麻烦了,我就没有引入lombok jar包。

  • 实际应用-先写个实体类
package com.example.demo.domain;

import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;

@Entity
public class User {
	private String username;
	private Integer gender;
	private Integer age;
	private Boolean isAdmin;
	private List<String> learned;
	private List<String> wantLearn;
	public User() {}
	public User(String username, Integer gender, Integer age) {
		this.username = username;
		this.gender = gender;
		this.age = age;
		this.isAdmin = false;
		this.learned = new ArrayList<String>();
		this.wantLearn = new ArrayList<String>();
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	
	public Integer getGender() {
		return gender;
	}
	public void setGender(Integer gender) {
		this.gender = gender;
	}
	
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
	public Boolean getIsAdmin() {
		return isAdmin;
	}
	public void setIsAdmin() {
		if(this.isAdmin == null) this.isAdmin = false;
		else if(this.isAdmin == false) this.isAdmin = true;
	}
	
	public List<String> getLearned(){
		return learned;
	}
	public void setLearned(List<String> learned) {
		if(this.learned == null) this.learned = new ArrayList<String>();
		for(int i = 0; i < learned.size(); i ++) {
			this.learned.add(learned.get(i));
		}
	}
	public List<String> getWantLearn(){
		return wantLearn;
	}
	public void setWantLearn(List<String> want) {
		if(this.wantLearn == null) this.wantLearn = new ArrayList<String>();
		for(int i = 0; i < want.size(); i ++) {
			this.wantLearn.add(want.get(i));
		}
	}
}
  • 写html页面
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
	<head>
		<base th:href="@{/}">
		<title>默认的title</title>
		<link rel="stylesheet" type="text/css" href="../../static/CSS/index.css" th:href="@{/CSS/index.css}"/>
	</head>
	
	<body>
		<div th:text="${user.getUsername}" class="firstCss"></div>
		年龄:<p th:text="${user.getAge}">momo</p><hr/>
		<p th:if="${user.getIsAdmin}">是管理员<hr/></p>
		性别:<div th:switch="${user.getGender}">
					<p th:case = "0">保密</p>
					<p th:case = "1">女</p>
					<p th:case = "2">男</p>
				</div><hr/>
		学过:<ul><!--下面第一个learned代表的是将user的learned列表给learned,相当于第一个learned是html里面的变量-->
				<li th:each="learned:${user.learned}" th:text="${learned}"></li>
			</ul><hr/>
		想学:<ul>
				<li th:each = "want:${user.wantLearn}" th:text="${want}"></li>
			</ul><hr/>
			
	</body>
</html>
  • 写controller
package com.example.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import com.example.demo.domain.User;

@Controller
public class TestController {
	@GetMapping("/test")
	public String index(Model model) {
		User user = new User();
		user.setUsername("Ayu");
		user.setAge(20);
		user.setGender(0);
		user.setIsAdmin();
		user.setIsAdmin();
		List<String> learned = new ArrayList(Arrays.asList("数据库","大学英语1","高等数学","计算机网络"));
		user.setLearned(learned);
		List<String> want = new ArrayList(Arrays.asList("跆拳道","概率论","机器学习"));
		user.setWantLearn(want);
		model.addAttribute("user", user); //前面一个是传给test.html的参数,后面一个是当前页面的参数名称
		return "HTML/test";
	}
}
  • 浏览器访问-效果

  • 还有就是list数据类型的展示

https://wenku.youkuaiyun.com/answer/48erk3bw9b - list类型初始化问题

至此,已经可以将动态数据展示在前端。


springboot和数据库关联

我使用的是mysql数据库

主要的几个操作:

  • 插入信息 - 用户发表评论,用户添加信息,管理员添加信息etc.
  • 删除信息 - 用户删除评论,管理员删除信息etc.
  • 修改信息 - 用户修改评论,用户点赞评论,用户修改信息,管理员修改信息etc.

参考: SpringBoot框架之SpringBoot+MySQL使用案例入门_springboot mysql-优快云博客

  • 查询mysql版本
    • cmd命令: mysql --help
    • 我的mysql版本 8.0.35
  • 添加依赖

我的mysql版本在maven官方找不到版本对应,我推测是版本太新了,maven还没有更新。所以添加依赖的时候尝试使用8.0.32版本的依赖。(实践证明可以使用)mysql-connector-java与MySQL数据库的版本对应关系_idea中这个mysql-connector-java怎样定位选择对应的版本-优快云博客

  • 配置properties
#数据库的配置(mysql)
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=*******
  • 写dao层接口
package com.example.demo.DAO;

import java.util.List;

import com.example.demo.domain.User;

public interface UserDao {
	List<User> findAll();
//	User findByName(String name);
	boolean addUser(User user);
	boolean updateByName(String name, Integer age);
	boolean deleteByName(String name);
}
  • 写dao层实现类impl
package com.example.demo.DAO.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import com.example.demo.DAO.UserDao;
import com.example.demo.domain.User;

@Service("userDaoImpl")
public class UserDaoImpl implements UserDao{
	@Autowired
		private JdbcTemplate jdbcTemplate;
	
	@Override
	public List<User> findAll(){
		String sql = "select * from users";
		return jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
	}
	
//	@Override
//	public User findByName(String name) {
//		String sql = "select * from users where name = ?";
//		Object[] params = new Object[] {name};
//		return jdbcTemplate.queryForObject(sql, params,
//				new BeanPropertyRowMapper<>(User.class));
//	}
	
	@Override
	public boolean addUser(User user) {
		String sql = "insert into users(id, name, gender, age) values(?,?,?,?)";
		Object[] params = {5, user.getUsername(), user.getGender(), user.getAge()};
		return jdbcTemplate.update(sql, params) > 0;
	}
	
	@Override
	public boolean updateByName(String name, Integer age) {
		String sql = "update users set age = ? where name = ?";
		Object[] params = {name, age};
		return jdbcTemplate.update(sql, params) > 0;
	}
	
	@Override
	public boolean deleteByName(String name) {
		String sql = "delete from users where name = ?";
		Object[] params = {name};
		return jdbcTemplate.update(sql, params) > 0;
	}
}

但是没有把数据库的内容展现在网页,而是展现在了控制台。

  • 重写controller,将数据显示在html前端 

SpringBoot实现数据库信息网页输出(html+MySQL+Thymeleaf)_mysql网页管理springboot数据库管理-优快云博客提到,@RestController == @Controller+@ResponseBody
在这里,不可以可以把Controller换成@RestController ,如果换的话,返回的就不是一个html,而是一个简单的字符串,如果与增删改查等方法同时使用时,就不能换了,同时应该在增删改查这些方法上加上@ResponseBody

package com.example.demo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import com.example.demo.DAO.impl.UserDaoImpl;
import com.example.demo.domain.User;

@Controller
public class TestController {
	@Autowired
	private UserDaoImpl userDaoImpl;
	
	//@RequestMapping(value = "/test", method = RequestMethod.GET);
	@GetMapping("/test")
	public String index(Model model) {
		List<User> userList = userDaoImpl.findAll();
		for(User user: userList) {
			System.out.println(user.getUsername() + " " + user.getAge());
			if(user.getAge() == 21)
			model.addAttribute("user", user);
		}
		System.out.println(userList);
		//model.addAttribute("userList", userList);
		return "HTML/test";
	}
}
  • 写html页面
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
	<head>
		<base th:href="@{/}">
		<title>默认的title</title>
		<link rel="stylesheet" type="text/css" href="../../static/CSS/index.css" th:href="@{/CSS/index.css}"/>
	</head>
	
	<body>
		<div th:text="${user?.username}" class="firstCss"></div>
		年龄:<p th:text="${user?.age}">momo</p><hr/>
		<p th:if="${user.isAdmin}">是管理员<hr/></p>
		性别:<div th:switch="${user?.gender}">
					<p th:case = "0">保密</p>
					<p th:case = "1">女</p>
					<p th:case = "2">男</p>
				</div><hr/>
	</body>
</html>
  • 浏览器访问

至此,完成数据库内容显示在网页。


从前端插入信息至数据库

前面已经完成了从后端到前端的连通,现在要实现的内容是从前端到后端的连通。即从前端插入、修改、删除等一系列操作。估计今天可以完成这个就相当牛了。

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧_springboot怎么获取前端数据-优快云博客

Spring Boot(七) 之前后端交互_spring 前后端交互-优快云博客

springboot+thymeleaf 文件上传-优快云博客


设计数据库

springboot+thymeleaf+mysql实现脚手架权限管理系统(超详细讲解)_thymeleaf好看的脚手架-优快云博客

问题记录

thymeleaf是什么?


model模型是什么?有什么参数?


mysql如何存储数组?

A:答案是创建多个表。mysql中没有list数据结构,如果想存放列表,可以多开一个关系表。打个比方,user用户有一个特性是学过什么课程,肯定是学过多个课程,存储多个课程就再开一个关系表。user为一个表(记录用户基本),course为一个表(记录课程基本信息),user_learned为一个表(记录用户学过什么课程),所以在这个表中,一个用户可能会出现多次。还可以使用json数据格式,不过似乎比较复杂。所以在当前项目中我选择使用关系表。

如何在MySQL中存储数组(list)?_mysql数据如何存放数组对象-优快云博客

Javabean是什么?

A: 一种符合某种规范的Java类。满足的规范:

  • JavaBean类是具体的和公共的
  • 必须有一个无参数的默认构造函数
  • 必须有get和set方法,类的字段通过get和set方法访问。

所以这就是一种有特殊规范的java实体类。entity、model和domain三者区别_model entity-优快云博客

数据库内容不为null,但是控制台显示的数据却为null?

A:因为数据库数据命名和前端不一样。修改数据库数据为username后,即可显示user的name。

boolean类型不显示是因为mysql没有布尔类型。避免使用tinyint,所以可以用int来表示。

ajax是什么?

A: Ajax是什么?Ajax的作用和使用_ajax是干什么用-优快云博客

Springboot 整合Mybatis +thymeleaf 实现增删改查,包含前端HTML页面 为了给初学者一些快速上手的前后端都包含的demo,特意以最简单的方式实现这个实例。 里面包含的有后端的增删改查代码以及html页面去调用接口实现前后端交互。 立即下载

相关推荐

SpringBoot+thymeleaf简单实现登陆注册及记账功能

NULL 博文链接:https://357029540.iteye.com/blog/2381388

SpringBoot+Thymeleaf超好用的前后端数据交互模板引擎

开发工具选用IDEA,尽量选择高版本的Thymeleaf避免版本不兼容问题,使用它可以完全替代JSP。 准备 1、pom文件 除了普通的SpringBoot项目,版本选择1.5.10,除了引入Web模块的场景启动器,数据库模块等等之外,还需要thymeleaf的场景启动器,为了兼容性,还需要指定thymeleaf较高的版本 ,pom文件主要的依赖如下(包含但不仅限于,看需求): <parent> <groupId>org.springframework

xnian_的博客 2006

115.工业相机海康SDK开发指南(阅读)

包含初始化SDK和反初始化SDK接口。(由于看不到函数内部的具体实现,因此以下的解释仅代表个人的理解)

weixin_63779802的博客 5996

SpringBoot引擎框架thymeleaf前后端交互的具体使用方法

第一步、首先在MySQL数据生成一张表 第二步、在IDEA中的generatorConfig.xml文件中,输入表的名字,然后点击Maven——plugins——mybatis-generator-mybatis-generator-generate生成代码 第三步、自己写Controller和Service,也就是下面三个文件要自己写 Controller: package com.snow.controller; import com.snow.dto.Page; import com.sno

weixin_43774841的博客 6846

玩转 Milvus(二):在 Ubuntu 22.04(WSL2)上安装 Milvus

本文详细介绍了在Ubuntu 22.04(WSL2)环境下安装Milvus向量数据库的两种单机模式:Milvus Lite和Milvus Standalone。Milvus Lite作为轻量级Python库,适合快速学习和小规模实验,只需通过pip安装即可使用。Milvus Standalone则支持Docker和Docker Compose两种部署方式,适合开发测试或小规模生产环境。文章对比了不同安装方式的优缺点,并提供了验证案例和常见问题解答,帮助开发者快速上手,实现简单的语义搜索功能。

企业级后端与 AI 应用开发双线探索 2507

SAP ERP与金蝶云星空的集成案例(新能源光伏行业)

通过建设PLM、SAP、MES、WMS、SCADA、EAM等多系统集成的工业互联网平台作为数字化工厂的控制中枢,不仅可以实现人员、设备、物料、工艺参数、产品等生产全流程追溯管理,同时也可以根据数据采集进行生产现场的控制调节,最大程度降低能耗水平。销售订单创建下推金蝶采购订单创建修改、销售订单创建下推金蝶销售订单创建修改、销售发货过账下推金蝶采购入库单、销售发货过账下推金蝶销售出库单:在SAP ERP系统创建销售订单、销售发货过账单后推送到云星空系统,进行采购/销售订单的创建修改、完成物料的入库和出库流程。

集信通 1620

springboot+mybatis+thymeleaf项目搭建及前后端交互

springboot+mybatis+thymeleaf项目搭建及前后端交互 前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将详细的介绍如何搭建一套spring boot 项目, 实现前后端交互. 开发工具 : IDEA , jdk 8 , mysql 开发完成后目录截图 : 一. 新建项目 file-new-project-Spring Initia

LDS666win的博客 2154

Palantir的Ontology:从静态知识图谱到动态业务引擎的跃迁

本文探讨了Palantir的Ontology技术如何将静态知识图谱升级为动态业务引擎。通过引入函数和行动作为核心元素,Ontology实现了业务逻辑的自动化响应与执行,显著提升物流、能源等领域的运营效率。文章详细解析了其混合存储引擎、状态监听网络等关键技术设计,并对比展示了传统架构与Ontology架构的业务价值差异。

weixin_42570296的博客 203

Spring-boot整合视图层技术,利用Thymeleaf快速打造第一个动态网页!

1、前言 在企业级应用开发过程中,前后端分离是主流,我们需要将后端服务执行结果返回给前端,实现动态网页展示。这时我们可以使用Spring-boot整合视图层技术,利用官方推荐模板引擎Thymeleaf快速打造动态网页。 Thymeleaf是新一代Java模板引擎,类似于Velocity、FreeMarker等传统Java模板引擎。Thymeleaf支持HTML原型,可以让前后端工程师在浏览器中直接查看开发样式和数据显示效果。Spring-boot为Thymeleaf提供自动化配置类ThymeleafAu

m0_59562547的博客 1087

【Agent从入门到实践】40 容错优化:异常处理、重试机制、降级策略

各位小伙伴,咱们的多Agent框架一路优化到现在,决策快、执行效率高、资源用得省,看似啥都行,但只要一遇到网络波动、工具故障、数据异常调用web_search工具时网络超时,整个检索任务直接失败,写作Agent没数据可用向量库连接异常,向量检索直接崩掉,依赖检索结果的Agent全趴窝单个Agent执行出错,整个并行任务流程直接中断,前功尽弃高并发下部分工具调用失败,框架没有备用方案,只能返回任务失败说白了,咱们之前的框架只有正常执行逻辑,没有异常兜底逻辑。

人工智能AI技术 912

【C语言趣味教程】(0) 专栏介绍

这是一套C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出"有趣的干货" !本系列教程不管是零基础还是有基础的读者都可以阅读,可以先看看目录!标题前带星号 (*) 的部分不建议初学者阅读,因为内容难免会超出当前章节的知识点,面向的是对 C 语言有一定基础或已经学过

有道无术, 术尚可求。有术无道, 止于术。 2万+

springboot:使用thymeleaf实现html前端页面和controller控制层数据交换

在html界面中要传递的数据name命名,通过表单的提交按钮会传递给响应的controller,在controller将需要的name接收! 在controller中使用@RequestParam来对应接收前端要传递的参数,此时参数名严格对应html界面中提交的数据name名称! 此时后端就实现接收前端传递的数据controller通过上述参数会接受到html,传递的数据,对数据进行判断。并且通过msg将信息传递回去。 html页面使用thymeleaf引擎接收并且显示数据在界面! 完整的两个代码块如下:

weixin_48595687的博客 4594

selenium绕过检测,规避检测

现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为 undefined或者为false。而使用selenium访问则该值为true。那么如何解决这个问题呢?我们正常浏览器登录查看,window.navigator.webdriver的值为false我们通过selenium打开的网页,测试,可见window.navigator.webdriver的值为true。

景天科技苑 1万+

spring boot(4)-html和templates

静态页面 spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下 /static /public /resources /META-INF/resources 如下,在resources建立一个static目录和index.htm静态文件,访问地址  htt

JAVA博客 7万+

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 138

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

在springboot中使用thymeleaf生成动态网页

1、pom引入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency 2、application.properties按需配置 与thymeleaf相关的常用配置 springboot默认re

资浅程序媛,个人公众/头条/百家号:郑州小闲人,关注权限已向你开放 1855

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot26:设置默认欢迎页面

在config包下新建一个配置类 @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewCo...

1569

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

基于springboot的党建动态建设网站设计实现

通过上述技术组合和代码示例,可快速搭建具备动态内容管理、实时交互和可扩展性的网站。

java python定制开发 396

如何使用Thymeleaf给web项目中的网页渲染显示动态数据?

Thymeleaf是一种用于Java web应用程序的服务器端模板引擎可以将HTML、XML、JavaScript等静态文件与动态数据(如表单数据、数据库中的数据等)结合起来,在服务器端生成动态的Web页面。简而言之,它的主要作用就是在静态页面上渲染显示动态数据Thymeleaf的设计目标是使Web开发变得更加自然和可维护。相比于其他模板引擎,Thymeleaf提供了更好的语法支持和功能,例如标记优雅降级、敏捷布局、动态URL、等,因此它被广泛地应用于Spring框架的开发中。

siaok的博客 3758

springboot同时配置thymeleaf和jsp两种模板引擎

简介: Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西。因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置。Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监...

wenpan的博客 8819

使用Spring Boot和Thymeleaf构建动态Web页面

通过本文,我们学习了如何使用Spring Boot和Thymeleaf构建动态Web页面。从项目创建开始,到Thymeleaf模板的编写和Controller的配置,我们逐步了解了如何利用这些工具创建交互性强、内容动态的Web应用。

聚娃科技开发者博客 802

Spring Boot 2,前端网页开发

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。点击这里领取Web前端开发经典面试题总结来说,面试成功=基础知识+项目经验+表达技巧+运气。

2301_77033813的博客 873

卜若的代码笔记系列-Web系列-SpringBoot-第二十八章:springboot的动态网页

1.有时候我们会有一些特别的需求比如我们希望在请求服务器某个页面时,服务器能够根据特殊情况发送一些其他信息,这就叫动态网页。 1.1 Springboot的动态网页支持 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b...

qq_37080133的博客 339

spring boot 2.0与静态模板Thymeleaf和mybatis数据交互

目录结构如下: 本demo结合mybatis和静态模板thymeleaf数据交互,代码只有全查 和删除数据的 交互。如有错误请指正!   谢谢   代码如下: application.properties server.port=9092 #数据源 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/**?serverTimezon...

qwzeng123的博客 582

springboot使用thymeleaf完成数据的页面展示

上一篇介绍了使用jsp完成数据的页面展示 ,但是springboot并不推荐使用jsp,会产生很多问题。官方推荐使用thymeleaf,这里我们将上一篇的jsp页面展示修改为使用thymeleaf,通过对比来熟悉thymeleaf,其实改动的地方并不大。 第一篇springboot入门时介绍了项目的大致结构,当时图省事所有的类都放在一个包中,这里略做调整,然后再resource下新建文件夹...

Java知音 3万+
上一篇: Web大作业实录Day1
下一篇: 通过HeidiSQL向表中导入EXCEL数据
Ayu阿予
博客等级 码龄5年 456粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayu阿予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值