选课推荐交流平台系统基于java ssm springboot实现

夏天到了、小雪来给大家降降温

选课推荐交流平台系统基于java ssm springboot实现_第1张图片

话不多说、直接进入主题

主要功能模块设计:

登录注册、首页信息浏览、选课分类查看、选课详情查看、评论交流、收藏、浏览量、以及后台数据管理、用户管理、选课类别管理、选课信息详情管理、评论交流和回复管理、以及公告信息管理等

主要技术:

Java、springmvc、mybatis、mysql、tomcat、jquery、layui、JavaScript、html、css、jsp、log4j等一些常见的基本技术。

主要功能实现前端:

选课平台首页:

输入http://localhost/访问选课推荐交流平台首页、可以查看轮播图以及各类信息、点击进入详情页面

选课推荐交流平台系统基于java ssm springboot实现_第2张图片

选课推荐交流平台系统基于java ssm springboot实现_第3张图片

登录注册管理:

选课推荐交流平台系统基于java ssm springboot实现_第4张图片

选课推荐分类:

点击查看分类课程推荐信息、按照类别查看课程信息、管理员可以在后台添加课程分类信息

以及根据访问量来进行点击排行、

选课推荐交流平台系统基于java ssm springboot实现_第5张图片

课程详情信息:

课程详情可以查看课程详情信息以及作者信息和浏览量等具体数据、也可以进行评论和收藏等操作

选课推荐交流平台系统基于java ssm springboot实现_第6张图片

选课推荐交流平台系统基于java ssm springboot实现_第7张图片

我的个人中心:

包括我的个人信息和收藏夹信息、

选课推荐交流平台系统基于java ssm springboot实现_第8张图片

主要功能实现后台:

系统主页设计:

主要功能模块有首页的信息统计、选课类型管理、选课详情管理、用户管理、评论和公告管理等数据维护。

选课推荐交流平台系统基于java ssm springboot实现_第9张图片

选课类型管理:

选课推荐交流平台系统基于java ssm springboot实现_第10张图片

选课信息详情管理:

列表信息查看添加修改删除以及检索等操作

选课推荐交流平台系统基于java ssm springboot实现_第11张图片

详情信息

选课推荐交流平台系统基于java ssm springboot实现_第12张图片

通知公告信息:

数据列表查看和添加修改删除等操作

选课推荐交流平台系统基于java ssm springboot实现_第13张图片

用户信息管理:

选课推荐交流平台系统基于java ssm springboot实现_第14张图片

评论交流回复管理:

评论和回复的数据管理

选课推荐交流平台系统基于java ssm springboot实现_第15张图片

部分关键代码展示:

登录模块:

package com.longwang.controller;
 
import com.longwang.entity.Article;
import com.longwang.entity.Classify;
import com.longwang.entity.User;
import com.longwang.service.ArticleService;
import com.longwang.service.ClassifyService;
import com.longwang.service.NoticeService;
import com.longwang.service.UserService;
import com.longwang.util.DateUtil;
import com.longwang.util.StringUtil;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.util.*;
 
/**
 * 根路径以及其他请求处理
 * 
 * @author 李杨勇
 *
 */
@Controller
public class IndexController {
 
  @Value("${imageFilePath}")
  private String imageFilePath; // 文件路径
 
  @Resource
  private NoticeService noticeService;
 
  @Resource
  private UserService userService;
 
  @Resource
  private ArticleService articleService;
  @Resource
  private ClassifyService classifyService;
 
 
 
  @RequestMapping("/")
  public String index(HttpSession session) {
 
    // 查询公告
    session.setAttribute("noticeList", noticeService.list(0, 5));
    return "index";// 跳转到index.html
  }
 
 
  @RequestMapping("/delete")
  public Map delete(Integer userId) {
    Map resultMap = new HashMap();
    userService.delete(userId);
    resultMap.put("errorNo", 0);
    return resultMap;
  }
  /**
   * 登录页面
   * 
   * @return
   */
  @RequestMapping("/login")
  public String login() {
    return "login";
  }
 
