基于java(ssm)学生在线课程学习系统源码(java毕业设计)

news/2024/5/18 13:40:40/文章来源:https://blog.csdn.net/qq_28059693/article/details/128198175

基于java(ssm)学生在线课程学习系统

学生在线课程学习系统是基于java编程语言,mysql数据库,ssm框架,和idea工具开发,本项目主要分为学生,管理员两个角色,学生的功能是登陆,注册,查看公告,查看课程,播放课程视频,下载课程资料,在线交流,在线答疑,在线考试等功能;管理员可以对学生信息,课程信息,考试信息,课程信息,用户交流信息等进行管理。本系统功能齐全,文档齐全,适合作为java毕业设计参考和学习。


一.技术环境

jdk版本:1.8 及以上
ide工具:IDEA
数据库: mysql5.7 (必须5.7)
编程语言: Java
tomcat: 8.0 及以上
java框架:SSM
maven: 3.6.1
前端:layui,vue
详细技术:HTML+CSS+JS+JSP+JAVA+SSM+MYSQL+JQUERY+MAVEN+VUE


二.项目文件(项目获取请看文末官网)

请添加图片描述


三.系统功能

请添加图片描述


四.代码示例

package com.lmu.controller;
/*** 和登陆有关的都在这里*/import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.lmu.model.Role;
import com.lmu.model.User;
import com.lmu.service.RoleService;
import com.lmu.service.UserService;
import com.lmu.utils.JsonUtils;
import com.lmu.utils.UserUtils;import org.apache.commons.collections.map.HashedMap;
import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import java.io.IOException;
import java.util.HashMap;
import java.util.Map;@Controller("loginController")
@Scope("prototype")
public class LoginController extends ActionSupport {@Autowiredprivate UserService userService;@Autowiredprivate RoleService roleService;private User user;private Map<String, Object> map = new HashMap();public User getUser() {return user;}public void setUser(User user) {this.user = user;}public UserService getUserService() {return userService;}public void setUserService(UserService userService) {this.userService = userService;}/*** 用户登陆* @return*/public void index() throws IOException {User user1 = userService.getUser(user);if (user1 != null){if (user1.getIsSh() == 1){if (user1.getRole().getEnName().equals("admin")){ActionContext.getContext().getSession().put("user", user1);}if (user1.getRole().getEnName().equals("js")){ActionContext.getContext().getSession().put("user1", user1);}if (user1.getRole().getEnName().equals("xs")){ActionContext.getContext().getSession().put("user2", user1);}map.put("flag", 1);map.put("url", "login_indexs.do");map.put("id", user1.getId());JsonUtils.toJson(map);} else {map.put("flag", 2);JsonUtils.toJson(map);}} else {map.put("flag", 3);JsonUtils.toJson(map);}}public String indexs() throws IOException {User u = UserUtils.getUser();if (u != null){ActionContext.getContext().put("user", u);String ss = u.getRole().getEnName();ActionContext.getContext().put("role", u.getRole().getEnName());}return SUCCESS;}//登陆页面public String login() {return SUCCESS;}//退出public String tuichu() {ActionContext ac = ActionContext.getContext();Map session = ac.getSession();session.remove("userName");session.remove("userId");ServletActionContext.getRequest().getSession().invalidate();return "login";}}
package com.lmu.controller;/*** 用户新增*/import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.lmu.model.Role;
import com.lmu.model.User;
import com.lmu.service.RoleService;
import com.lmu.service.UserService;
import com.lmu.utils.JsonUtils;
import com.lmu.utils.Pager;
import com.lmu.utils.UserUtils;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import java.awt.event.FocusEvent;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;@Controller("userController")
@Scope("prototype")
public class UserController extends ActionSupport implements ModelDriven<User> {@Autowiredprivate UserService userService;@Autowiredprivate RoleService roleService;private User user;private Integer userId;private Map<String, Object> map = new HashMap();/*** list** @return*/public String list() throws IOException {User user1 = UserUtils.getUser();if (user1 == null || user1.getId() == null){ActionContext.getContext().put("login", 1);return SUCCESS;}Pager<User> pagers = null;Role role = user1.getRole();if (role.getEnName().equals("admin")) {pagers = userService.getList(user);ActionContext.getContext().put("pagers", pagers);ActionContext.getContext().put("user", user1);ActionContext.getContext().put("role", role);ActionContext.getContext().put("bean", user);return SUCCESS;} else if (role.getEnName().equals("xs") || role.getEnName().equals("js")) {pagers = userService.getList(user1);ActionContext.getContext().put("pagers", pagers);ActionContext.getContext().put("bean", user);return SUCCESS;}return null;}/*** 跳转add** @return*/public String add() {Pager<Role> pagers = roleService.pagers();ActionContext.getContext().put("pagers", pagers);return SUCCESS;}/*** 查询修改** @return*/public String edit() {User bean = userService.findById(userId);Pager<Role> pagers = roleService.pagers();ActionContext.getContext().put("bean", bean);ActionContext.getContext().put("pagers", pagers);return SUCCESS;}/*** 审核** @return*/public void updateSh() throws IOException {user.setIsSh(1);userService.updates(user);map.put("flag", true);map.put("url", "user_list.do");JsonUtils.toJson(map);}/*** 更新** @return*/public String update() throws IOException {if (user.getPass().equals("")){user.setPass(null);}userService.updates(user);map.put("flag", true);map.put("url", "user_list.do");JsonUtils.toJson(map);return SUCCESS;}/*** 保存** @return*/public void save() throws IOException {if (userService.getUser(user) != null){map.put("flag", false);map.put("url", "login_login.do");JsonUtils.toJson(map);} else {user.setTime(new Date());userService.save(user);map.put("flag", true);map.put("url", "login_login.do");JsonUtils.toJson(map);}}public void delete() throws IOException {User user1 = userService.findById(userId);user1.setIsDelete(1);userService.update(user1);map.put("flag", true);map.put("url", "user_list.do");JsonUtils.toJson(map);}@Overridepublic User getModel() {if (user == null) {user = new User();}return user;}public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}
}

