基于java ssm springboot實現(xiàn)選課推薦交流平臺系統(tǒng)
夏天到了、小雪來給大家降降溫

話不多說、直接進入主題
主要功能模塊設(shè)計:
登錄注冊、首頁信息瀏覽、選課分類查看、選課詳情查看、評論交流、收藏、瀏覽量、以及后臺數(shù)據(jù)管理、用戶管理、選課類別管理、選課信息詳情管理、評論交流和回復(fù)管理、以及公告信息管理等
主要技術(shù):
Java、springmvc、mybatis、mysql、tomcat、jquery、layui、JavaScript、html、css、jsp、log4j等一些常見的基本技術(shù)。
主要功能實現(xiàn)前端:
選課平臺首頁:
輸入http://localhost/訪問選課推薦交流平臺首頁、可以查看輪播圖以及各類信息、點擊進入詳情頁面


登錄注冊管理:

選課推薦分類:
點擊查看分類課程推薦信息、按照類別查看課程信息、管理員可以在后臺添加課程分類信息
以及根據(jù)訪問量來進行點擊排行、

課程詳情信息:
課程詳情可以查看課程詳情信息以及作者信息和瀏覽量等具體數(shù)據(jù)、也可以進行評論和收藏等操作


我的個人中心:
包括我的個人信息和收藏夾信息、

主要功能實現(xiàn)后臺:
系統(tǒng)主頁設(shè)計:
主要功能模塊有首頁的信息統(tǒng)計、選課類型管理、選課詳情管理、用戶管理、評論和公告管理等數(shù)據(jù)維護。

選課類型管理:

選課信息詳情管理:
列表信息查看添加修改刪除以及檢索等操作

詳情信息

通知公告信息:
數(shù)據(jù)列表查看和添加修改刪除等操作

用戶信息管理:

評論交流回復(fù)管理:
評論和回復(fù)的數(shù)據(jù)管理

部分關(guān)鍵代碼展示:
登錄模塊:
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";// 跳轉(zhuǎn)到index.html
}
@RequestMapping("/delete")
public Map<String, Object> delete(Integer userId) {
Map<String, Object> resultMap = new HashMap<String, Object>();
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<Article> 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<String> result = new ArrayList<>();
if (StringUtils.isNotBlank(artIds)) {
result = Arrays.asList(StringUtils.split(artIds, ","));
}
List<Integer> retIds = new ArrayList<>();
for (String temp : result) {
retIds.add(Integer.valueOf(temp).intValue());
}
List<Article> retArt = articleService.findByListId(retIds);
session.setAttribute("noticeList", noticeService.list(0, 5));
mav.addObject("retArt", retArt);
mav.addObject("user", u);
mav.setViewName("/viewCollection");
return mav;
}
/**
* 查看個人關(guān)注用戶
*
* @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<String> result = new ArrayList<>();
if (StringUtils.isNotBlank(userIds)) {
result = Arrays.asList(StringUtils.split(userIds, ","));
}
List<Integer> retIds = new ArrayList<>();
for (String temp : result) {
retIds.add(Integer.valueOf(temp).intValue());
}
List<User> 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<Classify> 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<Classify> 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();
// 獲取當(dāng)前用戶信息
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());
// 獲取當(dāng)前用戶信息
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";
}
/**
* 查看個人筆記加載數(shù)據(jù)列表
*
* @param article
* @param publishDates
* @param page
* @param pageSize
* @return
*/
@RequestMapping("/mylist")
public Map<String, Object> 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<String, Object> resultMap = new HashMap<String, Object>();
// User user = (User) request.getSession().getAttribute("user");
// article.setUserId(user.getUserId());
String s_bPublishDate = null; // 開始時間
String s_ePublishDate = null; // 結(jié)束時間
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); // 總頁數(shù)
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;
}
/**
* 后臺默認(rèn)首頁
*
* @return
*/
@RequestMapping("/index")
public String root() {
return "/common/index";
}
/**
* 博主信息頁面
*
* @return
*/
@RequestMapping("/blogger")
public String blogger() {
return "/blogger/index";
}
/**
* 圖片上傳處理 @Title: ckeditorUpload @param file 圖片文件 @return 參數(shù)說明 @return
* Map<String,Object> 返回類型 @throws
*/
@ResponseBody
@RequestMapping("/upload")
public Map<String, Object> ckeditorUpload(@RequestParam("file") MultipartFile file) {
Map<String, Object> resultMap = new HashMap<String, Object>();
Map<String, Object> resultMap1 = new HashMap<String, Object>();
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
主要表設(shè)計:
用戶表:
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 ;
回復(fù)信息表:
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 ;
到此這篇關(guān)于選課推薦交流平臺系統(tǒng)基于java ssm springboot實現(xiàn)的文章就介紹到這了,更多相關(guān)交流平臺系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA2022搭建Spring?Cloud多模塊項目的詳細(xì)過程
這篇文章主要介紹了IDEA2022搭建Spring?Cloud多模塊項目,網(wǎng)上有很多教程父模塊都是通過maven的方式創(chuàng)建的,然后子模塊是通過Spring?Initalizr方式創(chuàng)建,這種方式父模塊無法管理子模塊的依賴仲裁,需要每個子模塊自行管理,就失去了父模塊的用處了2022-10-10
Java畢業(yè)設(shè)計實戰(zhàn)之平行志愿管理系統(tǒng)的實現(xiàn)
這是一個使用了java+Springboot+Maven+mybatis+Vue+Mysql開發(fā)的圖片平行志愿管理系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有志愿管理該有的所有功能,感興趣的朋友快來看看吧2022-02-02

