源码获取:博客首页 "资源" 里下载!

一、项目简述

本系统功能包括:文章展示、热门文章、文章分类、标签云用户登录评论、匿名评论用户留言、匿名留言评论管理、文章发布、文章管理文章数据统计等等.

二、项目运行

环境配置: Jdkl . 8 + Tomcats . 5 + Mysql + HBuilderX ( Webstorm 也行) + Eclispe ( IntelliJ 10 以,三 clispe , MyEclispe , Sts 都支持)。

项目技术: Springboot + Maven + Mybatis + Vue + Redis 组成, BIS 模式+ M aven 等等,附带支付宝沙箱环境以及支付环节代码。

处理管理员界面请求:

/*** 处理管理员界面请求**/
@Controller
@RequestMapping("/admin")
public class AdminController {@Resourceprivate AdminUserService adminUserService;@Resourceprivate BlogService blogService;@Resourceprivate CategoryService categoryService;@Resourceprivate TagService tagService;@Resourceprivate CommentService commentService;/*** 处理登录请求** @return java.lang.String*/@GetMapping({"/login"})public String login() {return "admin/login";}/*** 主页** @param request http请求* @return java.lang.String*/@GetMapping({"", "/", "/index", "/index.html"})public String index(HttpServletRequest request) {request.setAttribute("path", "index");request.setAttribute("categoryCount", categoryService.getTotalCategories());request.setAttribute("blogCount", blogService.getTotalBlogs());request.setAttribute("tagCount", tagService.getTotalTags());request.setAttribute("commentCount", commentService.getTotalComments());return "admin/index";}/*** 登录界面** @param userName   用户名* @param password   密码* @param verifyCode 验证码* @param session    session* @return java.lang.String*/@PostMapping(value = "/login")public String login(@RequestParam("userName") String userName,@RequestParam("password") String password,@RequestParam("verifyCode") String verifyCode,HttpSession session) {if (StringUtils.isEmpty(verifyCode)) {session.setAttribute("errorMsg", "验证码不能为空");return "admin/login";}if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)) {session.setAttribute("errorMsg", "用户名或密码不能为空");return "admin/login";}String kaptchaCode = session.getAttribute("verifyCode") + "";if (StringUtils.isEmpty(kaptchaCode) || !verifyCode.equals(kaptchaCode)) {session.setAttribute("errorMsg", "验证码错误");return "admin/login";}AdminUser adminUser = adminUserService.login(userName, password);if (adminUser != null) {session.setAttribute("loginUser", adminUser.getNickName());session.setAttribute("loginUserId", adminUser.getAdminUserId());//session过期时间设置为7200秒 即两小时//session.setMaxInactiveInterval(60 * 60 * 2);return "redirect:/admin/index";} else {session.setAttribute("errorMsg", "登陆失败");return "admin/login";}}/*** 修改个人信息** @param request http请求* @return java.lang.String*/@GetMapping("/profile")public String profile(HttpServletRequest request) {Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");AdminUser adminUser = adminUserService.getUserDetailById(loginUserId);if (adminUser == null) {return "admin/login";}request.setAttribute("path", "profile");request.setAttribute("loginUserName", adminUser.getLoginUserName());request.setAttribute("nickName", adminUser.getNickName());return "admin/profile";}/*** 修改密码** @param request          http请求* @param originalPassword 原始密码* @param newPassword      新密码* @return java.lang.String*/@PostMapping("/profile/password")@ResponseBodypublic String passwordUpdate(HttpServletRequest request, @RequestParam("originalPassword") String originalPassword,@RequestParam("newPassword") String newPassword) {if (StringUtils.isEmpty(originalPassword) || StringUtils.isEmpty(newPassword)) {return "参数不能为空";}Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");if (adminUserService.updatePassword(loginUserId, originalPassword, newPassword)) {//修改成功后清空session中的数据,前端控制跳转至登录页request.getSession().removeAttribute("loginUserId");request.getSession().removeAttribute("loginUser");request.getSession().removeAttribute("errorMsg");return "success";} else {return "修改失败";}}/*** 修改登录名,昵称** @param request       http请求* @param loginUserName 登录名* @param nickName      昵称* @return java.lang.String*/@PostMapping("/profile/name")@ResponseBodypublic String nameUpdate(HttpServletRequest request, @RequestParam("loginUserName") String loginUserName,@RequestParam("nickName") String nickName) {if (StringUtils.isEmpty(loginUserName) || StringUtils.isEmpty(nickName)) {return "参数不能为空";}Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");if (adminUserService.updateName(loginUserId, loginUserName, nickName)) {return "success";} else {return "修改失败";}}/*** 管理员退出** @param request http请求* @return java.lang.String*/@GetMapping("/logout")public String logout(HttpServletRequest request) {request.getSession().removeAttribute("loginUserId");request.getSession().removeAttribute("loginUser");request.getSession().removeAttribute("errorMsg");return "admin/login";}
}

博客列表控制器:

