目录
1.创建项目
2.
教你 Springboot 一步一步做项目
打开 Intellij Idea 编辑器
创建一个新项目
- 点击Create New Project
- 选择左侧的Spring Initializr
- 在右边,选择 default 从 https://start.spring.io 创建,点击 Next
- 在接下来的页面中,填写相关信息,比如 组/项目名, 指定创建
Gradle
项目,点击 Next - 在这个页面中,添加我们项目中需要用到的 Spring 插件,一般来说 Web / Jpa / Thymeleaf / MySQL 点击 Next
- 然后,填写项目名字,指定保存目录,点击 Finish,确认初始化 Gradle 项目就可以了。
配置我们的 Springboot 参数
- 修改配置我们的 build.gradle 然后刷新
apply plugin: 'idea' ext['thymeleaf.version'] = '3.0.9.RELEASE' ext['thymeleaf-layout-dialect.version'] = '2.2.2'
- 在 application.properties 修改基础参数
server.port=6666 spring.datasource.url=jdbc:mysql://localhost:3306/another_springboot_db spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.thymeleaf.mode=html spring.thymeleaf.cache=false spring.messages.encoding=GBK
- 开启 MySQL 服务, 在 MySQL 中创建相关的数据库
create database another_springboot_db
- 开启我们的服务器
localhost:6666
创建 Book 模块, 在里面分别创建 entity/dao/controller
- 创建 model/Author.java
@Entity public class Author { @Id @GeneratedValue private Long id; private String name; private String telephone; @OneToMany(mappedBy = "author") private List<Book> books; //... }
- 创建 model/Book.java
- 创建 dao/AuthorDAO.java
public interface AuthorDAO extends JpaRepository<Author, Long> { }
- 创建 dao/BookDAO.java
- 创建 web/AuthorController.java
@Controller public class AuthorController { @Autowired private AuthorDAO authorDAO; @GetMapping("/author_add") public String add() { return "book/add_author"; } @PostMapping("/author_add") public String store(Author author) { authorDAO.save(author); return "redirect:author_add"; } }
- 创建 web/BookController.java
为 Book 模块创建 Thymeleaf 模板 Layout
- 首先,在 resource 目录下面创建资源文件 messages.properties
- 在资源文件里面,添加要使用的公共参数
- 创建公共布局文件 layout/book.html
Book 增加功能示例
- 在 BookController 里面创建两个方法 add/save 分别用来呈现添加的 form 表单还有处理 form 请求
@GetMapping("/add") public String add(Model model) { model.addAttribute("authors", authorDAO.findAll()); return "book/add"; } @PostMapping("/add") public String save(Book book, Model model) { bookDAO.save(book); return "redirect:index"; }
- 为新增书籍创建 form 表单页面,使用我们定义的 layout 扩展
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="layout/book"> <head> <title>书籍添加</title> </head> <div layout:fragment="content"> <form th:action="@{/book/add}" method="post"> <div class="form-group"> <label for="name">名字</label> <input type="text" class="form-control" id="name" name="name"> </div> <div class="form-group"> <label for="price">价格</label> <input type="number" class="form-control" id="price" name="price"> </div> <div class="form-group"> <label for="author">作者</label> <select class="form-control" id="author" name="author.id"> <option value="-1">请选择</option> <option th:each="author : ${authors}" th:value="${author.id}" th:text="${author.name}">作者</option> </select> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </html>
为新增页面添加相关验证
- 首先,推荐使用 Java 的 JSR-303 规范的验证框架
- 在实体类上加上 @NotBlank / @NotNull / @Size / @Pattern / @Email 等注解
- 在控制器里,为数据绑定的类,提供 @Valid 注解,并 紧跟着 一个 BindingResult 对象用来接收校验结果
- 在页面中,使用 th:if(${fields.hasErrors()}) / th:errors 等方法显示出错信息
- 其次,其他简单错误使用 errors.reject() 的方法在 Controller 里手动校验
if(book.getAuthor() == null || book.getAuthor().getId() < 1) { errors.rejectValue("author", null, "您需要填写作者的信息哦!"); } if(errors.hasErrors()) { model.addAttribute("authors", authorDAO.findAll()); return "book/add"; }
- 然后,一些更复杂,需要重用的校验逻辑,你可以:
- 自定义 JSR 标准的校验注解和校验类
- 自定义 Spring 的校验器
- 首先,推荐使用 Java 的 JSR-303 规范的验证框架