  /**
   * 前台登录页面
   * 
   * @return
   */
  @RequestMapping("/webLogin")
  public String webLogin() {
    return "webLogin";
  }
 
  /**
   * 注册
   * 
   * @return
   */
  @RequestMapping("/regist")
  public String regist() {
    return "regist";
  }
 
  /**
   * 保存注册信息
   * 
   * @param user
   * @return
   */
  @RequestMapping("/saveUser")
  public String saveUser(User user) {
      List
randomArticle = articleService.getRandomArticle(3); String ids=""; for (int i = 0; i < randomArticle.size(); i++) { Integer articleId = randomArticle.get(i).getArticleId(); ids+=articleId+","; } ids = ids.substring(0, ids.length() -1); user.setArticleIds(ids); userService.save(user); return "webLogin"; } /** * 退出登录 * * @param request * @return */ @RequestMapping("/quit") public String quit(HttpServletRequest request) { HttpSession session = request.getSession(); session.removeAttribute("user"); return "index"; } /** * 退出登录 * * @param request * @return */ @RequestMapping("/quitAdmin") public String quitAdmin(HttpServletRequest request) { HttpSession session = request.getSession(); session.removeAttribute("user"); return "login"; } /** * 验证登录 * * @param user * @param request * @return */ @RequestMapping("/checkLogin") public ModelAndView checkLogin(User user, HttpServletRequest request) { ModelAndView mav = new ModelAndView(); HttpSession session = request.getSession(); User u = userService.findByUsernameAndPassword(user.getUsername(), user.getPassword()); if (u == null) { mav.addObject("user", user); mav.addObject("errorInfo", "用户名或者密码错误!"); mav.setViewName("webLogin"); } else { u.setLatelyLoginTime(new Date()); userService.save(u); session.setAttribute("user", u); mav.addObject("username", u.getUsername()); mav.addObject("user", u); mav.addObject("success", true); mav.setViewName("/index"); } return mav; } /** * 查看个人信息 * * @return */ @RequestMapping("viewPerson") public ModelAndView viewPerson(HttpServletRequest request) { User user = (User) request.getSession().getAttribute("user"); ModelAndView mav = new ModelAndView(); User u = userService.findById(user.getUserId()); mav.addObject("user", u); mav.setViewName("/viewPerson"); return mav; } /** * 查看个人课程收藏夹 * * @return */ @RequestMapping("viewCollection") public ModelAndView viewCollection(HttpServletRequest request, HttpSession session) { User user = (User) request.getSession().getAttribute("user"); ModelAndView mav = new ModelAndView(); User u = userService.findById(user.getUserId()); String artIds = u.getArticleIds(); List result = new ArrayList<>(); if (StringUtils.isNotBlank(artIds)) { result = Arrays.asList(StringUtils.split(artIds, ",")); } List retIds = new ArrayList<>(); for (String temp : result) { retIds.add(Integer.valueOf(temp).intValue()); } List
retArt = articleService.findByListId(retIds); session.setAttribute("noticeList", noticeService.list(0, 5)); mav.addObject("retArt", retArt); mav.addObject("user", u); mav.setViewName("/viewCollection"); return mav; } /** * 查看个人关注用户 * * @return */ @RequestMapping("viewFocusUser") public ModelAndView viewFocusUser(HttpServletRequest request, HttpSession session) { User user = (User) request.getSession().getAttribute("user"); ModelAndView mav = new ModelAndView(); User u = userService.findById(user.getUserId()); String userIds = u.getUserIds(); List result = new ArrayList<>(); if (StringUtils.isNotBlank(userIds)) { result = Arrays.asList(StringUtils.split(userIds, ",")); } List retIds = new ArrayList<>(); for (String temp : result) { retIds.add(Integer.valueOf(temp).intValue()); } List retArt = userService.findByListId(retIds); session.setAttribute("noticeList", noticeService.list(0, 5)); mav.addObject("retArt", retArt); mav.addObject("user", u); mav.setViewName("/viewFocusUser"); return mav; } /** * 保存用户信息 * * @param user * @return */ @RequestMapping("/save") public ModelAndView save(User user) { ModelAndView mav = new ModelAndView(); userService.save(user); mav.setViewName("/index"); return mav; } /** * 写笔记页面 * * @param request * @return */ // @RequestMapping("notePage") // public String notePage(HttpServletRequest request, Model model) { // User user = (User) request.getSession().getAttribute("user"); // if (user == null) { // return "webLogin"; // } // List list = classifyService.findAll(); // model.addAttribute("list", list); // return "one"; // } @RequestMapping("notePage") public ModelAndView notePage(HttpServletRequest request) { ModelAndView mav = new ModelAndView(); User user = (User) request.getSession().getAttribute("user"); if (user == null) { mav.setViewName("/webLogin"); return mav; } List list = classifyService.findAll(); mav.addObject("list", list); mav.setViewName("/one"); return mav; } /** * 保存笔记 * * @param article * @param request * @return */ @RequestMapping("addNote") public ModelAndView addNote(Article article, HttpServletRequest request) { ModelAndView mav = new ModelAndView(); // 获取当前用户信息 User user = (User) request.getSession().getAttribute("user"); article.setUserId(user.getUserId()); article.setPublishDate(new Date()); article.setClick(0); article.setCommentNum(0); article.setContentNoTag(StringUtil.Html2Text(article.getContent())); articleService.save(article); mav.setViewName("/index"); return mav; } @RequestMapping("saveNote") public ModelAndView saveNote(Article article, HttpServletRequest request) { ModelAndView mav = new ModelAndView(); Article a = articleService.findById(article.getArticleId()); article.setPublishDate(a.getPublishDate()); // 获取当前用户信息 articleService.save(article); mav.setViewName("/index"); return mav; } /** * 查看笔记 * * @return */ @RequestMapping("viewNote") public String viewNote(HttpSession session) { session.setAttribute("noticeList", noticeService.list(0, 5)); return "mylist"; } @RequestMapping("/delete/{id}") public String delete(@PathVariable(value = "id") String id) throws Exception { articleService.delete(Integer.parseInt(id)); return "mylist"; } /** * 查看个人笔记加载数据列表 * * @param article * @param publishDates * @param page * @param pageSize * @return */ @RequestMapping("/mylist") public Map list(Article article, @RequestParam(value = "publishDates", required = false) String publishDates, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "pageSize", required = false) Integer pageSize, HttpServletRequest request) { Map resultMap = new HashMap(); // User user = (User) request.getSession().getAttribute("user"); // article.setUserId(user.getUserId()); String s_bPublishDate = null; // 开始时间 String s_ePublishDate = null; // 结束时间 if (StringUtil.isNotEmpty(publishDates)) { String[] strs = publishDates.split(" - "); // 拆分时间段 s_bPublishDate = strs[0]; s_ePublishDate = strs[1]; } Long total = articleService.getCount(article, s_bPublishDate, s_ePublishDate); int totalPage = (int) (total % pageSize == 0 ? total / pageSize : total / pageSize + 1); // 总页数 resultMap.put("totalPage", totalPage); resultMap.put("errorNo", 0); resultMap.put("data", articleService.list(article, s_bPublishDate, s_ePublishDate, page - 1, pageSize)); resultMap.put("total", total); return resultMap; } /** * 后台默认首页 * * @return */ @RequestMapping("/index") public String root() { return "/common/index"; } /** * 博主信息页面 * * @return */ @RequestMapping("/blogger") public String blogger() { return "/blogger/index"; } /** * 图片上传处理 @Title: ckeditorUpload @param file 图片文件 @return 参数说明 @return * Map 返回类型 @throws */ @ResponseBody @RequestMapping("/upload") public Map ckeditorUpload(@RequestParam("file") MultipartFile file) { Map resultMap = new HashMap(); Map resultMap1 = new HashMap(); String fileName = file.getOriginalFilename(); // 获取文件名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 获取文件的后缀 String newFileName = ""; try { newFileName = DateUtil.getCurrentDateStr() + suffixName; // 新文件名 FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imageFilePath + newFileName)); // 上传 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } resultMap.put("code", 0); resultMap1.put("filePath", newFileName); resultMap.put("data", resultMap1); return resultMap; } }

配置模块:

server: 
  port: 80
  servlet:
    context-path: /
  
spring: 
  datasource: 
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/choosing_courses?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    database-platform: org.hibernate.dialect.MySQLDialect
  thymeleaf:
    cache: false
 
thymeleaf:
    prefix: classpath:/templates/
 
MD5Salt: longwang
 
 
imageFilePath: C:\\Users\\Administrator\\Desktop\\choosingCourses\\src\\main\\webapp\\static\\images\\
downloadImagePath:  C:\\Users\\Administrator\\Desktop\\choosingCourses\\src\\main\\webapp
lucenePath: C:\\Users\\Administrator\\Desktop\\choosingCourses\\lucene
 
 

主要表设计:

用户表:

CREATE TABLE `NewTable` (
`user_id`  int(11) NOT NULL AUTO_INCREMENT ,
`head_portrait`  varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`lately_login_time`  datetime NULL DEFAULT NULL ,
`nickname`  varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`registration_date`  datetime NULL DEFAULT NULL ,
`sex`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`open_id`  varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`username`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`article_ids`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`birthday`  date NULL DEFAULT NULL ,
`momo`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`phone`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`user_ids`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=20
ROW_FORMAT=COMPACT
;
 

选课类型表:

CREATE TABLE `NewTable` (
`classify_id`  int(11) NOT NULL AUTO_INCREMENT ,
`classify_name`  varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL ,
PRIMARY KEY (`classify_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=27
ROW_FORMAT=COMPACT
;
 

选课详情表:

CREATE TABLE `NewTable` (
`article_id`  int(11) NOT NULL AUTO_INCREMENT ,
`author`  varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL ,
`click`  int(11) NULL DEFAULT NULL ,
`comment_num`  int(11) NULL DEFAULT NULL ,
`content`  text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL ,
`image_name`  varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL ,
`is_original`  int(11) NULL DEFAULT NULL ,
`is_top`  int(11) NULL DEFAULT NULL ,
`publish_date`  datetime NULL DEFAULT NULL ,
`title`  varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL ,
`classify_id`  int(11) NULL DEFAULT NULL ,
`user_id`  int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`article_id`),
FOREIGN KEY (`classify_id`) REFERENCES `t_classify` (`classify_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
INDEX `FKo4fros4yfq1m9ay7sgtlcvbc4` (`classify_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=58
ROW_FORMAT=COMPACT
;
 

评论交流表:

CREATE TABLE `NewTable` (
`comment_id`  int(11) NOT NULL AUTO_INCREMENT ,
`comment_date`  datetime NULL DEFAULT NULL ,
`content`  varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL ,
`article_id`  int(11) NULL DEFAULT NULL ,
`user_id`  int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`comment_id`),
FOREIGN KEY (`article_id`) REFERENCES `t_article` (`article_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
FOREIGN KEY (`user_id`) REFERENCES `t_user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
INDEX `FKlsvvc2ob8lxg2m9qqry15ru0y` (`article_id`) USING BTREE ,
INDEX `FKtamaoacctq4qpko6bvtv0ke1p` (`user_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=15
ROW_FORMAT=COMPACT
;
 

回复信息表:

CREATE TABLE `NewTable` (
`reply_id`  int(11) NOT NULL AUTO_INCREMENT ,
`content`  varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL ,
`reply_date`  datetime NULL DEFAULT NULL ,
`comment_id`  int(11) NULL DEFAULT NULL ,
`user_id`  int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`reply_id`),
FOREIGN KEY (`comment_id`) REFERENCES `t_comment` (`comment_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
FOREIGN KEY (`user_id`) REFERENCES `t_user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
INDEX `FKk4ydp71wampdbnguly8iks4rf` (`comment_id`) USING BTREE ,
INDEX `FKslt6r79iw1p9cbxns09erjv6v` (`user_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=6
ROW_FORMAT=COMPACT
;
 

到此这篇关于选课推荐交流平台系统基于java ssm springboot实现的文章就介绍到这了,更多相关交流平台系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(选课推荐交流平台系统基于java ssm springboot实现)