五.项目截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_231198.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5款高效率,但是名气不大的小众软件

今天推荐5款十分小众的软件&#xff0c;但是每个都是非常非常好用的&#xff0c;用完后觉得不好用你找我。 1.多窗口文件整理——Q-Dir Q-Dir 是一款多窗口文件整理工具&#xff0c;特别适合用户频繁在各个文件夹中跳转进行复制粘贴的文件归档操作。如果你的电脑硬盘中文件已经…

红队渗透靶场之SickOs1.1

靶场考察知识 shellshock漏洞 shellshock即unix系统下的bash shell的一个漏洞, Bash 4.3以及之前的版本在处理某些构造的环境变量时存在安全漏洞, 向环境变量值内的函数定义后添加多余的字符串会触发此漏洞, 攻击者可利用此漏洞改变或绕过环境限制&#xff0c;以执行任意的sh…

vue中pc端大屏怎么进行rem适配(lib-flexible + postcss-plugin-px2rem)

npm i lib-flexible -Spostcss-plugin-px2rem在main.js中引入 import lib-flexible/flexible.js找到node_modules里找到lib-flexible&#xff0c;修改flexible.js 搜索540找到refreshRem函数修改 function refreshRem() {var width docEl.getBoundingClientRect().width;if (…

电脑e盘不见了怎么恢复?6个步骤找回e盘

电脑e盘不见虽然不是一件常见的事&#xff0c;但是也会有发生的情况。虽然我们还有其他磁盘&#xff0c;平时也会经常忽略e盘。但是e盘也是一个存储磁盘&#xff0c;当电脑e盘不见了&#xff0c;我们也会想要找回来。那么电脑里的e盘丢失了怎么找回呢&#xff1f;下面我们就一起…

【历史上的今天】12 月 6 日:微波炉问世;多媒体格式 Mkv 诞生;日立环球存储科技公司成立

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 12 月 6 日&#xff0c;在 1892 年的今天&#xff0c;世界著名电子电器之父西门子逝世。西门子&#xff08;Siemens&#xff09;是全球领先的科技企业&#xf…

使用RMI实现RPC

1 RMI简介 RMI(Remote Method Invocation) 远程方法调用。 RMI是从JDK1.2推出的功能&#xff0c;它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用&#xff08;JVM&#xff09;中的内容。 RMI 是Java语言的远程调用&#xff0c;无法实现跨语言。…

元宇宙工程系,来了一位“吃螃蟹”者

转自《中国科学报》 记者 温才妃 潘志庚&#xff08;右&#xff09;给学生讲授元宇宙技术。受访者供图 元宇宙办学潮正在高校中暗涌。 不久前&#xff0c;南京信息工程大学人工智能学院&#xff08;未来技术学院&#xff09;信息工程系正式更名为元宇宙工程系&#xff0c;成为…

Kubernetes v1.25 搭建单节点集群用于Debug K8S源码

参考说明 参考自&#xff1a;v1.25.0-CentOS-binary-install-IPv6-IPv4-Three-Masters-Two-Slaves.md&#xff0c;按照自己的理解修改了下。 搭建好的单节点v1.25.4版本集群 1. 集群环境准备 1.1. 主机规划 IP主机名主机角色操作系统安装组件192.168.11.71k8s-master1maste…

