springboot 框架学习 thymeleaf静态模板引擎实现页面跳转

2023-11-06

最近在深啃jvm虚拟机,主要方法是阅读《深入java虚拟机》这本书,写的很形象深入,简单易懂。今天上web课程老师讲到servlet时突然想到boot的页面跳转与数据响应。

之前的springmvc在boot中也有集成,但是boot的常用页面是html5,不是jsp页面,所以对于数据的显示与获取有了一定的不适。不过这个得到了解决,入手的springboot+vue实战开发这本书中对于boot开发简单的项目讲解的比较好。

基于上一次静态资源访问的基础上,我们搭建一个具备增删改查的图书信息测试。

一、dao层

@Mapper
public interface BookDao {
//    利用mybatis框架写好需要使用的数据库操作方法

    /*查看全部*/
    @Select("select * from test.bootsm_book")
    List<Book> allBook();
    /*按条件查询*/
    @Select("select * from test.bootsm_book where bookId = #{bookId}")
    Book queryById(Integer bookId);
    /*修改*/
    @Update("update test.bootsm_book set bookName=#{bookName},bookPrice=#{bookPrice},bookType=#{bookType} where bookId=#{bookId}")
    Boolean update(Book book);
    /*插入*/
    @Insert("insert into test.bootsm_book values (#{bookId},#{bookName},#{bookPrice},#{bookType})")
    Boolean save(Book book);
    /*按条件删除*/
    @Delete("delete from test.bootsm_book where bookId=#{bookId}")
    Boolean delete(Integer bookId);
    /*实现登录*/
    @Select("select * from test.bootsm_book where bookId=#{bookId} and bookName=#{bookName}")
    Boolean login(Integer bookId,String bookName);
    /*实现*/

}

二、service层

public interface BookService {
    List<Book> allBook();
    Book queryById(Integer bookId);
    Boolean update(Book book);
    Boolean save(Book book);
    Boolean delete(Integer bookId);
    Boolean login(Integer bookId,String bookName);
}

@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookDao bookDao;

    @Override
    public List<Book> allBook() {
        return bookDao.allBook();
    }

    @Override
    public Book queryById(Integer bookId) {
        return bookDao.queryById(bookId);
    }

    @Override
    public Boolean update(Book book) {
        return bookDao.update(book);
    }

    @Override
    public Boolean save(Book book) {
        return bookDao.save(book);
    }

    @Override
    public Boolean delete(Integer bookId) {
        return bookDao.delete(bookId);
    }

    @Override
    public Boolean login(Integer bookId, String bookName) {
        return bookDao.login(bookId,bookName);
    }
}

三、controller层

@Controller
public class BookController {

    @Autowired
    private BookService bookService;

    @GetMapping("books")
    public ModelAndView allBook(){
        ModelAndView modelAndView = new ModelAndView();
        List<Book> bookList = bookService.allBook();
        modelAndView.addObject("bookList",bookList);
        modelAndView.setViewName("list");
        return modelAndView;
    }

    @RequestMapping("query")
    @ResponseBody
    public Book query(Integer bookId){
        return bookService.queryById(bookId);
    }

    /*先到add页面提交保存数据,再由真正的save方法接收数据并操作数据库*/
    @RequestMapping("add")
    public ModelAndView add(){
        ModelAndView modelAndView =  new ModelAndView("add");
        return modelAndView;
    }
    @RequestMapping("save")
    public ModelAndView save(Book book){
        ModelAndView modelAndView = new ModelAndView();
        bookService.save(book);
        List<Book> bookList = bookService.allBook();
        modelAndView.addObject("bookList",bookList);
        modelAndView.setViewName("list");
        return modelAndView;
    }

    /*测试使用模板引擎实现的页面跳转,很强!*/
    @RequestMapping("test")
    public ModelAndView test(){
        ModelAndView modelAndView = new ModelAndView("test");
        return modelAndView;
    }
}

四、pojo模型

