简单整合SpringBoot + MyBatis + Themyleaf小项目
一、项目环境搭建①
-
创建SpringBoot项目
-
选择对应的依赖
(lombok + web + thymeleaf + mysql driver)
-
目录结构
-
修改
ems_thymeleaf.pom
文件-
引入mybatis、druid依赖
<!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.19</version> </dependency>
-
-
修改
application.properties
# 应用名称 spring.application.name=ems_thymeleaf server.servlet.context-path=/ems # 应用服务 WEB 访问端口 server.port=8080 # 数据库驱动:# MySQL6以上用com.mysql.cj.jdbc.Driver (自己是5.7版本,如果是6以上版本需要注意连接地址配置还需要加上时区配置) spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 数据库类型 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # 数据库连接地址 spring.datasource.url=jdbc:mysql://localhost:3306/ems_thymeleaf?useUnicode=true&characterEncoding=utf8&useSSL=false # 数据库用户名&密码: spring.datasource.username=root spring.datasource.password=root # THYMELEAF (ThymeleafAutoConfiguration) # 开启模板缓存(默认值: true ) spring.thymeleaf.cache=true # 检查模板是否存在,然后再呈现 spring.thymeleaf.check-template=true # 检查模板位置是否正确(默认值 :true ) spring.thymeleaf.check-template-location=true #Content-Type 的值(默认值: text/html ) spring.thymeleaf.content-type=text/html # 开启 MVC Thymeleaf 视图解析(默认值: true ) spring.thymeleaf.enabled=true # 模板编码 spring.thymeleaf.encoding=UTF-8 # 要被排除在解析之外的视图名称列表,⽤逗号分隔 spring.thymeleaf.excluded-view-names= # 要运⽤于模板之上的模板模式。另⻅ StandardTemplate-ModeHandlers( 默认值: HTML5) spring.thymeleaf.mode=HTML5 # 在构建 URL 时添加到视图名称前的前缀(默认值: classpath:/templates/ ) spring.thymeleaf.prefix=classpath:/templates/ # 在构建 URL 时添加到视图名称后的后缀(默认值: .html ) spring.thymeleaf.suffix=.html mybatis.mapper-locations=classpath:/com/whc/mapper/*.xml mybatis.type-aliases-package=com.whc.entity spring.resources.static-locations=classpath:/templates/,classpath:/static/
-
修改
EmsThymeleafApplication.java
@SpringBootApplication @MapperScan("com.whc.dao") // 扫描com.whc.dao下的所有mapper类作为Mapper映射文件 public class EmsThymeleafApplication { public static void main(String[] args) { SpringApplication.run(EmsThymeleafApplication.class, args); } }
二、数据库表设计及项目环境②
需求分析:
- 用户
- 用户登录
- 用户注册、先生成验证码
- 员工
- 增删改查功能
分析库表结构:
- 用户表 t_user
- 属性 id、username、realname、password、sex
- 员工表 t_emp
- 属性 id、name、salary、age、bir
数据库创建表
-
新建数据库
-
新建表
create table t_user( id varchar(40) primary key, -- id username varchar(40), -- 用户名 realname varchar(40), -- 真实名称 password varchar(40), -- 密码 sex varchar(8) -- 性别 ); create table t_emp( id varchar(40) primary key, name varchar(40), -- 姓名 salary varchar(40), -- 薪资 age int(3), -- 年龄 bir date -- 生日 );
项目环境
-
引入对应的资源文件
-
编写
IndexController
默认情况下template中的静态页面无法直接通过URL访问,需要通过controller的跳转,定义映射之后,可以将直接访问的URL映射成类似controller的跳转功能。
@Controller public class IndexController { @GetMapping("/index") public String toIndex() { return "ems/login"; } }
-
启动项目,访问
localhost:8080/ems/index
-
跳转登录页面
-
跳转注册页面
@GetMapping("/toRegister") public String toRegister() { return "ems/regist"; }
-
三、图片验证码功能
-
验证码工具类
ValidateImageCodeUtils.java
public class ValidateImageCodeUtils { /** * 验证码难度级别 Simple-数字 Medium-数字和小写字母 Hard-数字和大小写字母 */ public enum SecurityCodeLevel { Simple, Medium, Hard } ; /** * 产生默认验证码,4位中等难度 * * @return */ public static String getSecurityCode() { return getSecurityCode(4, SecurityCodeLevel.Medium, false); } /** * 产生长度和难度任意的验证码 * * @param length * @param level * @param isCanRepeat * @return */ public static String getSecurityCode(int length, SecurityCodeLevel level, boolean isCanRepeat) { // 随机抽取len个字符 int len = length; // 字符集合(--除去易混淆的数字0,1,字母l,o,O) char[] codes = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; // 根据不同难度截取字符串 if (level == SecurityCodeLevel.Simple) { codes = Ar