【SSM项目】

发布于:2022-12-27 ⋅ 阅读:(809) ⋅ 点赞:(0)


简介

使用技术:
IOC容器:Spring

Web框架:SpringMVC
ORM框架:Mybatis
安全框架:Shiro
日志:log4j
前端框架:Bootstrap+LayUI
开发工具:idea
数据库:MySQL 5.0

系统功能

功能结构图

系统角色

系统包含三个角色,教师、学生、管理员

运行流程图

运行流程

用户登录界面

登录页面

登录成功后弹窗提示

提示登录成功

管理员功能

管理员主页面

系统主页面

课程管理页面

课程
可以在该页面查询课程
查询课程
修改课程信息
修改课程
添加课程信息
添加课程信息
添加成功后会在课程管理页面显示,对应课程的授课教师也能看到自己的该授课列表,学生可以在系统中看到新增的课程,并且可以选择该课程进行学习。

学生管理页面

学生管理
管理员能够对学生用户进行CRUD,实现学生用户的管理。

教师管理

教师管理
管理员能够实现教师用户的CRUD,实现教师用户的管理。

修改密码页面

修改密码

教师页面

查看所授课程列表

授课列表

给对应课程的学生进行打分

打分

学生页面

查看教学的所有课程,可以进行选课

查看课程1

查看已修、未修课程

查看课程2

部分源码:

登录认证和授权:

public class MyShiroRealm extends AuthorizingRealm {

    @Autowired
    private UserLoginMapper userLoginMapper;
    //获取授权信息,由开发者提供shiro框架已认证过用户的权限信息
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        //获取当前已认证(待授权用户)的用户的账号
        String username = (String)principalCollection.getPrimaryPrincipal();
        System.out.println(username+"授权成功");
        // 查询该用户的角色或权限
        UserLogin login = userLoginMapper.selectByUserName(username);
        Set<String> roles = new HashSet<>();
        if (login.getRoles()!=null){
            //遍历用户的角色信息
            for (Role one : login.getRoles()) {
                //角色名添加到role集合中
                roles.add(one.getRoleName());
            }
        }
        //查询用户的权限信息
        Set<String> perms = new HashSet<>();
        //创建授权信息对象
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
        //设置角色信息
        info.setRoles(roles);
        //设置权限信息
        info.setStringPermissions(perms);
        //返回授权信息对象
        return info;
    }

    //获取认证信息
    //由开发者来编写,实现从数据库中查询待认证的用户的用户信息。以提供給shiro框架进行密码匹配工作
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        //使用token对象获取待登录用户的用户名
        String username = (String)token.getPrincipal();
        //从数据库中查询该username的用户的信息
        UserLogin login = userLoginMapper.selectByUserName(username);
        System.out.println(login);
        //判断待登录用户是否存在
        if (login==null){
            throw new UnknownAccountException(username + "不存在");
        }
        Session session = SecurityUtils.getSubject().getSession();
        session.setAttribute("login", login);
        ByteSource salt = ByteSource.Util.bytes(login.getUsername());
        return new SimpleAuthenticationInfo(login.getUsername(),login.getPassword(),salt,getName());
    }
}