@Data
public class Book {
    private int bookId;
    private String bookName;
    private String bookPrice;
    private String bookType;
}

五、templates文件夹

list.html

<!DOCTYPE html>
<html lang="en" xmlns:span="http://www.w3.org/1999/html" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>显示书目列表</h2>
<span th:text="${bookList}"></span>
<h3>搜索书籍</h3>
<form action="/query" method="post">
    <p><input type="text" name="bookId"></p>
    <p><input type="submit"></p>
</form>
<a href="/add">增加新书信息</a>
</body>
</html>

add.html

<!DOCTYPE html>
<html lang="zh" xmlns:th="Thymeleaf 官网网址">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>注册新书目信息</h2>
    <form method="post" action="/save">
        <p>书号<input type="text" name="bookId"></p>
        <p>书名<input type="text" name="bookName"></p>
        <P>价格<input type="text" name="bookPrice"></P>
        <p>类型<input type="text" name="bookType"></p>
        <p>提交<input type="submit"></p>
    </form>
</body>
</html>

test.html4

<!DOCTYPE html>
<html lang="zh" xmlns:th="Thymeleaf 官网网址">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
test success!
</body>
</html>

六、application.yml

server:
  port: 80

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/test
      username: root
      password: 123456
#    提供的模板引擎设置热部署,不使用cache,部署的文件类型是HTML5
  thymeleaf:
    cache: false
    mode: HTML5
#  mvc:
#    static-path-pattern: /static/*

七、跳转所需的静态模板引擎坐标

 <!--导入静态加载的模板引擎坐标-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

八、测试页面(为了测试页面跳转并没有加上修饰)

 

 

 学习多线程、并发编程、jvm最近更新boot可能有点慢。补一补java高级再深入spring框架的源码,希望计划能顺利。天气越热心就浮躁起来了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot 框架学习 thymeleaf静态模板引擎实现页面跳转 的相关文章

