项目练习
可移步专栏阅读查看其他相关内容
已完成的代码空间:杜小白_1024
以下是本篇文章正文内容
基于SpringBoot+Thymeleaf_云收藏
适合对象
- 基本掌握JAVA语法使用
- 基本掌握HTML,知道表单的作用
- 基本掌握关系型数据库,知道INSERT操作
- 会看报错信息,会用搜索引擎
目标
- 实现创建新的收藏(填写标题、链接)
依赖
- Spring Boot Spring Boot是一个基于Java的开源框架,用于创建微服务。它由Pivotal Team开发,用于构建独立的生产就绪Spring应用。
- Thymeleaf Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直接在浏览器中打开并正确显示模板页面 。
- 参考文档
项目结构
src
├── main
│ ├── java
│ └── com
│ └── favorites
│ ├── domain # 模型
│ ├── repository
│ └── web # 控制器
│ └── resources
│ └── templates # 模板
部分功能实现思路
- 什么是模型、控制器和模板?
- 创建新的收藏
- 参考
src/main/resources/templates/favorites/newfavorites.html模板,构造一个可以填写标题、链接地址的表单 - 参考控制器目录下的
src/main/java/com/favorites/web/FavoritesController.java,实现接收表单提交数据并创建一条新的收藏的功能(收藏对应的模型为domain/Collect.java)
- 参考
实现目标
- 参考模版
src/main/resources/templates/favorites/newfavorites.html模板,构造一个可以填写标题、链接地址的表单
创建新收藏
src/main/resources/templates/favorites/newcreate.html
- 参考控制器目录下的
src/main/java/com/favorites/web/FavoritesController.java,实现接收表单提交数据并创建一条新的收藏的功能(收藏对应的模型为domain/Collect.java)
/create 创建新收藏
src/main/java/com/favorites/web/FavoritesController.java/create
- 简单思路
- 1.点击提交按钮,将表单中的标题和链接提交到后台
- 2.后台接收到数据后,将数据保存到数据库中
- 3.将保存成功的数据返回给前端,前端展示保存成功的数据
实现步骤
1.创建 “新建收藏”的主页面
./resources/templates/duxiaobaifavorites/duxiaobaifavorites.html
2.左侧导航栏添加“新建收藏”
./resources/templates/fragments/left.html
3.新建newFavorites方法进行跳转页面
./java/com/favorites/web/IndexController.java;
@RequestMapping(value="/duxiaobaiFavorites")
@LoggerManage(description="duxiaobai新建收藏页面")
public String duxiaobaiFavorites(){
return "duxiaobaifavorites/duxiaobainewfavorites";
}
4.创建 接收表单请求的控制器
参考FavoritesController.java
./java/com/favorites/web/DuxiaobaiFavoriteController.java
5.创建 saveDuxiaobaiFavorites(getUserId(), name, duxiaobaiurl)方法
./java/com/favorites/service/FavoritesService.java
package com.favorites.service;
import com.favorites.domain.Collect;
import com.favorites.domain.Favorites;
public interface FavoritesService {
public Favorites saveFavorites(Long userId,String name);
public Favorites saveFavorites(Collect collect);
public Favorites saveDuxiaobaiFavorites(Long userId,String name,String duxiaobaiurl);
public void countFavorites(long id);
}
6.修改FavoritesServiceImpl这个实现类
./java/com/favorites/service/impl/FavoritesServiceImpl.java
@Override
public Favorites saveDuxiaobaiFavorites(Long userId, String name, String duxiaobaiurl) {
Favorites favorites = new Favorites();
favorites.setName(name);
favorites.setDuxiaobaiurl(duxiaobaiurl);
favorites.setUserId(userId);
favorites.setCount(0l);
favorites.setPublicCount(10l);
favorites.setCreateTime(DateUtils.getCurrentTime());
favorites.setLastModifyTime(DateUtils.getCurrentTime());
favoritesRepository.save(favorites);
return favorites;
}
7.创建 对应的Get/Set Duxiaobaiurl方法;增加duxiaobaiurl字段
./java/com/favorites/domain/Favorites.java
8.修改数据库表
favorites表中新增duxiaobaiurl字段并设置为非空
ALTER TABLE favorites ADD duxiaobaiurl VARCHAR(255) NOT NULL;

9.PS:若使用远程数据库注意修改数据库连接
Host Password USER PORT
springaboot提供了一个全局配置文件,在application.properties中增加数据库连接配置
resources/application.properties
###### db config start ######
spring.datasource.username=root
# spring.datasource.password=root
spring.datasource.password=qGCJiNqi
spring.datasource.url=jdbc:mysql://s3.1024paas.com:58120/favorites?useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
###### db config end ######
spring.datasource.name 数据源的名称。
spring.datasource.username 数据库的登录用户名。
spring.datasource.password 数据库的登录密码。
spring.datasource.url 数据库的 JDBC URL。
spring.datasource.jdbc-url 用来创建连接的 JDBC URL。
spring.datasource.driver-class-name JDBC 驱动的全限定类名。默认根据 URL 自动检测。
。。。。。。
实现效果
1.点击“创建新收藏”按钮,跳转到新建收藏页面

2.必需同时填写标题和链接地址,否则提示错误



3.点击“提交”按钮,若标题已创建,弹窗提示报错

4.填写标题和链接地址,点击“提交”按钮,弹窗提示新建收藏成功

5.查看数据库,新建的收藏已经保存到数据库中

6.查看收藏列表,新建的收藏已经保存到收藏列表中

总结
经过简单的了解和练习我们可以学习到或者需要学习:
1.1. MVC设计模式
1.2. thymeleaf
1.3. 项目的部署与搭建
1.4. 项目整体架构
1.5. Spring-boot框架
1.6. spring-data-jpa框架
小唠叨:学习的目的是什么,如果只是为了学习而学习,没有目的性,很难坚持,且没有实战的学习毫无意义,所以我打算实现这个小需求。时常问自己究竟想做什么?就在此刻也没有想清楚,但是秉着从一而终的想法,直接站在巨人的肩膀上面,修修改改,相当潦草,当还算完整。循序渐进的学习才能真正的掌握一门语言,即便有java基础也绝不可能一步登天(而且我的基础貌似被遗忘了),我相信大家都一样。原作者的项目是从2016年写了2年之久,本着敬畏之心慢慢阅读,断断续续的花了将近2周的时间,虽收获颇丰,但碍于对java的认知程度不够和基础的充分遗忘,理解和学习并不深刻。

- Authors
- 杜小白