基于javaweb的SpringBoot朴素风个人博客系统(前后端分离+java+vue+springboot+ssm+mysql+maven)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

470123042402

480123042402

490123042402

500123042402

510123042402

520123042402

基于javaweb的SpringBoot朴素风个人博客系统(前后端分离+java+vue+springboot+ssm+mysql+maven)

一、项目简述

本系统功能包括: 基于vue + Springboo痼J后端分离项目个人博客系统,注册 登录,首页展示,喜爰图书展示,后台图书维护,个人文 章展示,后台文章上传等等。

二、项目运行

环境配置: Jdk1.8 + Mysql + HBuilderX (Webstorm也 行)+ Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts都支 持)。

项目技术: Springboot + Maven + Mybatis + Vue + Redis^K, B/S 模式+ Maven等等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    @GetMapping("/api/article/{size}/{page}")
public Result listArticles(@PathVariable("size") int size, @PathVariable("page") int page) {
return ResultFactory.buildSuccessResult(jotterArticleService.list(page - 1, size));
}

@GetMapping("/api/article/{id}")
public Result getOneArticle(@PathVariable("id") int id) {
return ResultFactory.buildSuccessResult(jotterArticleService.findById(id));
}

@DeleteMapping("/api/admin/content/article/{id}")
public Result deleteArticle(@PathVariable("id") int id) {
jotterArticleService.delete(id);
return ResultFactory.buildSuccessResult("删除成功");
}
}
package com.gm.wj.controller;



/**
* User controller.
*
*/

@RestController
public class UserController {
@Autowired
UserService userService;
@Autowired
AdminUserRoleService adminUserRoleService;

@GetMapping("/api/admin/user")
public Result listUsers() {
return ResultFactory.buildSuccessResult(userService.list());
}

@PutMapping("/api/admin/user/status")
public Result updateUserStatus(@RequestBody @Valid User requestUser) {
userService.updateUserStatus(requestUser);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    public Result getOneArticle(@PathVariable("id") int id) {
return ResultFactory.buildSuccessResult(jotterArticleService.findById(id));
}

@DeleteMapping("/api/admin/content/article/{id}")
public Result deleteArticle(@PathVariable("id") int id) {
jotterArticleService.delete(id);
return ResultFactory.buildSuccessResult("删除成功");
}
}
package com.gm.wj.controller;



/**
* User controller.
*
*/

@RestController
public class UserController {
@Autowired
UserService userService;
@Autowired
AdminUserRoleService adminUserRoleService;

@GetMapping("/api/admin/user")
public Result listUsers() {
return ResultFactory.buildSuccessResult(userService.list());
}

@PutMapping("/api/admin/user/status")
public Result updateUserStatus(@RequestBody @Valid User requestUser) {
userService.updateUserStatus(requestUser);
return ResultFactory.buildSuccessResult("用户状态更新成功");
}

@PutMapping("/api/admin/user/password")
public Result resetPassword(@RequestBody @Valid User requestUser) {
userService.resetPassword(requestUser);
return ResultFactory.buildSuccessResult("重置密码成功");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

@GetMapping("/api/categories/{cid}/books")
public Result listByCategory(@PathVariable("cid") int cid) {
if (0 != cid) {
return ResultFactory.buildSuccessResult(bookService.listByCategory(cid));
} else {
return ResultFactory.buildSuccessResult(bookService.list());
}
}

@PostMapping("/api/admin/content/books/covers")
public String coversUpload(MultipartFile file) {
String folder = "D:/workspace/img";
File imageFolder = new File(folder);
File f = new File(imageFolder, StringUtils.getRandomString(6) + file.getOriginalFilename()
.substring(file.getOriginalFilename().length() - 4));
if (!f.getParentFile().exists())
f.getParentFile().mkdirs();
try {
file.transferTo(f);
String imgURL = "http://localhost:8443/api/file/" + f.getName();
return imgURL;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}

}
package com.gm.wj.controller;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    @GetMapping("/api/search")
public Result searchResult(@RequestParam("keywords") String keywords) {
if ("".equals(keywords)) {
return ResultFactory.buildSuccessResult(bookService.list());
} else {
return ResultFactory.buildSuccessResult(bookService.Search(keywords));
}
}

@GetMapping("/api/categories/{cid}/books")
public Result listByCategory(@PathVariable("cid") int cid) {
if (0 != cid) {
return ResultFactory.buildSuccessResult(bookService.listByCategory(cid));
} else {
return ResultFactory.buildSuccessResult(bookService.list());
}
}

@PostMapping("/api/admin/content/books/covers")
public String coversUpload(MultipartFile file) {
String folder = "D:/workspace/img";
File imageFolder = new File(folder);
File f = new File(imageFolder, StringUtils.getRandomString(6) + file.getOriginalFilename()
.substring(file.getOriginalFilename().length() - 4));
if (!f.getParentFile().exists())
f.getParentFile().mkdirs();
try {
file.transferTo(f);
String imgURL = "http://localhost:8443/api/file/" + f.getName();
return imgURL;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}

}
package com.gm.wj.controller;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 *
*/
@RestController
public class JotterController {
@Autowired
JotterArticleService jotterArticleService;

@PostMapping("api/admin/content/article")
public Result saveArticle(@RequestBody @Valid JotterArticle article) {
jotterArticleService.addOrUpdate(article);
return ResultFactory.buildSuccessResult("保存成功");
}

@GetMapping("/api/article/{size}/{page}")
public Result listArticles(@PathVariable("size") int size, @PathVariable("page") int page) {
return ResultFactory.buildSuccessResult(jotterArticleService.list(page - 1, size));
}

@GetMapping("/api/article/{id}")
public Result getOneArticle(@PathVariable("id") int id) {
return ResultFactory.buildSuccessResult(jotterArticleService.findById(id));
}

@DeleteMapping("/api/admin/content/article/{id}")
public Result deleteArticle(@PathVariable("id") int id) {
jotterArticleService.delete(id);
return ResultFactory.buildSuccessResult("删除成功");
}
}
package com.gm.wj.controller;



/**
* User controller.
*
*/

@RestController
public class UserController {
@Autowired
UserService userService;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
            log.info("未登录用户尝试访问需要登录的接口");
return false;
}

// 判断访问接口是否需要过滤(数据库中是否有对应信息)
boolean needFilter = adminPermissionService.needFilter(requestAPI);
if (!needFilter) {
return true;
} else {
// 判断当前用户是否有相应权限
boolean hasPermission = false;
String username = subject.getPrincipal().toString();
Set<String> permissionAPIs = adminPermissionService.listPermissionURLsByUser(username);
for (String api : permissionAPIs) {
// 匹配前缀
if (requestAPI.startsWith(api)) {
hasPermission = true;
break;
}
}

if (hasPermission) {
log.trace("用户:" + username + "访问了:" + requestAPI + "接口");
return true;
} else {
log.warn( "用户:" + username + "访问了没有权限的接口:" + requestAPI);
return false;
}
}
}
}
package com.gm.wj.controller;


项目链接:
https://javayms.github.io?id=141222062008200wn
https://javayms.pages.dev?id=141222062008200wn