/*** 博客列表控制器*/
@Controller
@RequestMapping("/admin")
public class BlogController {@Resourceprivate BlogService blogService;@Resourceprivate CategoryService categoryService;/*** 博客列表** @param params 参数* @return com.hbu.myblog.util.Result*/@GetMapping("/blogs/list")@ResponseBodypublic Result list(@RequestParam Map<String, Object> 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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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 {@Resourceprivate 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 = "/categories/list", method = RequestMethod.GET)@ResponseBodypublic Result list(@RequestParam Map<String, Object> 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 = "/categories/save", method = RequestMethod.POST)@ResponseBodypublic 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 = "/categories/update", method = RequestMethod.POST)@ResponseBodypublic 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 = "/categories/delete", method = RequestMethod.POST)@ResponseBodypublic Result delete(@RequestBody Integer[] ids) {if (ids.length < 1) {return ResultGenerator.genFailResult("参数异常!");}if (categoryService.deleteBatch(ids)) {return ResultGenerator.genSuccessResult();} else {return ResultGenerator.genFailResult("删除失败");}}}

源码获取:博客首页 "资源" 里下载!

Java项目:个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)相关推荐

  1. Java项目:朴素风个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 基于vue + Springboo痼J后端分离项目个人博客系统,注册 登录,首页展示,喜爰图书展示,后台图书 ...

  2. Java项目:在线小说阅读系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 普通用户端登录注册,小说的分类,日榜,月榜,年榜, 小说的阅读,分章节,小说的评论,收藏,推荐等等,以 及后 ...

  3. 博客系统(前后端分离)

    前面已经学习如何使用Servlet实现前后端交互,现在就可以使用Servlet把之前的博客系统修改为动态页面 动态页面可以使用模板引擎实现,这是由服务器渲染:服务器来构建出完整的页面并返回给浏览器 但 ...

  4. Java项目:仿小米商城系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 基于vue + Springboot前后端分离项目精简版仿小米商城 系统,注册登录,首页展示,商品展示,商品 ...

  5. Java项目:网上电商项目(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 一款基于Springboot+Vue的电商项目,前后端分离项目,前台后台都有,前台商品展示购买,购物车分类, ...

  6. Java项目:员工管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:分为前端翻后端部分,包括用户,区分晋通用户以及誉里员用户,包括首页展示,部门管理,人事管理,员工管理三个模块等 ...

  7. Java项目:在线商城系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 前台展示+后台管理,包括最基本的用户登录注册,下单, 购物车,购买,结算,订单查询,收货地址,后台商品管 理 ...

  8. Java项目:进销存管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 库存管理,入库管理,出库管理,往来管理,基础资料, 系统管理,消息中心,系统监控等等. 二.项目运行 环境配 ...

  9. Java项目:精美网上音乐平台(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 音乐播放 用户登录注册 用户信息编辑.头像修改 歌曲.歌单搜索 歌单打分 歌单.歌曲评论 歌单列表.歌手列表 ...

最新文章

  1. 【坑爹】WebStorm编辑器突然回车不能换行了、回车不能使用、回车失效了!!!
  2. 深度学习再登Science:万物皆可做神经网络处理器,你甚至可以用锅碗瓢盆
  3. mysql insert 结果集_SELECT查询结果集INSERT到数据表
  4. 关于ABAP高级顾问应该掌握的技术
  5. 国际软件设计文档——概要设计说明书
  6. 嫌多(线程/进程)太慢? 嫌Scrapy太麻烦?没事,异步高调走起!——瓜子二手车
  7. 2017 开源软件排行_2017年最佳开源教程
  8. java之servlet学习基础(一)
  9. AcWing 2041. 干草堆(差分)
  10. html中添加3dmax建模,HT for Web自定义3D模型的WebGL应用
  11. 一个开源的 Markdown 在线编辑器
  12. gitter 卸载_最佳Gitter渠道:iOS开发人员
  13. 从非诚勿扰看数据索引,优化代码小妙招
  14. 微信小游戏开发实战教程15-关卡编辑器的制作以及关卡分享功能的实现
  15. blender 2.8的基本使用和使用形态键(Shape key)做帧动画
  16. ISE 下按键消抖实验
  17. 【Unity 框架】QFramework v1.0 使用指南 工具篇:06. UIKit 界面管理快速开发解决方案 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏
  18. 《Redis设计与实现》学习笔记
  19. 何登成对Innodb加锁的分析
  20. 原生JS实现简易模板

热门文章

  1. 解决Hbuilder打包的APP微信支付时无法唤起支付,且提示{“code“:-100,“message“:“[payment微信:-1]General errors“}的问题
  2. CarTool 使用,获取图片资源
  3. PHP-----PHP程序设计基础教程----第四章数组
  4. 分割catalina.out 每天生成一个文件
  5. Spring之事务管理配置
  6. Castle ActiveRecord学习(四)延迟加载、分页查询、where条件
  7. Minimum Path Sum
  8. javascript 常用功能總結
  9. PL/SQL学习笔记-常量变量及数据类型初步
  10. 【C++】【四】企业链表