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

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

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

20220519002733

20220519002734

20220519002736

20220519002737

20220519002738

基于javaweb+springboot的在线课程会员系统(java+Springboot+Maven+JSP+Spring+Mysql+layui)

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

二、项目运行 环境配置:

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

项目技术:

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

用户管理控制器:

/**

  • 用户管理控制器

*/

@RequestMapping(“/user/”)

@Controller

public class UserController {

@Autowired

private IUserService userService;

@Autowired

private IRoleService roleService;

@Resource

private ProcessEngineConfiguration configuration;

@Resource

private ProcessEngine engine;

@GetMapping(“/index”)

@ApiOperation(“跳转用户页接口”)

@PreAuthorize(“hasRole(‘管理员’)”)

public String index(String menuid,Model model){

List roles = queryAllRole();

model.addAttribute(“roles”,roles);

model.addAttribute(“menuid”,menuid);

//用户首页

return “views/user/user_list”;

@GetMapping(“/listpage”)

@ApiOperation(“查询用户分页数据接口”)

@ApiImplicitParams({

@ApiImplicitParam(name = “UserQuery”, value = “用户查询对象”, defaultValue = “userQuery对象”)

})

@ResponseBody

@PreAuthorize(“hasRole(‘管理员’)”)

public PageList listpage(UserQuery userQuery){

return userService.listpage(userQuery);

//添加用户

@PostMapping(“/addUser”)

@ApiOperation(“添加用户接口”)

@ResponseBody

public Map<String,Object> addUser(User user){

Map<String, Object> ret = new HashMap<>();

ret.put(“code”,-1);

if(StringUtils.isEmpty(user.getUsername())){

ret.put(“msg”,“请填写用户名”);

return ret;

if(StringUtils.isEmpty(user.getPassword())){

ret.put(“msg”,“请填写密码”);

return ret;

if(StringUtils.isEmpty(user.getEmail())){

ret.put(“msg”,“请填写邮箱”);

return ret;

if(StringUtils.isEmpty(user.getTel())){

ret.put(“msg”,“请填写手机号”);

return ret;

if(StringUtils.isEmpty(user.getHeadImg())){

ret.put(“msg”,“请上传头像”);

return ret;

if(userService.addUser(user)<=0) {

ret.put(“msg”, “添加用户失败”);

return ret;

ret.put(“code”,0);

ret.put(“msg”,“添加用户成功”);

return ret;

/**

  • 修改用户信息操作

  • @param user

  • @return

*/

@PostMapping(“/editSaveUser”)

@ApiOperation(“修改用户接口”)

@PreAuthorize(“hasRole(‘管理员’)”)

@ResponseBody

public Message editSaveUser(User user){

if(StringUtils.isEmpty(user.getUsername())){

return Message.error(“请填写用户名”);

if(StringUtils.isEmpty(user.getEmail())){

return Message.error(“请填写邮箱”);

if(StringUtils.isEmpty(user.getTel())){

return Message.error(“请填写手机号”);

try {

userService.editSaveUser(user);

return Message.success();

} catch (Exception e) {

e.printStackTrace();

return Message.error(“修改用户信息失败”);

//添加用户

@GetMapping(“/deleteUser”)

@ApiOperation(“删除用户接口”)

@ApiImplicitParams({

@ApiImplicitParam(name = “id”, value = “如:88”,required = true)

})

@PreAuthorize(“hasRole(‘管理员’)”)

@ResponseBody

public AjaxResult deleteUser(@RequestParam(required = true) Long id){

AjaxResult ajaxResult = new AjaxResult();

try {

userService.deleteUser(id);

} catch (Exception e) {

e.printStackTrace();

return new AjaxResult(“删除失败”);

return ajaxResult;

@PostMapping(value=“/deleteBatchUser”)

@ApiOperation(“批量删除用户接口”)

@PreAuthorize(“hasRole(‘管理员’)”)

@ResponseBody

public AjaxResult deleteBatchUser(String ids){

String[] idsArr = ids.split(“,”);

List list = new ArrayList();

for(int i=0;i<idsArr.length;i++){

list.add(idsArr[i]);

try{

userService.batchRemove(list);

return new AjaxResult();

}catch(Exception e){

return new AjaxResult(“批量删除失败”);

//查询所有角色

public List queryAllRole(){

return roleService.queryAll();

//添加用户的角色

@PostMapping(“/addUserRole”)

@ApiOperation(“添加用户角色接口”)

@ApiImplicitParams({

@ApiImplicitParam(name = “paramMap”, value = “如:{userId:1,[1,2,3,4]]}”)

})

@ResponseBody

public AjaxResult addUserRole(@RequestBody Map paramMap){

AjaxResult ajaxResult = new AjaxResult();

String userId = (String)paramMap.get(“userId”);

List roleIds = (List) paramMap.get(“roleIds”);

try {

//添加用户对应的角色

roleService.addUserRole(userId,roleIds);

return ajaxResult;

}catch (Exception e){

e.printStackTrace();

return new AjaxResult(“保存角色失败”);

//添加用户

@RequestMapping(“/regSaveUser”)

@ResponseBody

public Long addTeacher(User user){

System.out.println(“保存用户…”+user);

userService.addUser(user);

//保存工作流程操作

IdentityService is = engine.getIdentityService();

// 添加用户组

org.activiti.engine.identity.User userInfo = userService.saveUser(is, user.getUsername());

// 添加用户对应的组关系

Group stuGroup = new GroupEntityImpl();

stuGroup.setId(“stuGroup”);

Group tGroup = new GroupEntityImpl();

tGroup.setId(“tGroup”);

if(user.getType() == 2) {

//保存老师组

userService.saveRel(is, userInfo, tGroup);

if(user.getType() == 3) {

//保存学生组

userService.saveRel(is, userInfo, stuGroup);

Long userId = user.getId();

return userId;

/**

  • 修改密码页面

  • @return

*/

@RequestMapping(value=“/update_pwd”,method=RequestMethod.GET)

public String updatePwd(){

return “views/user/update_pwd”;

/**

  • 修改密码操作

  • @param oldPwd

  • @param newPwd

  • @return

*/

@ResponseBody

@PostMapping(“/update_pwd”)

public Message updatePassword(@RequestParam(name=“oldPwd”,required=true)String oldPwd,

@RequestParam(name=“newPwd”,required=true)String newPwd){

String username = CommonUtils.getLoginUser().getUsername();

User userByUserName = userService.findUserByUserName(username);

if(userByUserName!=null){

String password = userByUserName.getPassword();

BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();

boolean matches = bCryptPasswordEncoder.matches(oldPwd, password);

if(!matches){

return Message.error(“旧密码不正确”);//true

userByUserName.setPassword(bCryptPasswordEncoder.encode(newPwd));

if(userService.editUserPassword(userByUserName)<=0){

return Message.error(“密码修改失败”);

return Message.success();

/**

  • 清除缓存

  • @param request

  • @param response

  • @return

*/

@ResponseBody

@PostMapping(“/clear_cache”)

public Message clearCache(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setHeader(“Cache-Control”,“no-store”);

response.setHeader(“Pragrma”,“no-cache”);

response.setDateHeader(“Expires”,0);

return Message.success();

学生管理接口:

@RequestMapping(“/student”)

@Controller

@Api(tags = “学生管理接口”)

public class StudentController {

@Autowired

private IUserService userService;

@Autowired

private ICourseService courseService;

@Autowired

private IClassesService classesService;

@Resource

private ProcessEngine engine;

@Autowired

private IOperaterLogService operaterLogService;

//老师列表

//后台查询学生列表

@RequestMapping(“/index”)

public String index(Model model){

//用户首页

model.addAttribute(“courses”,courseService.queryAll());

model.addAttribute(“classes”,classesService.queryAll());

return “views/student/student_list”;

@RequestMapping(“/listpage”)

@ResponseBody

public PageList listpage(UserQuery userQuery){

userQuery.setType(3L);//2表示老学生

return userService.listpage(userQuery);

/**

  • 添加学生操作

  • @param user

  • @return

*/

@PostMapping(“/addSaveStu”)

@ApiOperation(“添加学生接口”)

@PreAuthorize(“hasRole(‘管理员’)”)

@ResponseBody

public Message addSaveStudent(User user){

if(StringUtils.isEmpty(user.getUsername())){

return Message.error(“请填写用户名”);

if(StringUtils.isEmpty(user.getPassword())){

return Message.error(“请填写密码”);

if(StringUtils.isEmpty(user.getEmail())){

return Message.error(“请填写邮箱”);

if(StringUtils.isEmpty(user.getTel())){

return Message.error(“请填写手机号”);

if(StringUtils.isEmpty(user.getStunum())){

return Message.error(“请填写学号”);

User userByUserName = userService.findUserByUserName(user.getUsername());

if(userByUserName!=null){

return Message.error(“用户名已存在”);

if(userService.findByStuNum(user.getStunum())!=null){

return Message.error(“该学号已存在”);

user.setType(3);

if(userService.addUser(user)<=0){

return Message.error(“学生添加失败”);

//保存工作流程操作

IdentityService is = engine.getIdentityService();

// 添加用户组

org.activiti.engine.identity.User userInfo = userService.saveUser(is, user.getUsername());

// 添加用户对应的组关系

Group stuGroup = new GroupEntityImpl();

stuGroup.setId(“stuGroup”);

userService.saveRel(is, userInfo, stuGroup);

operaterLogService.add(“添加学生成功,学生名称:”+user.getUsername());

return Message.success();

//修改用户editSaveUser

@PostMapping(“/editSaveStu”)

@ApiOperation(“修改学生接口”)

@PreAuthorize(“hasRole(‘管理员’)”)

@ResponseBody

public Message editSaveStu(User user){

if(StringUtils.isEmpty(user.getUsername())){

return Message.error(“请填写用户名”);

if(StringUtils.isEmpty(user.getEmail())){

return Message.error(“请填写邮箱”);

if(StringUtils.isEmpty(user.getTel())){

return Message.error(“请填写手机号”);

User userByUserName = userService.findUserByUserName(user.getUsername());

if(userByUserName!=null){

if(!userByUserName.getId().equals(user.getId())){

return Message.error(“该用户名已存在”);

try {

userService.editSaveUser(user);

operaterLogService.add(“编辑学生成功,学生名称:”+user.getUsername());

return Message.success();

} catch (Exception e) {

e.printStackTrace();

return Message.error(“学生编辑失败”);

//editSaveStuXk

@PostMapping(“/editSaveStuXk”)

@ApiOperation(“修改用户接口”)

@ApiImplicitParams({

@ApiImplicitParam(name = “User”, value = “学生选课”)

})

@ResponseBody

public AjaxResult editSaveStuXk(User user){

try {

userService.editSaveXk(user);

operaterLogService.add(“修改学生选课成功,学生名称:”+user.getUsername());

return new AjaxResult();

} catch (Exception e) {

e.printStackTrace();

return new AjaxResult(“修改失败”);

角色管理控制层:

@Controller

public class RoleController {

@Autowired

private IRoleService roleService;

@Autowired

private IPermissionService permissionService;

@PreAuthorize(“hasRole(‘管理员’)”)

@ResponseBody

@RequestMapping(“/role/doAdd”)

public String doAdd(Role role){

//角色添加

return “ok”;

//添加角色

@RequestMapping(“/role/addRole”)

@PreAuthorize(“hasRole(‘管理员’)”)

@ResponseBody

public AjaxResult addRole(Role role){

System.out.println(“保存角色…”+role);

try {

roleService.saveRole(role);

return new AjaxResult();

} catch (Exception e) {

e.printStackTrace();

return new AjaxResult(“操作失败”);

@PreAuthorize(“hasRole(‘管理员’)”)

@RequestMapping(“/role/index”)

public String index(Model model){

List permisisons = permissionService.findAllPermisisons();

model.addAttribute(“permissions”,permisisons);

//返回角色

return “views/role/role_list”;

@RequestMapping(“/role/listpage”)

@ResponseBody

public PageList listpage(RoleQuery roleQuery){

System.out.println(“传递参数:”+roleQuery);

return roleService.listpage(roleQuery);

//修改用户editSaveUser

@RequestMapping(“/role/editSaveRole”)

@ResponseBody

public AjaxResult editSaveRole(Role role){

System.out.println(“修改角色…”+role);

try {

roleService.editSaveRole(role);

return new AjaxResult();

} catch (Exception e) {

e.printStackTrace();

return new AjaxResult(“修改失败”);

//添加角色

@RequestMapping(“/role/deleteRole”)

@ResponseBody

public AjaxResult deleteRole(Long id){

System.out.println(“删除角色…”+id);

AjaxResult ajaxResult = new AjaxResult();

try {

roleService.deleteRole(id);

} catch (Exception e) {

e.printStackTrace();

return new AjaxResult(“删除失败”);

return ajaxResult;

//添加角色权限 addRolePermission

@RequestMapping(“/role/addRolePermission”)

@ResponseBody

public AjaxResult addRolePermission(@RequestBody Map paramMap){

AjaxResult ajaxResult = new AjaxResult();

String roleId = (String)paramMap.get(“roleId”);

List permissionIds = (List) paramMap.get(“permissionIds”);

try {

//添加角色对应的权限

roleService.addRolePermission(roleId,permissionIds);

return ajaxResult;

}catch (Exception e){

e.printStackTrace();

return new AjaxResult(“保存权限失败”);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
a)构架 该系统采用表示层、业务逻辑层、数据访问层三层构架。 1、在系统主页面,用户可以通过已有的账号密码进行登录,验证成功则进入个人信息页面;也可以进行忘记密码之后的重置操作,验证成功则完成重置并返回系统主页面再次登录。 2、在个人信息页面,用户可以修改当前账号密码,验证成功则完成修改则返回系统主页面。在此之外,不同身份的用户可以有不同的操作。 管理员:查看现有帐号信息,对帐号进行增、删等操作。 教师:查看课程信息,包括预览、下载课件,查看作业情况(提交、批改意见、评分)等;修改课程信息,包括上传、重传课件,下载作业,提交作业批改意见、评分,发布新作业要求,更新系统公告等。 学生:查看课程信息,包括预览、下载课件,查看作业情况(提交、批改意见、评分)等;修改课程信息,包括上传、重传作业等。 b)系统流程 1、表示层效果采用HTML5、CSS等语言和前端框架jQuery,实现用户交互界面。交互界面包括用户登录界面,个人信息展示页面,课程、课件、作业查看页面等。 2、业务逻辑层利用Servlet,JSP来处理来自前端的请求,获取数据库数据,并作出相应的处理,将处理数据提交到前端,显示给用户。 3、数据访问层利用Hibernate架构操作数据库,通过应用程序经过Hiberante持久层来访问数据库。数据访问层的关键是确定表结构和表属性,便于业务逻辑层进行对数据库的查询,良好的数据库结构,对数据操作有很大的用处。 c)系统结构

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值