Java实战个人博客系统的实现流程
更新时间:2022年1月2日 23:29 点击:229 作者:qq_1334611189
springboot+mybatis+前端vue,使用前后端分离架构实现的个人博客系统,共7个模块,首页,写博客,博客详情页,评论管理,文章分类,标签管理和文章归档。
运行环境: jdk8+tomcat8.5+mysql5.7+IntelliJ IDEA+maven
项目技术: springboot+mybatis+redis+vue+element ui
博客管理控制层:
/** * @author yy */ @Controller public class MyblogController { // public static String theme = "default"; public static String theme = "amaze"; @Resource private BlogService blogService; @Resource private TagService tagService; @Resource private CommentService commentService; @Resource private ConfigService configService; @Resource private CategoryService categoryService; /** * 首页 * * @param request http请求 * @return java.lang.String */ @GetMapping({"/", "/index", "index.html"}) public String index(HttpServletRequest request) { return this.page(request, 1); } /** * 首页(带页码) * * @param request http请求 * @param pageNum 页码 * @return java.lang.String */ @GetMapping({"/page/{pageNum}"}) public String page(HttpServletRequest request, @PathVariable("pageNum") int pageNum) { PageResult blogPageResult = blogService.getBlogsForIndexPage(pageNum); if (blogPageResult == null) { return "error/error_404"; } request.setAttribute("blogPageResult", blogPageResult); request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1)); request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0)); request.setAttribute("hotTags", tagService.getBlogTagCountForIndex()); request.setAttribute("pageName", "首页"); request.setAttribute("configurations", configService.getAllConfigs()); return "blog/" + theme + "/index"; } /** * Categories页面(包括分类数据和标签数据) * * @param request http请求 * @return java.lang.String */ @GetMapping({"/categories"}) public String categories(HttpServletRequest request) { request.setAttribute("hotTags", tagService.getBlogTagCountForIndex()); request.setAttribute("categories", categoryService.getAllCategories()); request.setAttribute("pageName", "分类页面"); request.setAttribute("configurations", configService.getAllConfigs()); return "blog/" + theme + "/category"; } /** * 详情页 * * @param request http请求 * @param blogId 博客id * @param commentPage 评论页 * @return java.lang.String */ @GetMapping({"/blog/{blogId}", "/article/{blogId}"}) public String detail(HttpServletRequest request, @PathVariable("blogId") Long blogId, @RequestParam(value = "commentPage", required = false, defaultValue = "1") Integer commentPage) { BlogDetailVO blogDetailVO = blogService.getBlogDetail(blogId); if (blogDetailVO != null) { request.setAttribute("blogDetailVO", blogDetailVO); request.setAttribute("commentPageResult", commentService.getCommentPageByBlogIdAndPageNum(blogId, commentPage)); } request.setAttribute("pageName", "详情"); request.setAttribute("configurations", configService.getAllConfigs()); return "blog/" + theme + "/detail"; } /** * 标签列表页 * * @param request http请求 * @param tagName 标签名称 * @return java.lang.String */ @GetMapping({"/tag/{tagName}"}) public String tag(HttpServletRequest request, @PathVariable("tagName") String tagName) { return tag(request, tagName, 1); } /** * 标签列表页(带页码) * * @param request http请求 * @param tagName 标签名称 * @param page 页码 * @return java.lang.String */ @GetMapping({"/tag/{tagName}/{page}"}) public String tag(HttpServletRequest request, @PathVariable("tagName") String tagName, @PathVariable("page") Integer page) { PageResult blogPageResult = blogService.getBlogsPageByTag(tagName, page); request.setAttribute("blogPageResult", blogPageResult); request.setAttribute("pageName", "标签"); request.setAttribute("pageUrl", "tag"); request.setAttribute("keyword", tagName); request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1)); request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0)); request.setAttribute("hotTags", tagService.getBlogTagCountForIndex()); request.setAttribute("configurations", configService.getAllConfigs()); return "blog/" + theme + "/list"; } /** * 分类列表页 * * @param request http请求 * @param categoryName 类别名称 * @return java.lang.String */ @GetMapping({"/category/{categoryName}"}) public String category(HttpServletRequest request, @PathVariable("categoryName") String categoryName) { return category(request, categoryName, 1); } /** * 分类列表页(带页码) * * @param request http请求 * @param categoryName 类别名称 * @param page 页码 * @return java.lang.String */ @GetMapping({"/category/{categoryName}/{page}"}) public String category(HttpServletRequest request, @PathVariable("categoryName") String categoryName, @PathVariable("page") Integer page) { PageResult blogPageResult = blogService.getBlogsPageByCategory(categoryName, page); request.setAttribute("blogPageResult", blogPageResult); request.setAttribute("pageName", "分类"); request.setAttribute("pageUrl", "category"); request.setAttribute("keyword", categoryName); request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1)); request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0)); request.setAttribute("hotTags", tagService.getBlogTagCountForIndex()); request.setAttribute("configurations", configService.getAllConfigs()); return "blog/" + theme + "/list"; } /** * 搜索列表页 * * @param request http请求 * @param keyword 关键词 * @return java.lang.String */ @GetMapping({"/search/{keyword}"}) public String search(HttpServletRequest request, @PathVariable("keyword") String keyword) { return search(request, keyword, 1); } /** * 搜索列表页(带页码) * * @param request http请求 * @param keyword 关键词 * @param page 页码 * @return java.lang.String */ @GetMapping({"/search/{keyword}/{page}"}) public String search(HttpServletRequest request, @PathVariable("keyword") String keyword, @PathVariable("page") Integer page) { PageResult blogPageResult = blogService.getBlogsPageBySearch(keyword, page); request.setAttribute("blogPageResult", blogPageResult); request.setAttribute("pageName", "搜索"); request.setAttribute("pageUrl", "search"); request.setAttribute("keyword", keyword); request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1)); request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0)); request.setAttribute("hotTags", tagService.getBlogTagCountForIndex()); request.setAttribute("configurations", configService.getAllConfigs()); return "blog/" + theme + "/list"; } /** * 评论留言 * * @param request http请求 * @param session session * @param blogId 博客id * @param verifyCode 验证码 * @param commentator 评论者昵称 * @param email 邮箱 * @param websiteUrl 留言者的网站 * @param commentBody 评论内容 * @return com.hbu.myblog.util.Result */ @PostMapping(value = "/blog/comment") @ResponseBody public Result comment(HttpServletRequest request, HttpSession session, @RequestParam Long blogId, @RequestParam String verifyCode, @RequestParam String commentator, @RequestParam String email, @RequestParam String websiteUrl, @RequestParam String commentBody) { if (StringUtils.isEmpty(verifyCode)) { return ResultGenerator.genFailResult("验证码不能为空"); } String kaptchaCode = session.getAttribute("verifyCode") + ""; if (StringUtils.isEmpty(kaptchaCode)) { return ResultGenerator.genFailResult("非法请求"); } if (!verifyCode.equals(kaptchaCode)) { return ResultGenerator.genFailResult("验证码错误"); } String ref = request.getHeader("Referer"); if (StringUtils.isEmpty(ref)) { return ResultGenerator.genFailResult("非法请求"); } if (null == blogId || blogId < 0) { return ResultGenerator.genFailResult("非法请求"); } if (StringUtils.isEmpty(commentator)) { return ResultGenerator.genFailResult("请输入称呼"); } if (StringUtils.isEmpty(email)) { return ResultGenerator.genFailResult("请输入邮箱地址"); } if (!PatternUtil.isEmail(email)) { return ResultGenerator.genFailResult("请输入正确的邮箱地址"); } if (StringUtils.isEmpty(commentBody)) { return ResultGenerator.genFailResult("请输入评论内容"); } if (commentBody.trim().length() > 200) { return ResultGenerator.genFailResult("评论内容过长"); } BlogComment comment = new BlogComment(); comment.setBlogId(blogId); comment.setCommentator(MyBlogUtils.cleanString(commentator)); comment.setEmail(email); if (PatternUtil.isURL(websiteUrl)) { comment.setWebsiteUrl(websiteUrl); } comment.setCommentBody(MyBlogUtils.cleanString(commentBody)); return ResultGenerator.genSuccessResult(commentService.addComment(comment)); } }
管理员控制层:
/** * @author yy */ @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 = "/categories/list", method = RequestMethod.GET) @ResponseBody public 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) @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 = "/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 = "/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("删除失败"); } } }
处理管理员界面请求:
/** * 处理管理员界面请求 * * @author yy */ @Controller @RequestMapping("/admin") public class AdminController { @Resource private AdminUserService adminUserService; @Resource private BlogService blogService; @Resource private CategoryService categoryService; @Resource private TagService tagService; @Resource private 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") @ResponseBody public 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") @ResponseBody public 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"; } }
到此这篇关于Java实战个人博客系统的实现流程的文章就介绍到这了,更多相关Java 个人博客系统内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://blog.csdn.net/m0_59687645/article/details/122230965?
上一篇: Java图形化界面编程实现简单计算器
下一篇: Java实战员工绩效管理系统的实现流程
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解
这篇文章主要介绍了Java 8 Stream Collectors 功能与操作方法,结合实例形式详细分析了Java 8 Stream Collectors 功能、操作方法及相关注意事项,需要的朋友可以参考下...2020-05-20- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
- 这篇文章主要介绍了Java线程池中的各个参数如何合理设置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-19
- 在Java中,我们可以利用多线程来最大化地压榨CPU多核计算的能力,下面这篇文章主要给大家介绍了关于java中多线程与线程池基本使用的相关资料,需要的朋友可以参考下...2021-09-13