HTML网页设计【足球科普】学生DW静态网页设计

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

02-SpringBoot基础

一、回顾 二、知识目标 SpringBoot概述【了解】 SpringBoot快速入门【掌握】 SpringBoot启动原理【重点】 SpringBoot配置文件【掌握】 SpringBoot属性注入【掌握】 三、为什么使用SpringBoot&#xff1f; -SSM开发有哪些痛点&#xff1f; 1、在早期我们都是使用的是SSM来…

1.Spring概述(Spring官方文档总结)

目录 1.1jdk环境依赖 1.2 Spring介绍 1.3 Spring历史 1.4 设计理念 1.1 jdk环境依赖 从Spring Framework 5.1开始&#xff0c;Spring需要JDK 8 (Java SE 8)&#xff0c;并提供对JDK 11 LTS的开箱即用支持。建议将Java SE 8 update 60作为Java 8的最低补丁版本&#xff0c;但…

磁盘和文件系统管理(一)

检测并确认新硬盘 fdisk命令 查看或管理磁盘分区 fdisk -l [磁盘设备] 或 fdisk [磁盘设备] 交互模式中的常用指令 m、p、n、d、t、w、q d delete a partition * 删除分区 g create a new empty GPT partition table 创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区) l…

如何安装Ambari集群_大数据培训

注意&#xff1a;以下操作主节点操作即可 1 制作本地源 制作本地源是因为在线安装Ambari太慢。制作本地源只需在主节点上进行。 1.1 配置HTTPD 服务 配置HTTPD 服务到系统层使其随系统自动启动 [roothadoop102 ~]# chkconfig httpd on [roothadoop102 ~]# service httpd …

【Opencv实战】高手勿入,Python使用Opencv+Canny实现边缘检测以及轮廓检测(详细步骤+源码分享)

前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 在这次的案例实战中&#xff0c;我们将使用Python 3和OpenCV。我们将使用OpenCV&#xff0c;因为它是…

私域运营对于企业的重要性

企业进行私域流量的精细化运营&#xff0c;不仅可以打造属于企业自己的社群王国&#xff0c;还可以挖掘存量客户的价值&#xff0c;实现更智能的客户管理和个性化运营方案。 前言 相信每个人都对瑞幸咖啡略有耳闻&#xff0c;这个国产咖啡品牌曾一度被封神&#xff0c;但随着财…

感知算法工程师面试===目标检测===YOLO V4(改)

感觉V3 到V4&#xff0c;YOLO的整体架构并没有重大的改进&#xff0c;只是增加了很多的trick 先展示一下V4的整体网络结构 ↑\uparrow↑这个是对比V3的 如图可见&#xff0c;V4的结构依然是主干网络金字塔头部检测器&#xff0c;所有的改进都是为了更好更快的检测目标。 ↑\…

(四)Spring Security Oauth2.0 源码分析--客户端端鉴权(token校验)

一 引言 在上篇文章我们分析了token的获取过程,那么拿到token后,将token放在请求头中进行资源的访问,客户端是如如何对token进行解析的呢,本文带你走进token校验的源码解析,基本流程如下所示 客户端向资源服务器发起请求时,在请求头Authorization携带申请的token请求被Filte…

均匀传输线的串扰和饱和长度

下图为串扰的电路模型&#xff0c;动态线与静态线之间通过互容与互感联系&#xff0c;这样也说明了动态线的信号耦合到静态线上的条件是存在di/dt或者dv/dt时&#xff0c;也就是说只在信号边沿上产生串扰&#xff0c;当电压或者电流为常数的时候静态线上就不会有串扰的信号。 信…

Redis04:Redis事务操作以及后续高级部分

Redis事务操作以及后续高级部分Redis事务事务执行Redis实现乐观锁Redis事务 Redis事务本质&#xff1a;一组命令的集合&#xff01;一个事务中的所有命令都会被序列化&#xff0c;在事务执行过程中&#xff0c;会按顺序执行&#xff01; Redis单条命令是保证原子性的&#xff…

为什么在高速PCB设计当中信号线不能多次换孔

大家在进行PCB设计时过孔肯定是要接触的&#xff0c;那么大家知道过孔对于我们PCB的信号质量影响有多大吗&#xff1f; 在搞清楚上面这个这个问题之前我们先给大家介绍一下我们在PCB设计时过孔应该如何选取。 一般过孔种类有以下三种可以进行选择&#xff1a;&#xff08;单位是…