基于javaweb的SpringBoot在线课程会员系统(java+springboot+maven+jsp+spring+mysql+layui)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

530023102402

540023102402

550023102402

560023102402

570023102402

基于javaweb的SpringBoot在线课程会员系统(java+springboot+maven+jsp+spring+mysql+layui)

一、项目简述 功能包括: 用户管理,课程管理,在线视频观看,评论,会员展示,会员充值等等。

二、项目运行 环境配置:

Jdk1.8 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)

项目技术:

JSP +Spring + SpringBoot + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
	userBiz.updateByPrimaryKeySelective(user);
Map map = new HashMap<String, String>();
map.put("username", loginUser.getUsername());
map.put("password", loginUser.getPassword());
session.setAttribute("loginUser", userBiz.selectLoginUser(map));
setlog(loginUser, req.getRemoteAddr(), "个人信息更改");
return "redirect:course";

}

@RequestMapping(value = "vip")
// vip购买 0为1个月,1为半年,2为一年
public void Vip(HttpSession session, int viptype, HttpServletResponse response, HttpServletRequest req)
throws IOException {
String data = "已经成功充值";
User loginUser = (User) session.getAttribute("loginUser");
if (loginUser == null) {
// return "login";
}
List<Review> reviews = reviewBiz.selectbyuserid(loginUser.getUsername());
int collect = loginUser.getCollect();
boolean isvip = false;
Date date = new Date();
Date vipdate = loginUser.getVip();
if (vipdate == null||vipdate.getTime() < date.getTime()) {
loginUser.setVip(new Date());
}
switch (viptype){
default:
data = "请求错误!";
break;
case 0:
if (collect < 500) {
data = "余额不足,请联系管理员充值!";
} else {
loginUser.setCollect(collect - 500);
vipdate = loginUser.getVip();
vipdate.setMonth(vipdate.getMonth() + 1);
loginUser.setVip(vipdate);
isvip = true;
setlog(loginUser, req.getRemoteAddr(), "购买会员:一个月");
}
break;
case 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
ReviewBiz reviewBiz;
@Autowired
MessageBiz messageBiz;
@Autowired
LogBiz logBiz;
public void setlog(User loginUser, String ip, String type) {
Log log = new Log();
log.setUserid(loginUser.getId());
log.setUsername(loginUser.getUsername());
log.setIp(ip);
log.setType(type);
logBiz.insert(log);
}
@RequestMapping(value = "varcodecheck")//验证码验证
public void varcodecheck(String varcode,HttpServletRequest req,HttpServletResponse res) throws IOException {
res.setCharacterEncoding("utf-8");
PrintWriter pw = res.getWriter();
/*String var = (String) session.getAttribute("varcodenumber");*/
if(!CaptchaUtil.ver(varcode, req)){
pw.write("0");
}
}

@RequestMapping(value = "changevarcode")//更换验证码,验证码显示
public void changevarcode(HttpServletRequest req,HttpServletResponse res) throws IOException, FontFormatException {

/*String url=req.getServletContext().getRealPath("/varcodeimg")+"\\"+varcodeurl+".jpg";*/

//验证码生成 varcodenumber为验证码的值
/* url=req.getServletContext().getRealPath("/varcodeimg")+"\\"+varcodeurl+".jpg";*/
//写出到response的输出流中
/*String varcodenumber = NubmerToJpgUtil.NumberToJpgUtil(res.getOutputStream());
session.setAttribute("varcodenumber",varcodenumber);*/
//使用新的验证码
// 设置位数
//CaptchaUtil.out(5, req, res);
// 设置宽、高、位数
//CaptchaUtil.out(130, 48, 5, req, res);

// 使用gif验证码
GifCaptcha gifCaptcha = new GifCaptcha(130,48,4);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
		setlog(user, req.getRemoteAddr(), "订阅课程:" + c.getName());
}
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(result);
}

@RequestMapping(value = "deleteCourse")
// 删除课程
public String deleteCourse(int courseid, String userid, HttpServletResponse response, HttpServletRequest req)
throws IOException {
Message message = new Message();
message.setCourseid(courseid);
message.setUserid(userid);
PrintWriter out = response.getWriter();
int i = messageBiz.delete(message);
User loginUser = userBiz.selectByPrimaryKey(userid);
Course c = courseBiz.selectByPrimaryKey(courseid);
setlog(loginUser, req.getRemoteAddr(), "取消课程:" + c.getName());
String result = i > 0 ? "true" : "false";
return result;
}

@RequestMapping(value = "info")
//个人信息页面
public String Info(User user, HttpSession session) {
User loginUser = (User) session.getAttribute("loginUser");
if (loginUser == null) {
return "login";
}
return "infoset";
}

@RequestMapping(value = "infoset")
// 个人信息设置
public String Infoset(User user, HttpSession session, HttpServletRequest req) {
User loginUser = (User) session.getAttribute("loginUser");
if (loginUser == null) {
return "login";
}
user.setCollect(loginUser.getCollect());
List<Review> reviews = reviewBiz.selectbyuserid(loginUser.getUsername());
for (int a = 0; a < reviews.size(); a++) {//个人信息修改的同时更新评论的用户信息
reviews.get(a).setSex(user.getSex());
}
reviewBiz.updateByPrimaryKeySelective(reviews);

userBiz.updateByPrimaryKeySelective(user);
Map map = new HashMap<String, String>();
map.put("username", loginUser.getUsername());
map.put("password", loginUser.getPassword());
session.setAttribute("loginUser", userBiz.selectLoginUser(map));
setlog(loginUser, req.getRemoteAddr(), "个人信息更改");
return "redirect:course";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// 上传配置
private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3; // 3MB
private static final int MAX_FILE_SIZE = 1024 * 1024 * 500; // 500MB
private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 500; // 500MB
/**
* 方法uploadFile("保存的文件名",HttpServletRequest,HttpServletResponse)
* @param refilename
* @param request
* @param response
* @return
* @return
*/
public static Object uploadFile(String refilename,HttpServletRequest request){
/*//程序状态
boolean isok = true;*/
// 检测是否为多媒体上传
if (!ServletFileUpload.isMultipartContent(request)) {
// 如果不是则停止
System.err.println("Error: 表单必须包含 enctype=multipart/form-data");
/* PrintWriter writer = response.getWriter();
writer.println("Error: 表单必须包含 enctype=multipart/form-data");
writer.flush();*/
return null;
}

// 配置上传参数
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中
factory.setSizeThreshold(MEMORY_THRESHOLD);
// 设置临时存储目录
factory.setRepository(new File(System.getProperty("java.io.tmpdir")));

ServletFileUpload upload = new ServletFileUpload(factory);

// 设置最大文件上传值
upload.setFileSizeMax(MAX_FILE_SIZE);

// 设置最大请求值 (包含文件和表单数据)
upload.setSizeMax(MAX_REQUEST_SIZE);

// 中文处理
upload.setHeaderEncoding("UTF-8");

// 构造临时路径来存储上传的文件
// 这个路径相对当前应用的目录
String uploadPath = request.getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY;
String uploadImagePath = request.getServletContext().getRealPath("./") + File.separator + UPLOADImage_DIRECTORY;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public String setuser(User user,HttpSession session,HttpServletRequest req){
User loginUser = (User) session.getAttribute("loginUser");
if (loginUser == null) {
return "login";
}else if(!"admin".equals(loginUser.getMission())){
//添加管理员的再次验证
return "redirect:course";
}
user.setCollect(userBiz.selectByPrimaryKey(user.getId()).getCollect());
userBiz.updateByPrimaryKeySelective(user);
setlog(user,req.getRemoteAddr(),"修改用户信息",loginUser.getUsername());
return "redirect:alluser?page=0";
}
@RequestMapping(value = "removeuser")//删除用户
public void removeuser(String userid,String removepassword,HttpSession session,HttpServletRequest req,
HttpServletResponse resp) throws IOException {
User loginUser = (User) session.getAttribute("loginUser");
resp.setCharacterEncoding("utf-8");
PrintWriter pw = resp.getWriter();
if(!removepassword.equals("591284209")){
pw.print("0");
}else{
User user = userBiz.selectByPrimaryKey(userid);
userBiz.deleteByPrimaryKey(userid);
setlog(user,req.getRemoteAddr(),"删除用户",loginUser.getUsername());
pw.print("账户:"+userid+",删除成功");
List<User> users = userBiz.selectAllUser();
session.setAttribute("users", users);
}
}
@RequestMapping(value = "showlog")//日志查看
public String showlog(String seachusername,String type, HttpSession session) {
User loginUser = (User) session.getAttribute("loginUser");
if (loginUser == null) {
return "login";
}else if(!"admin".equals(loginUser.getMission())&&!"showadmin".equals(loginUser.getMission())){
//添加管理员的再次验证
return "redirect:course";
}
List<Log> logs;
if(seachusername!=null&&type==null){
logs = logBiz.selectbyusername(seachusername);
session.setAttribute("logss", logs);
session.removeAttribute("type");
session.setAttribute("logs", initlogpage(logs));
session.setAttribute("maxpage", (logs.size()-1)/15);//10为每页个数
session.setAttribute("page", 0);
return "admin/log";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
}

@RequestMapping(value = "usercheck")
// 注册检查
public void Usercheck(String username, HttpSession session, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
int i = userBiz.selectUser(username);
out.println(i);
}

@RequestMapping(value = "quickregist")
// 快速注册
public ModelAndView insertUser(String varcode, User user, HttpSession session, HttpServletRequest req, ModelAndView mav) {
String id = DateUtil.getId();
String username = user.getUsername();
mav.setViewName("redirect:course");
if (varcode == null) {
return mav;
}
if (userBiz.selectUser(username) == 1 || !CaptchaUtil.ver(varcode, req)) {
return mav;
}
user.setId(id);
user.setMission(null);
user.setBuycase(null);
user.setMycase(null);
user.setVip(null);
userBiz.insertSelective(user);
session.setAttribute("loginUser", user);
setlog(user, req.getRemoteAddr(), "快速注册");
return mav;
}

@RequestMapping(value = "regist")
// 注册
public ModelAndView regist(ModelAndView mav, String varcode, User user, HttpSession session, HttpServletRequest req) {
String id = DateUtil.getId();
String username = user.getUsername();
mav.setViewName("redirect:course");
if (varcode == null) {
return mav;
}
if (userBiz.selectUser(username) == 1 || !CaptchaUtil.ver(varcode, req)) {
return mav;


项目链接:
https://javayms.github.io?id=141422282105200co
https://javayms.pages.dev?id=141422282105200co