随机推荐

  • Spring5 框架 详解 (一) ---- IOC控制反转

    Spring5 框架 spring 框架概述 IOC 容器 1 什么是 IOC 2 IOC底层原理 IOC 过程 IOC 接口 IOC 操作 Bean 管理 IOC 操作 Bean 管理 xml 注入其他类型属性 IOC 操作 Bean 管
  • PHP底层工作原理

    原文地址 http www cnblogs com phphuaibei archive 2011 09 13 2174927 html 最近搭建服务器 突然感觉lamp之间到底是怎么工作的 或者是怎么联系起来 平时只是写程序 重来没有思考
  • Java中数据类型详解

    文章目录 一 数据类型的作用 二 两种数据类型 1 基本数据类型 1 第一类 整数型 2 第二类 浮点型 3 第三类 布尔型 4 第四类 字符型 2 引用数据类型 1 类 2 数组 3 接口 三 基本数据类型之间的转化 一 数据类型的作用
  • Vue 项目如何实现一个全局菜单搜索框

    个人主页 山山而川 xyj 作者简介 前端领域新星创作者 专注于前端各领域技术 共同学习共同进步 一起加油 系列专栏 Vue 系列 学习格言 与其临渊羡鱼 不如退而结网 目录 前言 一 过滤路由 二 搜索框展示路由 三 雏形出现但有缺陷 四
  • 九宫格选择照片

    一 Adapter public class RecyclerImageAdapter extends RecyclerView Adapter
  • 使用IDEA创建JavaWeb项目

    由于看的视频教程比较老 且开发工具为Eclipse 本人已习惯使用IDEA 在此记录一下创建JavaWeb项目过程 创建一个项目 左侧选择 Java Enterprise 右侧选择 Web Application 这里我输入的项目名字为 F
  • 公开课精华

    本文章总结于大疆前技术总监 目前在卡内基梅隆大学读博的杨硕博士在深蓝学院的关于机器人的带约束轨迹规划的公开课演讲内容 全文约5000字 笔者不是机器人领域的 因此特地去了解了一下杨硕博士 深感佩服 不仅是他的履历 更多的是他关于学术上的至臻
  • 2021-09-15 C++ 继承和多态(虚函数,纯虚函数,虚继承)

    C 继承和多态 虚函数 纯虚函数 虚继承 一 继承 继承的概念 为了代码的复用 保留基类的原始结构 并添加派生类的新成员 继承的本质 代码复用 我们用下图解释下 那么我们这里就可以提出几个问题了 进程的方式有哪些呢 这里有三种继承方式 pu
  • Vue3 实现背景水印功能

    在 web 的世界里 对于图片文档等增加水印处理是十分有必要的 水印的添加根据环境可以分为两大类 前端浏览器环境添加和后端服务环境添加 通过 canvas 创建一张含有水印信息的背景图片 通过 hooks 函数插入到页面中 对外暴露方法 设
  • pnpm安装与卸载

    文章目录 1 安装 1 1 Linux CentOS 1 1 1 使用脚本直接安装 1 2 2 通过npm安装 2 卸载 2 1 移除全局安装的包 2 2 移除pnpm cli 2 2 1 脚本直接安装 2 2 2 使用npm安装 官方文档
  • Mysql主从库不同步1236错误:could not find first log file name in binary....

    Mysql主从库不同步1236错误 could not find first log file name in binary log index file错误是主从的一个日志问题 我们只要简单的配置一下即可解决 最近造成Mysql主从库不同
  • 二进制运算基础

    本篇随笔仅作记录 文中有引用的一篇博客 博客地址为 https www cnblogs com joahyau p 6420619 html 首先谈一下为何会写这个知识点 这是由一道题引出这个知识点的 题目如下 System out pri
  • 在zotero-better-notes新版本里的笔记中插入模板的方法

    在zotero better notes新版本里的笔记中插入模板的方法 一 失效的方法 二 新的方法 三 模板分享 四 模板导入方法 一 失效的方法 上一篇文章Zotero笔记插件zotero better notes的基本使用方法与下载
  • MySQL主从复制原理、半同步操作步骤及原理

    原文地址 http blog csdn net linuxlsq article details 52606292 1 1 企业Linux运维场景数据同步方案 1 1 1 文件级别的异机同步方案 1 scp sftp nc 命令可以实现远程
  • iOS是伪多任务?

    iOS是伪多任务 Android系统原生就支持多任务 而iOS系统是从4开始的 它的多任务并不是传统意义上的多任务 不是任何应用进程都可以在后台自由运行 真正做到支持多任务的只有苹果Safari和Mail 很多苹果亲生的应用也都并不支持 对
  • TensorRT学习笔记3 - 运行sampleMNIST

    目录 步骤 遇到的问题 步骤 cd your tensorrt path samples sampleMNIST make cd your tensorrt path bin sudo sample mnist h datadir your
  • 多分支git合并流程

    阅读摘要 推荐一个git合并步骤 开发分支可能会多次提交合并到dev master主干分支也会显示很多个提交点 这样不方便代码分支管理和回溯发布记录 所以推荐如下方法 不出意外 这也是个新手教程 git 合并步骤 本地开发分支建立格式建议
  • 2023年电工杯

    电工数学建模竞赛 中国电机工程学会杯 全国大学生电工数学建模竞赛是全国性大学生学科竞赛活动 目的在于按照紧密结合教学实际 着重基础 注重前沿的原则 促进电气类专业建设 引导学生注重动手能力 创新能力和协作精神的培养 提高学生针对实际问题进行
  • 怎么解决idea版本不兼容?

    怎么解决2020 3 1版本的idea的jdk不兼容 希望好心的大哥哥回答 在线等 挺急的 谢谢
  • springboot 框架学习 thymeleaf静态模板引擎实现页面跳转

    最近在深啃jvm虚拟机 主要方法是阅读 深入java虚拟机 这本书 写的很形象深入 简单易懂 今天上web课程老师讲到servlet时突然想到boot的页面跳转与数据响应 之前的springmvc在boot中也有集成 但是boot的常用页面