Springboot3+vue3從0到1開發實戰項目(一)

一. 可以在本項目里面自由發揮拓展

二. 知識整合項目使用到的技術

后端開發 : Validation, Mybatis,Redis, Junit,SpringBoot3 ,mysql,Swagger, JDK17 項目部署

前端開發: Vue3,Vite,Router,Pina ,Element-Plus

開發工具idea ,VsCode,navicat。。。

KunkunFamily新聞需求

用戶:注冊,登錄,用戶詳細信息,更新用戶基本信息, 更新用戶頭像,更新用戶密碼

文章新聞分類管理: 文章分類列表, 新增文章分類,更新文章分類,獲取文章分類,刪除文章分類

文章管理:新增文章, 更新文章,獲取文章詳情, 刪除文章,文章列表(條件分頁)

文件上傳

后端開發要求以及前端需要熟知知識

三. 后端環境搭建:

1.根據前面的需求來寫mysql數據庫, 準備數據庫表

-- 創建User表
create table user (id int unsigned primary key auto_increment comment 'ID',username varchar(20) not null unique comment '用戶名',password varchar(32)  comment '密碼',nickname varchar(10)  default '' comment '昵稱',email varchar(128) default '' comment '郵箱',user_pic varchar(128) default '' comment '頭像',create_time datetime not null comment '創建時間',update_time datetime not null comment '修改時間'
) comment '用戶表';
-- 后面添加數據
insert into user(id, username, password, nickname, email,user_pic,create_time,update_time) VALUES ();-- 分類表
create table category(id int unsigned primary key auto_increment comment 'ID',category_name varchar(32) not null comment '分類名稱',category_alias varchar(32) not null comment '分類別名',create_user int unsigned not null comment '創建人ID',create_time datetime not null comment '創建時間',update_time datetime not null comment '修改時間',constraint fk_category_user foreign key (create_user) references user(id) -- 外鍵約束
);-- 文章表
create table article(id int unsigned primary key auto_increment comment 'ID',title varchar(30) not null comment '文章標題',content varchar(10000) not null comment '文章內容',cover_img varchar(128) not null  comment '文章封面',state varchar(3) default '草稿' comment '文章狀態: 只能是[已發布] 或者 [草稿]',category_id int unsigned comment '文章分類ID',create_user int unsigned not null comment '創建人ID',create_time datetime not null comment '創建時間',update_time datetime not null comment '修改時間',constraint fk_article_category foreign key (category_id) references category(id),-- 外鍵約束constraint fk_article_user foreign key (create_user) references user(id) -- 外鍵約束
)

2.創建springboot工程項目 引入依賴

注意: 這里需要下載JDK17 SpringBoot3需要JDK17的支持,不再支持JDK8, 我的成功是因為把Springboot版本降低了實現效果,以為自己就是17

3. 書寫配置文件

修改配置文件后綴名為yml

application.yml文件配置連接mysql

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/dahsijianusername: rootpassword: 1234

4. 創建基本的包結構

四. 開始編寫開發

1. 根據數據庫書寫實體類pojo

1.1注冊功能? ? 這是自己畫的注冊需要什么

User.java

@Data
public class User {private  Integer id; // 主鍵idprivate String username; // 用戶名private  String  password; // 密碼private String  nickname; //昵稱private String email; // 郵箱private String userPic; // 用戶頭像地址private LocalDateTime createTime;// 創建時間private LocalDateTime updateTime;// 更新時間
}

在Maven配置lombok就可以不用寫set,get了, 前面配置@Data

接口文檔參數返回值類 Result.java

@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {private Integer code; //業務狀態碼  0-成功  1-失敗private String message; //提示信息private T data; //響應數據//快速返回操作成功響應結果(帶響應數據)public static <E> Result<E> success(E data) {return new Result<>(0, "操作成功", data);}//快速返回操作成功響應結果public static Result success() {return new Result(0, "操作成功", null);}public static Result error(String message) {return new Result(1, message, null);}
}

看接口要有用戶名密碼校驗,這里使用spring的注解方式導入包validation

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

UserController.java類

