6.10 URL写法
在Thymeleaf中路径的写法为@{路径}
<a th:href="@{http://www.baidu.com}">百度</a>
静态传参
1、控制器
//访问index.html @RequestMapping("/index") public void index(){ } // 返回json格式的数据 @GetMapping("/show") @ResponseBody public String showPage(String id,String name){ return id + "-" + name; }
2、html
<a th:href="@{show?id=1&name='张三'}">静态传参1</a> <a th:href="@{show(id=2,name=lisi)}">静态传参2</a>
动态传参
1、控制器
//访问index.html @RequestMapping("/index") public void index(Model model){ model.addAttribute("id",1); model.addAttribute("name", "张三 "); } // 返回json格式的数据 @GetMapping("/show") @ResponseBody public String showPage(String id,String name){ return id + "-" + name; }
2、html
<a th:href="@{'show?id='+${id}+'&name='+${name}}">动态传参1</a> <a th:href="@{show(id=${id},name=${name})}">动态传参2</a>
6.11 RESTful风格URL写法
1、控制器
//访问index.html @RequestMapping("/index") public void index(Model model){ model.addAttribute("id",1); model.addAttribute("name", "张三 "); } // restful风格 @GetMapping("/show/{id}/{name}") @ResponseBody public String showPage(@PathVariable String id, @PathVariable String name){ return id + "-" + name; }
2、html
<a th:href="@{show/{id}/{name}(id=${id},name=${name})}">restful风格传参</a>
6.12 Thymeleaf相关配置
在Springboot配置文件中可以进行Thymeleaf相关配置,但是一般不需要配置,使用默认的就行
配置项 | 含义 |
spring.thymeleaf.prefix | 视图前缀 |
spring.thymeleaf.suffix | 视图后缀 |
spring.thymeleaf.encoding | 编码格式 |
spring.thymeleaf.servlet.content-type | 响应类型 |
spring.thymeleaf.cache=false | 页面缓存,配置为false则不启用页面缓存,方便测试 |
spring: thymeleaf: prefix: classpath:/templates/ suffix: .html encoding: UTF-8 cache: false servlet: content-type: text/html
七、SpringBoot热部署
热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。即修改完代码后不需要重启项目即可生效。在SpringBoot中,可以使用DevTools工具实现热部署
1、添加DevTools依赖
<!-- 热部署工具 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
2、在idea中设置自动编译
点击File-->Settings
3、在Idea设置自动运行
快捷键Ctrl+Shift+Alt+/
后点击Registry
,勾选complier.automake.allow.when.app.running
八、SpringBoot整合Mybatis
Spring整合MyBatis时需要进行大量配置,而SpringBoot整合MyBatis则可以简化很多配置:
1、准备数据库
2、创建SpringBoot项目,添加MyBatis起步依赖和Mysql驱动依赖
3、编写实体类
public class User { private int id; private String username; private String sex; private String address; private int account; }
4、编写Mapper接口
@Mapper public interface UserMapper { List<User> findUsers(); }
5、在resources目录下编写mapper映射文件(接口和映射文件所在的文件的路径保持一致,并且映射文件所在的目录文件要一级一级建)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zj.mapper.UserMapper"> <select id="findUsers" resultType="com.zj.pojo.User"> select * from user; </select> </mapper>
6、编写配置文件
#数据源 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc://mysql:///mybatis?serverTimezone=UTC username: root password: 123456 mybatis: #Mybatis配置映射文件的位置 mapper-locations: com/zj/mapper/*Mapper.xml #实体类起别名 type-aliases-package: com.zj.pojo #日志格式 logging: pattern: console: '%d{HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n'
7、编写测试类
package com.zj.mapper; import com.zj.mapper.UserMapper; import com.zj.pojo.User; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.List; @SpringBootTest //springboot测试类注解,在运行测试代码时加载容器 public class UserMapperTest { @Resource private UserMapper userMapper; @Test public void testUsers(){ List<User> users = userMapper.findUsers(); for (User user : users) { System.out.println(user); } } }
九、参SpringBoot参数校验
9.1 校验简单数据类型
SpringBoot自带了validation工具可以从后端对前端传来的参数进行校验,用法如下:
1、引入validation
起步依赖,或者在创建项目的时候引入该模块。
2、控制器
@Controller @Validated //该控制器开启参数校验 public class TestController { @RequestMapping("/test1") @ResponseBody //在参数校验,表示该参数不为空。当参数为空时会报异常 public String test1(@NotBlank(message = "用户名不能为空") String name){ return "test1:"+name; } }
9.2 异常处理
当抛出ConstraintViolationException
异常后,我们可以使用SpringMVC的异常处理器,也可以使用SpringBoot自带的异常处理机制。
当程序出现了异常,SpringBoot会使用自带的BasicErrorController
对象处理异常。该处理器会默认跳转到/resources/templates/error.html页面()。
1、引入依赖,在参数校验的基础上还需要thymeleaf依赖。
2、编写错误页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>错误页面</title> </head> <body> 只要出现异常都会跳转到该页面 <h1>服务器开小差了!</h1> </body> </html>
3、控制器
@Controller @Validated //该控制器开启参数校验 public class TestController { @RequestMapping("/test1") @ResponseBody //在参数校验,表示该参数不为空。当参数为空时会报异常 public String test1(@NotBlank(message = "用户名不能为空") String name){ return "test1:"+name; } }
4、访问