基于javaweb的SpringBoot简单博客管理系统(java+springboot+html+maven+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

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

功能说明

230023252402

240023252402

250023252402

260023252402

270023252402

290023252402

基于javaweb的SpringBoot简单博客管理系统(java+springboot+html+maven+mysql)

项目介绍

本项目为前后台管理系统,包括博主与游客两种角色; 博主角色包含以下功能: 博主登录,发博客,博主可以删除博客等功能。 游客角色包含以下功能: 首页,查看博客,添加评论,搜索-标签筛选等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7版本;

技术栈

  1. 后端:SpringBoot

  2. 前端:HTML+CSS+JavaScript+jsp

使用说明
运行项目,输入localhost:8080/ 登录

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
43
44
45
46
47


public interface BlogDao extends BaseDao<Blog> {

}
package com.ibeetl.blog.dao;


public interface UserDao extends BaseDao<User> {

}
<%
layout("/common/layout.html",{title:"首页"}){
%>

<% for(var i = 0;i< page.list.~size;i=i+2){%>
<div class="row">
<div class="col-md-6 col-sm-6">
<article class=" blog-teaser">
<header>
<img src="${page.list[i].img}" alt="">
<h3><a href="${ctxPath}/detail?id=${page.list[i].id!}">
<%
var title = page.list[i].title;

if(isNotEmpty(title)&&strutil.length(title)>11){%>
${strutil.subStringTo(title,0,11)}...
<%}else{%>
${title!"无标题"}
<%}%>
</a></h3>
<span class="meta">${@com.ibeetl.blog.function.PrintTimeUtil.printTime(page.list[i].createTime,"yyyy-MM-dd HH:mm:ss")}</span>
<hr>
</header>

</article>
</div>
<%if((i+1) < page.list.~size){%>
<div class="col-md-6 col-sm-6">
<article class=" blog-teaser">
<header>
<img src="${page.list[i+1].img}" alt="">
<h3><a href="${ctxPath}/detail?id=${page.list[i].id!}">
<%
title = page.list[i+1].title;

if(isNotEmpty(title)&&strutil.length(title)>11){%>
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
private Long id;
private Integer deleteFlag;
private String password;
private String userName;
private Date createTime;
private Date updateTime;

public User() {
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Integer getDeleteFlag() {
return deleteFlag;
}

public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

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
     * @param pageSize
* @return
*/
PageQuery<Message> pageMsg(Long blogId, long pageNumber, long pageSize);

Blog getBlogById(Long blogId);

void saveMessage(Message message);

/***
* 保存博客
* @param blog
*/
void saveBlog(Blog blog);

List<String> listCategory();

User login(String userName, String password);

void deleteBlog(long id);
}
package com.ibeetl.blog.config;



@Configuration
public class DBConfig {

@Bean(name = "datasource")
public DataSource datasource(Environment env) {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(env.getProperty("spring.datasource.url"));
ds.setUsername(env.getProperty("spring.datasource.username"));
ds.setPassword(env.getProperty("spring.datasource.password"));
ds.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
return ds;
}
}
package com.ibeetl.blog.function;

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
43
44
45
46
47
48
49
50

public void setId(Long id) {
this.id = id;
}

public Boolean getDeleteFlag() {
return deleteFlag;
}

public void setDeleteFlag(Boolean deleteFlag) {
this.deleteFlag = deleteFlag;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public String getNickName() {
return nickName;
}

public void setNickName(String nickName) {
this.nickName = nickName;
}

public Date getCreateTime() {
return createTime;
}

public void setCreateTime(Date createTime) {
this.createTime = createTime;
}

public Date getUpdateTime() {
return updateTime;
}

public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}

public Long getBlogId() {
return blogId;
}

public void setBlogId(Long blogId) {
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
43
44
45
46
47
48
49
        </article>
</div>
<%}%>
</div>

<%}%>

<#page page="${page}" condition='${"&keyword="+keyword!+"&category="+category!}'/>
<% } %>


<!DOCTYPE html>
<html>
<head>
<title>登录</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="keywords" content="Flat Dark Web Login Form Responsive Templates, Iphone Widget Template, Smartphone login forms,Login form, Widget Template, Responsive Templates, a Ipad 404 Templates, Flat Responsive Templates" />
<link href="${ctxPath}/css/login_style.css" rel='stylesheet' type='text/css' />
</head>
<body>
<script>$(document).ready(function(c) {
$('.close').on('click', function(c){
$('.login-form').fadeOut('slow', function(c){
$('.login-form').remove();
});
});
});
</script>
<!--SIGN UP-->
<h1>登录</h1>
<div class="login-form">
<div class="close" onclick="location.href='/'"> </div>
<div class="head-info">
<label class="lbl-1"> </label>
<label class="lbl-2"> </label>
<label class="lbl-3"> </label>
</div>
<div class="clear"> </div>
<div class="avtar">
<img src="${ctxPath}/img/avtar.png" />
</div>
<form action="/login" method="get">
<input type="text" class="text" placeholder="用户名" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Username';}" name="userName">
<div class="key">
<input type="password" placeholder="密码" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Password';}" name="password">
</div>

<div class="signin">
<input type="submit" value="登录">
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
    }

@GetMapping("/test")
public String test(HttpServletRequest request) {
return "test.html";
}
}
package com.ibeetl.blog.service.impl;



@Service
public class BlogServiceImpl implements BlogService {
@Autowired
private BlogDao blogDao;

@Autowired
private MessageDao messageDao;

@Autowired
private UserDao userDao;


@Override
public PageQuery<Blog> pageBlog(long pageNumber, long pageSize, String keyword, String category) {
LambdaQuery<Blog> query = blogDao.createLambdaQuery()
.andEq(Blog::getDeleteFlag, false);
if (!StringUtils.isEmpty(keyword)) {
query.andLike(Blog::getTitle, "%" + keyword.trim() + "%");
}
if (!StringUtils.isEmpty(category)) {
query.andEq(Blog::getCategory, category);
}
if (pageNumber > 0 && pageSize > 0) {
return query.desc(Blog::getCreateTime).page(pageNumber, pageSize);
}


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