@RestController
@RequestMapping("/user")
public class UserController {// service層@Autowiredprivate  UserService userService;// 注冊類   判斷是否已存在用戶查數據庫@PostMapping("/register")// 使用注解 @Pattern以及表達式public Result register(@Pattern(regexp = "^\\${5,16}$") String username, @Pattern(regexp = "^\\${5,16}$")String password) {if (userService.findByUsername(username) != null) {return Result.error("該用戶已被占用");}userService.register(username, password);return  Result.success();//        以前的校驗方式 : 調用查詢用戶的方法
//        User u = userService.findByUsername(username);
//        // 注冊
//        if (u == null) {
//            // 沒有占有
//            // 注冊
//            userService.register(username, password);
//            return Result.success();
//        }else {
//            // 占用
//            return Result.error("用戶已經被占用");
//        }}
}

UserService

public interface UserService{//根據用戶名查詢用戶User findByUsername(String username);//注冊void register(String username,String password);}

UserServiceImpl實現類

@Service
public class UserServiceImpl  implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic User findByUsername(String username) {User user =userMapper.findByUserName(username);return user;}@Overridepublic void register(String username, String password) {// 加密String md5String = Md5Util.getMD5String(password);// 添加userMapper.add(username,md5String);}
}

MD5util.java


public class Md5Util {/*** 默認的密碼字符串組合,用來將字節轉換成 16 進制表示的字符,apache校驗下載的文件的正確性用的就是默認的這個組合*/protected static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};protected static MessageDigest messagedigest = null;static {try {messagedigest = MessageDigest.getInstance("MD5");} catch (NoSuchAlgorithmException nsaex) {System.err.println(Md5Util.class.getName() + "初始化失敗,MessageDigest不支持MD5Util。");nsaex.printStackTrace();}}/*** 生成字符串的md5校驗值** @param s* @return*/public static String getMD5String(String s) {return getMD5String(s.getBytes());}/*** 判斷字符串的md5校驗碼是否與一個已知的md5碼相匹配** @param password  要校驗的字符串* @param md5PwdStr 已知的md5校驗碼* @return*/public static boolean checkPassword(String password, String md5PwdStr) {String s = getMD5String(password);return s.equals(md5PwdStr);}public static String getMD5String(byte[] bytes) {messagedigest.update(bytes);return bufferToHex(messagedigest.digest());}private static String bufferToHex(byte bytes[]) {return bufferToHex(bytes, 0, bytes.length);}private static String bufferToHex(byte bytes[], int m, int n) {StringBuffer stringbuffer = new StringBuffer(2 * n);int k = m + n;for (int l = m; l < k; l++) {appendHexPair(bytes[l], stringbuffer);}return stringbuffer.toString();}private static void appendHexPair(byte bt, StringBuffer stringbuffer) {char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字節中高 4 位的數字轉換, >>>// 為邏輯右移,將符號位一起右移,此處未發現兩種符號有何不同char c1 = hexDigits[bt & 0xf];// 取字節中低 4 位的數字轉換stringbuffer.append(c0);stringbuffer.append(c1);}

UserMapper

@Mapper
public interface UserMapper {// 查詢用戶@Select("select * from user where username=#{username}")User findByUserName(String username);// 添加用戶@Insert("insert into user(username,password,create_time,update_time) values(#{username},#{password},now(),now())")void add(String username, String password);// md5String
}

完整的項目結構如下:

?測試接口使用postman 注冊用戶添加到數據庫

數據庫已經注冊一個用戶了

?

注意: 這里需要下載JDK17 SpringBoot3需要JDK17的支持,不再支持JDK8, 我的成功是因為把Springboot版本降低了實現效果,以為自己就是17

五. 項目遇到的小問題

1. 版本問題:java: 警告: 源發行版 17 需要目標發行版 17

安裝了jdk17后之前是jdk1.8 想要把項目換成jdk17然后出現的這個問題

?解決 檢查項目是不是使用到了jdk17:

?

?

?這一章完結!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166293.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166293.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166293.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java數組和集合

在Java中&#xff0c;數組和集合是兩個重要的概念&#xff0c;它們用于存儲和操作數據。本文將詳細介紹Java中的數組和集合&#xff0c;包括它們的定義、初始化、訪問和常見操作 一、數組&#xff08;Array&#xff09; 數組是一種用于存儲相同類型數據的容器&#xff0c;它可…

DNS的各種進階新玩法

你們好&#xff0c;我的網工朋友&#xff0c;今天和你聊聊DNS。 01 什么是DNS&#xff1f; mac地址誕生&#xff0c;可是太不容易記憶了&#xff0c;出現了簡化了IP形式&#xff0c;它被直接暴露給外網不說&#xff0c;還讓人類還是覺得比較麻煩&#xff0c;干脆用幾個字母算了…

【Git】一文教你學會 submodule 的增、刪、改、查

添加子模塊 $ git submodule add <url> <path>url 為想要添加的子模塊路徑path 為子模塊存放的本地路徑 示例&#xff0c;添加 r-tinymaix 為子模塊到主倉庫 ./sdk/packages/online-packages/r-tinymaix 路徑下&#xff0c;命令如下所示&#xff1a; $ git subm…

用自己熱愛的事賺錢,是多么的幸福

挖掘天賦可能有些困難&#xff0c;但挖掘愛好就簡單多啦&#xff01;最幸福的事情就是能用自己喜歡的事情賺錢。 我們要說的是一個博主&#xff0c;他非常喜歡騎自行車&#xff0c;雖然他的工作是在外貿公司做銷售&#xff0c;但每當有空時&#xff0c;他都會騎自行車。而且他…

Nginx同時支持Http和Https的配置詳解

當配置Nginx同時支持HTTP和HTTPS時&#xff0c;需要進行以下步驟&#xff1a; 安裝和配置SSL證書&#xff1a; 獲得SSL證書&#xff1a;從可信任的證書頒發機構&#xff08;CA&#xff09;或使用自簽名證書創建SSL證書。 將證書和私鑰保存到服務器&#xff1a;將SSL證書和私鑰…

spring 的事務隔離;Spring框架的事務管理的優點

文章目錄 說一下 spring 的事務隔離&#xff1f;Spring框架的事務管理有哪些優點&#xff1f;你更傾向用哪種事務管理類型&#xff1f; 聊一聊spring事務的隔離&#xff0c;事務的隔離對于一個系統來說也是非常重要的&#xff0c;直接上干貨&#xff01;&#xff01;&#xff0…

Python與設計模式--享元模式

10-Python與設計模式–享元模式 一、網上咖啡選購平臺 假設有一個網上咖啡選購平臺&#xff0c;客戶可以在該平臺上下訂單訂購咖啡&#xff0c;平臺會根據用戶位置進行 線下配送。假設其咖啡對象構造如下&#xff1a; class Coffee:name price 0def __init__(self,name):se…

Go iota簡介

當聲明枚舉類型或定義一組相關常量時&#xff0c;Go語言中的iota關鍵字可以幫助我們簡化代碼并自動生成遞增的值。本文檔將詳細介紹iota的用法和行為。 iota關鍵字 iota是Go語言中的一個預定義標識符&#xff0c;它用于創建自增的無類型整數常量。iota的行為類似于一個計數器…

數據庫基礎入門 — SQL排序與分頁

我是南城余&#xff01;阿里云開發者平臺專家博士證書獲得者&#xff01; 歡迎關注我的博客&#xff01;一同成長&#xff01; 一名從事運維開發的worker&#xff0c;記錄分享學習。 專注于AI&#xff0c;運維開發&#xff0c;windows Linux 系統領域的分享&#xff01; 本…

[深度理解] 重啟 Splunk Search Head Cluster

1: 背景: 關于釋放Splunk search head 的job 運行壓力:splunk search head cluster 要重啟的話,怎么辦? 答案是:splunk rolling-restart shcluster-members Initiate a rolling restart from the command line Invoke the splunk rolling-restart command from any me…

3款免費次數多且功能又強大的國產AI繪畫工具

hi&#xff0c;同學們&#xff0c;本期是我們第55 期 AI工具教程 最近兩個月&#xff0c;國內很多AI繪畫軟件被關停&#xff0c;國外絕大部分AI繪畫工具費用不低&#xff0c;因此 這兩天我 重新整理 國產 AI繪畫 工具 &#xff0c; 最終 篩選了 3款功能強大&#xf…

LeeCode前端算法基礎100題(3)- N皇后

一、問題詳情&#xff1a; 按照國際象棋的規則&#xff0c;皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。 n 皇后問題 研究的是如何將 n 個皇后放置在 nn 的棋盤上&#xff0c;并且使皇后彼此之間不能相互攻擊。 給你一個整數 n &#xff0c;返回所有不同的 n 皇后…

虛擬機系列:vmware和Oracle VM VirtualBox虛擬機的區別,簡述哪一個更適合我?以及相互轉換

一. VMware和Oracle VM VirtualBox虛擬機的區別主要體現在以下幾個方面: 首先兩種軟件的安裝使用教程如下: VMware ESXI 安裝使用教程 Oracle VM VirtualBox安裝使用教程 商業模式:VMware是一家商業公司,而Oracle VM VirtualBox是開源軟件; 功能:VMware擁有更多的功能和…

Leetcode200. 島嶼數量

Every day a Leetcode 題目來源&#xff1a;200. 島嶼數量 解法1&#xff1a;深度優先搜索 設目前指針指向一個島嶼中的某一點 (i, j)&#xff0c;尋找包括此點的島嶼邊界。 從 (i, j) 向此點的上下左右 (i1,j)&#xff0c;(i-1,j)&#xff0c;(i,j1)&#xff0c;(i,j-1) …

“圓柱-計算公式“技術支持網址

該軟件可以計算圓柱的底面圓周長、底面積、側面積和體積。 您在使用中有遇到任何問題都可以和我們聯系。我們會在第一時間回復您。 郵箱地址&#xff1a;elmo30zeongmail.com 謝謝&#xff01;

如何將本地websocket發布至公網并實現遠程訪問?

本地websocket服務端暴露至公網訪問【cpolar內網穿透】 文章目錄 本地websocket服務端暴露至公網訪問【cpolar內網穿透】1. Java 服務端demo環境2. 在pom文件引入第三包封裝的netty框架maven坐標3. 創建服務端,以接口模式調用,方便外部調用4. 啟動服務,出現以下信息表示啟動成功…

VR云游:讓旅游產業插上數字化翅膀,打造地方名片

自多地入冬降溫以來&#xff0c;泡溫泉成了許多人周末度假的選擇&#xff0c;在氣溫持續走低的趨勢下&#xff0c;溫泉游也迎來了旺季&#xff1b;但是依舊有些地區溫度依舊溫暖&#xff0c;例如南京的梧桐美景也吸引了不少游客前去打卡&#xff0c;大家穿著漢服與金黃的樹葉合…

【AI考證筆記】NO.1人工智能的基礎概念

以下部分內容來自于百度智能云人才認證培訓講義&#xff0c;騰訊等也有人工智能類似的講義&#xff0c;限時免費&#xff0c;也就是不報考&#xff0c;也能系統學習&#xff0c;課程做的都是不錯的。有感興趣的朋友&#xff0c;可以去檢索學習。 本系列是學習筆記&#xff0c;…

6個常用的聚類評價指標

評估聚類結果的有效性&#xff0c;即聚類評估或驗證&#xff0c;對于聚類應用程序的成功至關重要。它可以確保聚類算法在數據中識別出有意義的聚類&#xff0c;還可以用來確定哪種聚類算法最適合特定的數據集和任務&#xff0c;并調優這些算法的超參數(例如k-means中的聚類數量…

C語言——從鍵盤輸人三角形的三個邊長 a、b、c,求出三角形的面積。

從鍵盤輸人三角形的三個邊長 a、b、c,求出三角形的面積。求三角形的面積用公式areasqrt(s*(s-a)*(s-b)*(s-c)),其中 s1/2(a十bc)。注:要求對輸人三角形的三個邊長做出有效性判斷。 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> #include<math.h> int main…