• Java毕业设计MVC:基于SSM实现计算机硬件评测交流平台


    作者主页:编程千纸鹤

    作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

    主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

    收藏点赞不迷路  关注作者有好处

    项目编号:BS-PT-070

    一,项目简介

    计算机硬件在社会上有很多广泛的发烧友,他们急需一个发布专业硬件测评数据的平台并进行交流互动的社区。本次开发实现的计算机硬件交流平台就是作为一个专业的硬件测评平台为这些发烧爱好者服务的。这对于计算机相关硬件产品的普及和硬件测评数据的分享,都起到了很好的作用。

    本平台主要用来发布计算机硬件的评测数据并供广大爱好者交流讨论,计算机的每年有很多的硬件产品出现,这些产品一般会有专门的机构进行相关的测评,也有很多的爱好者关注这些硬件产品的性能,这个开发的平台能够实现硬件评测数据的发布分享,并交由广大爱好者进行在线讨论。

    本系统主要分为系统前端和系统后端,前端主要展示一些评测专员发布的计算机硬件评测的数据信息,广大的爱好者可以在线查看并参与讨论,用户也可以通过相应的分类或文章标签进行查看相关的评测文章。并根据评论信息展示最热的评论贴子,同时提供全文检索和在线留言的功能。也可以在线申请网站链接,后台管理员审核后可以添加外链。后台管理员和评测专员登陆后台系统可以发布相关的评测文章,设置相关的类别和标签,管理相关的讨论信息并进行回复,也可以对评测专员信息进行管理操作。管理员同时可以参加相关的业务模块,展示平台信息,添加友情连接等。

    二,环境介绍

    语言环境:Java:  jdk1.8

    数据库:Mysql: mysql5.7

    应用服务器:Tomcat:  tomcat8.5.31

    开发工具:IDEA或eclipse

    后台开发技术:SSM框架

    前台开发技术:Jquery,Jquery-UI,BootStrap,Ajax,JSP

    三,系统展示

    前端首页

    文章查看及评论

    分类查看硬件评测文章

    在线留言

    文章归档

    评测人员登陆

    后台展示

    评测文章查看

    硬件评测分类管理

    标签管理

    自定义页面

    外链管理

    平台公告

    评论管理

    评测员管理

    平台前端菜单管理

    四,核心代码展示

    1. package com.liuyanzhao.ssm.blog.controller.admin;
    2. import com.liuyanzhao.ssm.blog.entity.Article;
    3. import com.liuyanzhao.ssm.blog.entity.Comment;
    4. import com.liuyanzhao.ssm.blog.entity.User;
    5. import com.liuyanzhao.ssm.blog.service.ArticleService;
    6. import com.liuyanzhao.ssm.blog.service.CommentService;
    7. import com.liuyanzhao.ssm.blog.service.UserService;
    8. import org.json.JSONObject;
    9. import org.springframework.beans.factory.annotation.Autowired;
    10. import org.springframework.stereotype.Controller;
    11. import org.springframework.ui.Model;
    12. import org.springframework.web.bind.annotation.RequestMapping;
    13. import org.springframework.web.bind.annotation.RequestMethod;
    14. import org.springframework.web.bind.annotation.ResponseBody;
    15. import javax.servlet.http.Cookie;
    16. import javax.servlet.http.HttpServletRequest;
    17. import javax.servlet.http.HttpServletResponse;
    18. import javax.servlet.http.HttpSession;
    19. import java.util.Date;
    20. import java.util.HashMap;
    21. import java.util.List;
    22. import java.util.Map;
    23. import static com.liuyanzhao.ssm.blog.util.MyUtils.getIpAddr;
    24. /**
    25. * @author znz
    26. */
    27. @Controller
    28. public class AdminController {
    29. @Autowired
    30. private UserService userService;
    31. @Autowired
    32. private ArticleService articleService;
    33. @Autowired
    34. private CommentService commentService;
    35. /**
    36. * 后台首页
    37. *
    38. * @return
    39. */
    40. @RequestMapping("/admin")
    41. public String index(Model model) {
    42. //文章列表
    43. List
      articleList = articleService.listRecentArticle(5);
    44. model.addAttribute("articleList",articleList);
    45. //评论列表
    46. List commentList = commentService.listRecentComment(5);
    47. model.addAttribute("commentList",commentList);
    48. return "Admin/index";
    49. }
    50. /**
    51. * 登录页面显示
    52. *
    53. * @return
    54. */
    55. @RequestMapping("/login")
    56. public String loginPage() {
    57. return "Admin/login";
    58. }
    59. /**
    60. * 登录验证
    61. *
    62. * @param request
    63. * @param response
    64. * @return
    65. */
    66. @RequestMapping(value = "/loginVerify",method = RequestMethod.POST)
    67. @ResponseBody
    68. public String loginVerify(HttpServletRequest request, HttpServletResponse response) {
    69. Map map = new HashMap();
    70. String username = request.getParameter("username");
    71. String password = request.getParameter("password");
    72. String rememberme = request.getParameter("rememberme");
    73. User user = userService.getUserByNameOrEmail(username);
    74. if(user==null) {
    75. map.put("code",0);
    76. map.put("msg","用户名无效!");
    77. } else if(!user.getUserPass().equals(password)) {
    78. map.put("code",0);
    79. map.put("msg","密码错误!");
    80. } else {
    81. //登录成功
    82. map.put("code",1);
    83. map.put("msg","");
    84. //添加session
    85. request.getSession().setAttribute("user", user);
    86. //添加cookie
    87. if(rememberme!=null) {
    88. //创建两个Cookie对象
    89. Cookie nameCookie = new Cookie("username", username);
    90. //设置Cookie的有效期为3天
    91. nameCookie.setMaxAge(60 * 60 * 24 * 3);
    92. Cookie pwdCookie = new Cookie("password", password);
    93. pwdCookie.setMaxAge(60 * 60 * 24 * 3);
    94. response.addCookie(nameCookie);
    95. response.addCookie(pwdCookie);
    96. }
    97. user.setUserLastLoginTime(new Date());
    98. user.setUserLastLoginIp(getIpAddr(request));
    99. userService.updateUser(user);
    100. }
    101. String result = new JSONObject(map).toString();
    102. return result;
    103. }
    104. /**
    105. * 退出登录
    106. *
    107. * @param session
    108. * @return
    109. */
    110. @RequestMapping(value = "/admin/logout")
    111. public String logout(HttpSession session) {
    112. session.removeAttribute("user");
    113. session.invalidate();
    114. return "redirect:/login";
    115. }
    116. }

    1. package com.znz.ssm.blog.controller.admin;
    2. import cn.hutool.http.HtmlUtil;
    3. import com.github.pagehelper.PageInfo;
    4. import com.znz.ssm.blog.dto.ArticleParam;
    5. import com.znz.ssm.blog.entity.Article;
    6. import com.znz.ssm.blog.service.ArticleService;
    7. import com.znz.ssm.blog.service.CategoryService;
    8. import com.znz.ssm.blog.service.TagService;
    9. import com.znz.ssm.blog.entity.Category;
    10. import com.znz.ssm.blog.entity.Tag;
    11. import com.znz.ssm.blog.entity.User;
    12. import org.springframework.beans.factory.annotation.Autowired;
    13. import org.springframework.stereotype.Controller;
    14. import org.springframework.ui.Model;
    15. import org.springframework.web.bind.annotation.PathVariable;
    16. import org.springframework.web.bind.annotation.RequestMapping;
    17. import org.springframework.web.bind.annotation.RequestMethod;
    18. import org.springframework.web.bind.annotation.RequestParam;
    19. import org.springframework.web.servlet.ModelAndView;
    20. import javax.servlet.http.HttpSession;
    21. import java.util.ArrayList;
    22. import java.util.HashMap;
    23. import java.util.List;
    24. /**
    25. * @author znz
    26. */
    27. @Controller
    28. @RequestMapping("/admin/article")
    29. public class BackArticleController {
    30. @Autowired
    31. private ArticleService articleService;
    32. @Autowired
    33. private TagService tagService;
    34. @Autowired
    35. private CategoryService categoryService;
    36. /**
    37. * 后台文章列表显示
    38. *
    39. * @return modelAndView
    40. */
    41. @RequestMapping(value = "")
    42. public String index(@RequestParam(required = false, defaultValue = "1") Integer pageIndex,
    43. @RequestParam(required = false, defaultValue = "10") Integer pageSize,
    44. @RequestParam(required = false) String status, Model model) {
    45. HashMap criteria = new HashMap<>(1);
    46. if (status == null) {
    47. model.addAttribute("pageUrlPrefix", "/admin/article?pageIndex");
    48. } else {
    49. criteria.put("status", status);
    50. model.addAttribute("pageUrlPrefix", "/admin/article?status=" + status + "&pageIndex");
    51. }
    52. PageInfo
      articlePageInfo = articleService.pageArticle(pageIndex, pageSize, criteria);
    53. model.addAttribute("pageInfo", articlePageInfo);
    54. return "Admin/Article/index";
    55. }
    56. /**
    57. * 后台添加文章页面显示
    58. *
    59. * @return
    60. */
    61. @RequestMapping(value = "/insert")
    62. public String insertArticleView(Model model) {
    63. List categoryList = categoryService.listCategory();
    64. List tagList = tagService.listTag();
    65. model.addAttribute("categoryList", categoryList);
    66. model.addAttribute("tagList", tagList);
    67. return "Admin/Article/insert";
    68. }
    69. /**
    70. * 后台添加文章提交操作
    71. *
    72. * @param articleParam
    73. * @return
    74. */
    75. @RequestMapping(value = "/insertSubmit", method = RequestMethod.POST)
    76. public String insertArticleSubmit(HttpSession session, ArticleParam articleParam) {
    77. Article article = new Article();
    78. //用户ID
    79. User user = (User) session.getAttribute("user");
    80. if (user != null) {
    81. article.setArticleUserId(user.getUserId());
    82. }
    83. article.setArticleTitle(articleParam.getArticleTitle());
    84. //文章摘要
    85. int summaryLength = 150;
    86. String summaryText = HtmlUtil.cleanHtmlTag(articleParam.getArticleContent());
    87. if (summaryText.length() > summaryLength) {
    88. String summary = summaryText.substring(0, summaryLength);
    89. article.setArticleSummary(summary);
    90. } else {
    91. article.setArticleSummary(summaryText);
    92. }
    93. article.setArticleContent(articleParam.getArticleContent());
    94. article.setArticleStatus(articleParam.getArticleStatus());
    95. //填充分类
    96. List categoryList = new ArrayList<>();
    97. if (articleParam.getArticleChildCategoryId() != null) {
    98. categoryList.add(new Category(articleParam.getArticleParentCategoryId()));
    99. }
    100. if (articleParam.getArticleChildCategoryId() != null) {
    101. categoryList.add(new Category(articleParam.getArticleChildCategoryId()));
    102. }
    103. article.setCategoryList(categoryList);
    104. //填充标签
    105. List tagList = new ArrayList<>();
    106. if (articleParam.getArticleTagIds() != null) {
    107. for (int i = 0; i < articleParam.getArticleTagIds().size(); i++) {
    108. Tag tag = new Tag(articleParam.getArticleTagIds().get(i));
    109. tagList.add(tag);
    110. }
    111. }
    112. article.setTagList(tagList);
    113. articleService.insertArticle(article);
    114. return "redirect:/admin/article";
    115. }
    116. /**
    117. * 删除文章
    118. *
    119. * @param id 文章ID
    120. */
    121. @RequestMapping(value = "/delete/{id}")
    122. public void deleteArticle(@PathVariable("id") Integer id) {
    123. articleService.deleteArticle(id);
    124. }
    125. /**
    126. * 编辑文章页面显示
    127. *
    128. * @param id
    129. * @return
    130. */
    131. @RequestMapping(value = "/edit/{id}")
    132. public ModelAndView editArticleView(@PathVariable("id") Integer id) {
    133. ModelAndView modelAndView = new ModelAndView();
    134. Article article = articleService.getArticleByStatusAndId(null, id);
    135. modelAndView.addObject("article", article);
    136. List categoryList = categoryService.listCategory();
    137. modelAndView.addObject("categoryList", categoryList);
    138. List tagList = tagService.listTag();
    139. modelAndView.addObject("tagList", tagList);
    140. modelAndView.setViewName("Admin/Article/edit");
    141. return modelAndView;
    142. }
    143. /**
    144. * 编辑文章提交
    145. *
    146. * @param articleParam
    147. * @return
    148. */
    149. @RequestMapping(value = "/editSubmit", method = RequestMethod.POST)
    150. public String editArticleSubmit(ArticleParam articleParam) {
    151. Article article = new Article();
    152. article.setArticleId(articleParam.getArticleId());
    153. article.setArticleTitle(articleParam.getArticleTitle());
    154. article.setArticleContent(articleParam.getArticleContent());
    155. article.setArticleStatus(articleParam.getArticleStatus());
    156. //文章摘要
    157. int summaryLength = 150;
    158. String summaryText = HtmlUtil.cleanHtmlTag(article.getArticleContent());
    159. if (summaryText.length() > summaryLength) {
    160. String summary = summaryText.substring(0, summaryLength);
    161. article.setArticleSummary(summary);
    162. } else {
    163. article.setArticleSummary(summaryText);
    164. }
    165. //填充分类
    166. List categoryList = new ArrayList<>();
    167. if (articleParam.getArticleChildCategoryId() != null) {
    168. categoryList.add(new Category(articleParam.getArticleParentCategoryId()));
    169. }
    170. if (articleParam.getArticleChildCategoryId() != null) {
    171. categoryList.add(new Category(articleParam.getArticleChildCategoryId()));
    172. }
    173. article.setCategoryList(categoryList);
    174. //填充标签
    175. List tagList = new ArrayList<>();
    176. if (articleParam.getArticleTagIds() != null) {
    177. for (int i = 0; i < articleParam.getArticleTagIds().size(); i++) {
    178. Tag tag = new Tag(articleParam.getArticleTagIds().get(i));
    179. tagList.add(tag);
    180. }
    181. }
    182. article.setTagList(tagList);
    183. articleService.updateArticleDetail(article);
    184. return "redirect:/admin/article";
    185. }
    186. }

    1. package com.znz.ssm.blog.controller.admin;
    2. import com.znz.ssm.blog.entity.Category;
    3. import com.znz.ssm.blog.service.ArticleService;
    4. import com.znz.ssm.blog.service.CategoryService;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.PathVariable;
    8. import org.springframework.web.bind.annotation.RequestMapping;
    9. import org.springframework.web.bind.annotation.RequestMethod;
    10. import org.springframework.web.servlet.ModelAndView;
    11. import java.util.List;
    12. /**
    13. * @author znz
    14. */
    15. @Controller
    16. @RequestMapping("/admin/category")
    17. public class BackCategoryController {
    18. @Autowired
    19. private ArticleService articleService;
    20. @Autowired
    21. private CategoryService categoryService;
    22. /**
    23. * 后台分类列表显示
    24. *
    25. * @return
    26. */
    27. @RequestMapping(value = "")
    28. public ModelAndView categoryList() {
    29. ModelAndView modelandview = new ModelAndView();
    30. List categoryList = categoryService.listCategoryWithCount();
    31. modelandview.addObject("categoryList",categoryList);
    32. modelandview.setViewName("Admin/Category/index");
    33. return modelandview;
    34. }
    35. /**
    36. * 后台添加分类提交
    37. *
    38. * @param category
    39. * @return
    40. */
    41. @RequestMapping(value = "/insertSubmit",method = RequestMethod.POST)
    42. public String insertCategorySubmit(Category category) {
    43. categoryService.insertCategory(category);
    44. return "redirect:/admin/category";
    45. }
    46. /**
    47. * 删除分类
    48. *
    49. * @param id
    50. * @return
    51. */
    52. @RequestMapping(value = "/delete/{id}")
    53. public String deleteCategory(@PathVariable("id") Integer id) {
    54. //禁止删除有文章的分类
    55. int count = articleService.countArticleByCategoryId(id);
    56. if (count == 0) {
    57. categoryService.deleteCategory(id);
    58. }
    59. return "redirect:/admin/category";
    60. }
    61. /**
    62. * 编辑分类页面显示
    63. *
    64. * @param id
    65. * @return
    66. */
    67. @RequestMapping(value = "/edit/{id}")
    68. public ModelAndView editCategoryView(@PathVariable("id") Integer id) {
    69. ModelAndView modelAndView = new ModelAndView();
    70. Category category = categoryService.getCategoryById(id);
    71. modelAndView.addObject("category",category);
    72. List categoryList = categoryService.listCategoryWithCount();
    73. modelAndView.addObject("categoryList",categoryList);
    74. modelAndView.setViewName("Admin/Category/edit");
    75. return modelAndView;
    76. }
    77. /**
    78. * 编辑分类提交
    79. *
    80. * @param category 分类
    81. * @return 重定向
    82. */
    83. @RequestMapping(value = "/editSubmit",method = RequestMethod.POST)
    84. public String editCategorySubmit(Category category) {
    85. categoryService.updateCategory(category);
    86. return "redirect:/admin/category";
    87. }
    88. }

    五,项目总结

    目前在移互联网的冲击下,传统的互联网在线沟通的方式似乎已经处于消亡的边缘,替而代之的是现在火爆的即时聊天,在线视频等等工具。而这种通过语音和视频进行聊天沟通的方式虽然简洁方便,但更适合于个体间的一对一交流,虽然相寻找共同的社群群体来讲,如果想就某一主题进行持续性讨论,并自主发表自己的意见,传统的社区交流论坛形式仍然是不可或缺的。

    在最早的时候,论坛社区仅是起到公布一些股市以及公司即时信息的作用,但随着时代的发展,现在的它,内容已经达到了无所不含的程度,上到国家大事、专业领域,下到日常生活,衣食住行,各式各样的交流论坛让人目不暇接,其适用范围的广泛使其成为了当今交流社区的核心。由静态到动态的发展让社区论坛[4]更好的实现了用户之间的交流。

  • 相关阅读:
    Leetcode——1636. 按照频率将数组升序排序
    数据库防火墙技术展望【终章】
    PY32F003F18P单片机概述
    2024年天津财经大学珠江学院专升本预计新增金融学招生专业
    WPF中DataContext作用
    【audio】alsa pcm音频路径
    CDN加速在目前网络安全里的重要性
    Javaweb三大组件知识点记录
    CSP 202109-1 数值推导
    Vmware16安装Centos7
  • 原文地址:https://blog.csdn.net/BS009/article/details/127937820