作者主页:Java毕设网
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
一、相关文档
HBLOG 是一个博客论坛网站,分为游客端和管理员端。游客端主要有注册登录,查看文章,发表撰写文章,管理自己的文章,评论文章等功能;而管理员端主要有登录,查看近期数据,查看日志,类别管理,用户、链接、文章增删查改的功能。
主要针对博客论坛的管理员对论坛信息进行有效的管理,对用户数量,链接数量,文章数量进行增删改查,能通过数据统计分析近来论坛的发展情况,还能通过类别更改管理论坛的界面。游客则通过发布文章,管理文章对论坛做出贡献,发布自己的想法。
- 用户管理。该模块是由管理员进行操作的,将所有用户的用户名,邮箱,创建时间,用户状态,列在一张表上,方便管理员增加、删除、修改,查询用户的信息,还可以批量删除。
- 文章管理。这个模块是管理员和用户都可以操作的,他们都可以对现有文章进行删除、修改,查询的操作。他们还可以在文章添加板块,进行文章创作。
- 链接管理。该模块是在论坛页面的右边添加友情网站的链接,起到互帮互助的作用,它也由两个小板块组成,链接添加和链接列表,这是只有管理员才能查看且增删查改的板块,
- 日志管理。日志模块是所有用户包括管理员论坛对后台管理系统的访问记录,由管理员查看,能够进行查询,删除和批量删除的操作。
- 数据管理。数据模块是以月为单位,对论坛的发帖量和访问量进行数据统计,并转换成柱状图的形式呈现,是只能由管理员查看的用于网站现状的分析的工具。分为文章发表数据和文章浏览数据。
- 系统管理。这个模块下面有一个前台栏目列表,是前台论坛上方展示的分类类别,有由管理员增加、删除、修改,查询的功能。
二、项目介绍
本系统分为管理员、游客两种角色;
管理员角色包含以下功能:
登录,用户增删改查,文章增删改查,链接增删改查,日志查看,查看近期数据,类别管理等功能。
游客角色包含以下功能:
首页,查看文章,注册账号,登录,管理自己写的文章,管理自己的文章,评论文章等功能。
三、环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7版本;
5.是否Maven项目:是;
四、技术栈
1. 后端:SpringBoot
2. 前端:JSP+CSS+JavaScript+LayUI
五、使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:18090/ 登录
六、运行截图
管理员角色
游客角色
七、相关代码
后台管理控制器
package com.ruixin.controller;
import com.ruixin.bean.Menu;
import com.ruixin.common.utils.Views;
import com.ruixin.service.MenuService;
import com.ruixin.util.UserUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* 后台控制管理
*/
@Controller
@RequestMapping("/admin")
public class AdminController {
@Autowired
private MenuService menuService;
/**
* 跳转到后台页
*/
@RequiresPermissions("base:admin:views")
@GetMapping("/index")
public String index(){
return Views.ADMIN;
}
/**
* 后台主页
*/
@RequiresPermissions("base:admin:views")
@GetMapping("/main")
public String main(){
return Views.ADMIN_MAIN;
}
/**
* 根据权限获取菜单
* @return
*/
@RequiresPermissions("base:admin:views")
@PostMapping("/getMenu")
@ResponseBody
public List<Menu> getMenu(){
return UserUtils.getMenuinfoList();
}
}
登陆管理控制器
package com.ruixin.controller;
import com.ruixin.bean.User;
import com.ruixin.service.UserService;
import com.ruixin.util.UserUtils;
import com.ruixin.common.utils.Views;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
/**
* 登录管理页
*/
@Controller
public class LoginController {
@Autowired
private UserService userService;
/**
* 跳转到登录页
*/
@GetMapping("/login")
public String login() {
User user = UserUtils.getPrincipal();
if (user != null) {
return Views.REDIRECT_ADMIN;
}
return Views.LOGIN;
}
/**
* 登录验证
*
* @param user
* @param map
* @return
*/
@PostMapping("/login")
public String login(User user, ModelMap map) {
if (user != null) {
if (StringUtils.isBlank(user.getUsername()) || StringUtils.isBlank(user.getPassword())) {
return Views.LOGIN;
}
AuthenticationToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword(), true);
if (token == null) {
map.put("message", "用户名或密码错误");
return Views.LOGIN;
}
//记住我
((UsernamePasswordToken) token).setRememberMe(true);
try {
SecurityUtils.getSubject().login(token);
return Views.REDIRECT_ADMIN;
} catch (AuthenticationException e) {
if (e instanceof UnknownAccountException) {
map.put("message", "用户不存在");
} else if (e instanceof LockedAccountException) {
map.put("message", "账户未激活");
map.put("status", 2);
map.put("user", user);
} else if (e instanceof DisabledAccountException) {
map.put("message", "账户未启用");
}
e.printStackTrace();
map.put("message", "用户认证失败");
}
return Views.LOGIN;
} else {
map.put("message", "未知异常");
return Views.LOGIN;
}
}
/**
* 安卓端登录
*
* @param user
* @return
*/
@PostMapping("/loginAndroid")
@ResponseBody
public User loginAndroid( User user) {
System.out.println("安卓端登录登录进到方法");
AuthenticationToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword(), true);
//记住我
((UsernamePasswordToken) token).setRememberMe(true);
SecurityUtils.getSubject().login(token);
//根据传进来的用户名查询用户信息
String username = user.getUsername();
User user1 = userService.findByAccount(username);
System.out.println("测试安卓登录用户名信息:"+user1.getEmail()+",user1:"+user1);
return user;
}
}