源码获取:博客首页 "资源" 里下载!项目介绍
本系统分为管理员、游客两种角色;
管理员角色包含以下功能:
登录,用户增删改查,文章增删改查,链接增删改查,日志查看,查看近期数据,类别管理等功能。
游客角色包含以下功能:
首页,查看文章,注册账号,登录,管理自己写的文章,管理自己的文章,评论文章等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
1. 后端:SpringBoot
2. 前端:JSP+CSS+JavaScript+LayUI
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean; maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8090/ 登录
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
管理员博文控制层:
/**
* @author yy
*/
@Controller
@RequestMapping("/admin")
public class BlogController {@Resource
private BlogService blogService;
@Resource
private CategoryService categoryService;
/**
* 博客列表
*
* @param params 参数
* @return com.hbu.myblog.util.Result
*/
@GetMapping("/blogs/list")
@ResponseBody
public Result list(@RequestParam Map params) {
if (StringUtils.isEmpty(params.get("page")) || StringUtils.isEmpty(params.get("limit"))) {
return ResultGenerator.genFailResult("参数异常!");
}
PageQueryUtil pageUtil = new PageQueryUtil(params);
return ResultGenerator.genSuccessResult(blogService.getBlogsPage(pageUtil));
}/**
* @param request http请求
* @return java.lang.String
*/
@GetMapping("/blogs")
public String list(HttpServletRequest request) {
request.setAttribute("path", "blogs");
return "admin/blog";
}/**
* @param request http请求
* @return java.lang.String
*/
@GetMapping("/blogs/edit")
public String edit(HttpServletRequest request) {
request.setAttribute("path", "edit");
request.setAttribute("categories", categoryService.getAllCategories());
return "admin/edit";
}/**
* @param request http请求
* @param blogId博客id
* @return java.lang.String
*/
@GetMapping("/blogs/edit/{blogId}")
public String edit(HttpServletRequest request, @PathVariable("blogId") Long blogId) {
request.setAttribute("path", "edit");
Blog blog = blogService.getBlogById(blogId);
if (blog == null) {
return "error/error_400";
}
request.setAttribute("blog", blog);
request.setAttribute("categories", categoryService.getAllCategories());
return "admin/edit";
}/**
* 添加文章
*
* @param blogTitle文章标题
* @param blogSummary摘要
* @param blogCategoryId 类别
* @param blogTags标签
* @param blogContent内容
* @param blogStatus草稿,发布
* @param enableComment可否评论
* @return com.hbu.myblog.util.Result
*/
@PostMapping("/blogs/save")
@ResponseBody
public Result save(@RequestParam("blogTitle") String blogTitle,
@RequestParam(name = "blogSummary", required = false) String blogSummary,
@RequestParam("blogCategoryId") Integer blogCategoryId,
@RequestParam("blogTags") String blogTags,
@RequestParam("blogContent") String blogContent,
@RequestParam("blogStatus") Byte blogStatus,
@RequestParam("enableComment") Byte enableComment) {
if (StringUtils.isEmpty(blogTitle)) {
return ResultGenerator.genFailResult("请输入文章标题");
}
if (blogTitle.trim().length() > 150) {
return ResultGenerator.genFailResult("标题过长");
}
if (StringUtils.isEmpty(blogTags)) {
return ResultGenerator.genFailResult("请输入文章标签");
}
if (blogTags.trim().length() > 150) {
return ResultGenerator.genFailResult("标签过长");
}
if (blogSummary.trim().length() > 375) {
return ResultGenerator.genFailResult("摘要过长");
}
if (StringUtils.isEmpty(blogContent)) {
return ResultGenerator.genFailResult("请输入文章内容");
}
if (blogTags.trim().length() > 100000) {
return ResultGenerator.genFailResult("文章内容过长");
}
Blog blog = new Blog();
blog.setBlogTitle(blogTitle);
blog.setBlogSummary(blogSummary);
blog.setBlogCategoryId(blogCategoryId);
blog.setBlogTags(blogTags);
blog.setBlogContent(blogContent);
blog.setBlogStatus(blogStatus);
blog.setEnableComment(enableComment);
String saveBlogResult = blogService.saveBlog(blog);
if ("success".equals(saveBlogResult)) {
return ResultGenerator.genSuccessResult("添加成功");
} else {
return ResultGenerator.genFailResult(saveBlogResult);
}
}/**
* 修改文章
*
* @param blogId文章ID
* @param blogTitle文章标题
* @param blogSummary摘要
* @param blogCategoryId 类别
* @param blogTags标签
* @param blogContent内容
* @param blogStatus草稿,发布
* @param enableComment可否评论
* @return com.hbu.myblog.util.Result
*/
@PostMapping("/blogs/update")
@ResponseBody
public Result update(@RequestParam("blogId") Long blogId,
@RequestParam("blogTitle") String blogTitle,
@RequestParam(name = "blogSummary", required = false) String blogSummary,
@RequestParam("blogCategoryId") Integer blogCategoryId,
@RequestParam("blogTags") String blogTags,
@RequestParam("blogContent") String blogContent,
@RequestParam("blogStatus") Byte blogStatus,
@RequestParam("enableComment") Byte enableComment) {
if (StringUtils.isEmpty(blogTitle)) {
return ResultGenerator.genFailResult("请输入文章标题");
}
if (blogTitle.trim().length() > 150) {
return ResultGenerator.genFailResult("标题过长");
}
if (StringUtils.isEmpty(blogTags)) {
return ResultGenerator.genFailResult("请输入文章标签");
}
if (blogTags.trim().length() > 150) {
return ResultGenerator.genFailResult("标签过长");
}
if (blogSummary.trim().length() > 375) {
return ResultGenerator.genFailResult("摘要过长");
}
if (StringUtils.isEmpty(blogContent)) {
return ResultGenerator.genFailResult("请输入文章内容");
}
if (blogTags.trim().length() > 100000) {
return ResultGenerator.genFailResult("文章内容过长");
}
Blog blog = new Blog();
blog.setBlogId(blogId);
blog.setBlogTitle(blogTitle);
blog.setBlogSummary(blogSummary);
blog.setBlogCategoryId(blogCategoryId);
blog.setBlogTags(blogTags);
blog.setBlogContent(blogContent);
blog.setBlogStatus(blogStatus);
blog.setEnableComment(enableComment);
String updateBlogResult = blogService.updateBlog(blog);
if ("success".equals(updateBlogResult)) {
return ResultGenerator.genSuccessResult("修改成功");
} else {
return ResultGenerator.genFailResult(updateBlogResult);
}
}/**
* 根据id的之删除文章
*
* @param ids 要删除文章id列表
* @return com.hbu.myblog.util.Result
*/
@PostMapping("/blogs/delete")
@ResponseBody
public Result delete(@RequestBody Integer[] ids) {
if (ids.length < 1) {
return ResultGenerator.genFailResult("参数异常!");
}
if (blogService.deleteBatch(ids)) {
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("删除失败");
}
}}
后台类别控制层:
@Controller
@RequestMapping("/admin")
public class CategoryController {@Resource
private CategoryService categoryService;
/**
* @param request
* @return java.lang.String
*/
@GetMapping("/categories")
public String categoryPage(HttpServletRequest request) {
request.setAttribute("path", "categories");
return "admin/category";
}/**
* @param params
* @return com.hbu.myblog.util.Result
*/
@RequestMapping(value = "https://www.it610.com/categories/list", method = RequestMethod.GET)
@ResponseBody
public Result list(@RequestParam Map params) {
if (StringUtils.isEmpty(params.get("page")) || StringUtils.isEmpty(params.get("limit"))) {
return ResultGenerator.genFailResult("参数异常!");
}
PageQueryUtil pageUtil = new PageQueryUtil(params);
return ResultGenerator.genSuccessResult(categoryService.getBlogCategoryPage(pageUtil));
}/**
* @param categoryName
* @param categoryIcon
* @return com.hbu.myblog.util.Result
*/
@RequestMapping(value = "https://www.it610.com/categories/save", method = RequestMethod.POST)
@ResponseBody
public Result save(@RequestParam("categoryName") String categoryName,
@RequestParam("categoryIcon") String categoryIcon) {
if (StringUtils.isEmpty(categoryName)) {
return ResultGenerator.genFailResult("请输入分类名称!");
}
if (StringUtils.isEmpty(categoryIcon)) {
return ResultGenerator.genFailResult("请选择分类图标!");
}
if (categoryService.saveCategory(categoryName, categoryIcon)) {
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("分类名称重复");
}
}/**
* @param categoryId
* @param categoryName
* @param categoryIcon
* @return com.hbu.myblog.util.Result
*/
@RequestMapping(value = "https://www.it610.com/categories/update", method = RequestMethod.POST)
@ResponseBody
public Result update(@RequestParam("categoryId") Integer categoryId,
@RequestParam("categoryName") String categoryName,
@RequestParam("categoryIcon") String categoryIcon) {
if (StringUtils.isEmpty(categoryName)) {
return ResultGenerator.genFailResult("请输入分类名称!");
}
if (StringUtils.isEmpty(categoryIcon)) {
return ResultGenerator.genFailResult("请选择分类图标!");
}
if (categoryService.updateCategory(categoryId, categoryName, categoryIcon)) {
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("分类名称重复");
}
}/**
* @param ids
* @return com.hbu.myblog.util.Result
*/
@RequestMapping(value = "https://www.it610.com/categories/delete", method = RequestMethod.POST)
@ResponseBody
public Result delete(@RequestBody Integer[] ids) {
if (ids.length < 1) {
return ResultGenerator.genFailResult("参数异常!");
}
if (categoryService.deleteBatch(ids)) {
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("删除失败");
}
}}
博文标签控制层:
@Controller
@RequestMapping("/admin")
public class TagController {@Resource
private TagService tagService;
/**
* @param request
* @return java.lang.String
*/
@GetMapping("/tags")
public String tagPage(HttpServletRequest request) {
request.setAttribute("path", "tags");
return "admin/tag";
}/**
* @param params
* @return com.hbu.myblog.util.Result
*/
@GetMapping("/tags/list")
@ResponseBody
public Result list(@RequestParam Map params) {
if (StringUtils.isEmpty(params.get("page")) || StringUtils.isEmpty(params.get("limit"))) {
return ResultGenerator.genFailResult("参数异常!");
}
PageQueryUtil pageUtil = new PageQueryUtil(params);
return ResultGenerator.genSuccessResult(tagService.getBlogTagPage(pageUtil));
}/**
* @param tagName
* @return com.hbu.myblog.util.Result
*/
@PostMapping("/tags/save")
@ResponseBody
public Result save(@RequestParam("tagName") String tagName) {
if (StringUtils.isEmpty(tagName)) {
return ResultGenerator.genFailResult("参数异常!");
}
if (tagService.saveTag(tagName)) {
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("标签名称重复");
}
}@PostMapping("/tags/delete")
@ResponseBody
public Result delete(@RequestBody Integer[] ids) {
if (ids.length < 1) {
return ResultGenerator.genFailResult("参数异常!");
}
if (tagService.deleteBatch(ids)) {
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult("有关联数据请勿强行删除");
}
}}
【Java毕业设计项目实战篇|Java项目:博客论坛管理系统(java+SpringBoot+JSP+LayUI+maven+mysql)】
源码获取:博客首页 "资源" 里下载!
推荐阅读
- Java毕业设计项目实战篇|Java项目:养老院管理系统(java+SpringBoot+thymeleaf+HTML+Js+mysql)
- Java毕业设计项目实战篇|Java项目:物业管理系统(java+SpringBoot+LayUI+HTML+maven+mysql)
- Java毕业设计项目实战篇|Java项目:教材管理系统(java+SSM+jsp+mysql+maven)
- 蓝桥杯|2022 第十三届 蓝桥杯 省赛 Java B组 真题 详细解析 答案
- 计算机基础|初识java虚拟机(JVM)运行时数据区结构
- JVM|JVM系列之运行时数据区与内存异常演示
- 学习笔记|JVM学习笔记(二)运行时数据区
- 笔记|设计模式之一——单例模式
- Java|(JUC 下典型的类)Java 并发包中线程同步器