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

一、项目简述

功能:本系统分用户前台和管理员后台。 用户前台主要功能有: 用户注册 用户登录 浏览帖子 回复帖子 修改个人资料 管理员后台的功能有: 管理论坛版块 用户管理 回复管理;

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。

处理管理员界面请求:

/*** 处理管理员界面请求**/
@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 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("删除失败");}}}

博客内容控制层:

/*** @author 博客*/
@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("删除失败");}}}

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

Java项目:清新论坛系统(java+SSM+mysql+maven+tomcat)相关推荐

  1. 基于javaweb的精品酒店管理系统(java+SSM+mysql+maven+tomcat)

    基于javaweb的精品酒店管理系统(java+SSM+mysql+maven+tomcat) 一.项目简述 功能:主要功能主要功能会员管理,住客管理,房间管 理,系统管理,以及一些重要数据的展示导出 ...

  2. Java项目:医疗药品采购系统(java+SSM+JSP+jQuery+h-ui+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 ssm医疗药品采购系统.主要功能有: 用户管理:管理员列表: 采购管理:采购列表: 药品出库:药品出库: 库存管理:库存统计: 数 ...

  3. Java项目:游戏点评系统(java+SSM+JSP+JavaScript+mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录: 管理员角色包含以下功能: 管理员登录,管理员管理,网站用户管理,游戏 ...

  4. Java项目:停车位租赁系统(java+SSM+JSP+Maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 该系统采用了经典的springmvc,spring,mybatis的框架组合,对于物业公司来说,有助于管理车位信息.系统分为了两个 ...

  5. Java项目茶叶溯源系统(java+SSM+JSP+bootstrap+layUI+mysql)

    项目介绍 茶叶溯源系统,分为前台与后台.普通用户可在前台通过18位的编码查询茶叶的出售历史. 后台分为两种角色,管理员与经销商: 管理员主要功能包括: 主界面: 管理员管理:管理员列表.添加管理员: ...

  6. Java项目:电器商城系统(java+SSM+JSP+jQuery+javascript+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目分为前后台,前台为普通用户登录,后台管理员登录: 管理员角色包含以下功能: 修改个人信息,员工信息管理,商品管理,图片管 ...

  7. Java项目:饰品商城系统(java+SSM+JSP+javascript+jQuery+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目分为前台与后台,有普通用户与管理员两种角色: 管理员角色包含以下功能: 管理员登录,用户管理,一级分类管理,二级分类管理 ...

  8. Java项目:会议室预约系统(java+SSM+HTML+JS+jsp+mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 管理员角色包含以下功能: 管理员登陆,会议室管理,预约审核管理,用户注册等功能. 用户角色包含以下功能: 用户登录,会议室查询 ...

  9. Java项目:化妆品商城系统(java+Springboot+ssm+mysql+jsp+maven)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统主要实现的功能有: 网上商城系统,前台+后台管理,用户注册,登录,上架展示,分组展示,搜索,收货地址管理,购物车管理,添 ...

最新文章

  1. 计算机专业人事制度改革,清华大学计算机系人事制度改革正式启动-清华大学新闻网...
  2. python3-泊松分布
  3. 路由过滤之 Route-map Distribute-list
  4. 我的世界minecraft-Python3.9编程(1)-开发环境配置(1)
  5. c语言中把每个字母向前移1位,C语言:将字符串中的前导*号全部移到字符串的尾部。...
  6. java面试设计模式
  7. java学习(71):GUL边界布局管理器
  8. STM32F0使用LL库实现DMA方式AD采集
  9. mariadb mysql表_mysql/mariadb学习记录——创建删除数据库、表的基本命令
  10. kafka监听topic消费_分布式专题|最近一直死磕kafka设计原理,都肝吐了
  11. 【MyBatis框架】Mybatis开发dao方法第二部分
  12. 【编程语言】Python-Pandas库中的交叉表
  13. 回归模型中截距项的意义_计量经济学第12讲(时间序列计量经济学模型:协整与误差修正模型)...
  14. 2022年国产操作系统发展现状
  15. 诗和远方其实并不遥远
  16. 如何购买银行理财子公司的理财产品?
  17. 英语知识系列:单词中元音字母发音规律
  18. 中国石油大学《高等数学二》第二次在线作业
  19. 假定在使用CSMA/CD协议的10Mb/s以太网中某个站在发送数据时检测到碰撞,执行碰撞算法是选择了随机数R=100 试问这个站需要等待多长时间后才能再次发送数据,如果是100Mb/s的以太网呢?
  20. Directshow完整介绍

热门文章

  1. LINUX UMASK详解
  2. linux系统目录树/内核源码目录树
  3. r-rpm常用命令集
  4. vue.js 源代码学习笔记 ----- 工具方法 lang
  5. 谷歌推出情境感知API
  6. .net下WinDbg使用说明
  7. 使用ASP.NET操作IIS7中使用应用程序
  8. 基础数据结构【四】————环形链表与多项式
  9. android audiotrack使用问题:listener不回调的原因
  10. android mediaplayer状态机