Java项目之网络考试系统

news2025/2/25 11:25:57

视频教程: 01-创建数据库_哔哩哔哩_bilibili

源码下载:百度网盘 请输入提取码 

准备工作

  • 创建数据库
  • 配置IDEA后端
  • 导入前端 

前言:

把代码掰开写进博客里,主要是让自己在整理笔记的过程中,多去思考完成这个功能的核心代码部分是什么。一个功能一个功能地写代码、测试,如果遇到bug,再退回检查新写的这部分代码,测试成功再进一步。之前没做笔记跟着视频教程写项目时,写着写着就迷糊了,乱了,一遇到bug就全盘崩溃。所以,在此记录写项目的完整过程,留下清晰的足迹。学习的方法仍然在不断地改进,以求找到最适合自己的。

过程中的代码名称可能有点变化,以最终的源码文件为准

学生登录

LoginController

package com.study.controller;

import com.study.pojo.Users;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class LoginController {
    //自动注入
    @Autowired
    UsersService usersService;

    //老师登录和学生登录的互相跳转
    @GetMapping("toTeacher")
    public String toTeaLogin(){
        return "teacher/login";
    }
    @GetMapping("toStuLogin")
    public String toStuLogin(){
        return "student/login";
    }

    //学生登录
    @PostMapping("/stulogin")
    public String stulogin(String username, String userpwd, HttpServletRequest servletRequest){
        Users login = usersService.login(username, userpwd);
        if(login==null){
            System.out.println("登录失败");
            servletRequest.getSession().setAttribute("mag","密码错误");
            return "redirect:/toStuLogin";
        }else{
            System.out.println("登录成功");
            return "student/StuMan";
        }

    }
}

 UserDao

package com.study.dao;

import com.study.pojo.Users;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UsersDao {

    Users login(String username,String userpwd);
}

Users

package com.study.pojo;

public class Users {

    private Integer userid;
    private String username;
    private String userpwd;
    private String truename;
    private Integer classid;

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserpwd() {
        return userpwd;
    }

    public void setUserpwd(String userpwd) {
        this.userpwd = userpwd;
    }

    public String getTruename() {
        return truename;
    }

    public void setTruename(String truename) {
        this.truename = truename;
    }

    public Integer getClassid() {
        return classid;
    }

    public void setClassid(Integer classid) {
        this.classid = classid;
    }
}

 UsersServiceImpl

package com.study.service.impl;

import com.study.dao.UsersDao;
import com.study.pojo.Users;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UsersServiceImpl implements UsersService {

    @Autowired
    UsersDao usersDao;

    @Override
    public Users login(String username, String userpwd) {
        Users login=usersDao.login(username,userpwd);
        return login;
    }
}

UsersService

package com.study.service;

import com.study.pojo.Users;

public interface UsersService {
    Users login(String username,String userpwd);
}

 UsersMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.dao.UsersDao">
    <select id="login" resultType="com.study.pojo.Users">
        select * from users where username=#{username}
                            and userpwd=#{userpwd}
    </select>
</mapper>

application.properties

spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/exam?useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.druid.username=root
spring.datasource.druid.password=admin

#其他配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000

#mapper.xml配置
mybatis.mapper-locations=classpath:mapper/*.xml

 运行结果:

  • 在exam数据库的user表中,手动添加一条数据用于测试
  • 在浏览器输入地址访问:localhost:8080/
  • 主要实现的功能:
    • 登录成功,跳转页面
    • 登录失败,报错”密码错误“

学生注册

StuUserController

package com.study.controller;

import com.study.pojo.PClass;
import com.study.pojo.Users;
import com.study.service.PClassService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 学生的controller层
 */
@Controller
public class StuUserController {
    @Autowired
    UsersService usersService;
    @Autowired
    PClassService pClassService;



    @GetMapping("/register")
    public String toRegister(Model model){

        //调用班级的service层,获取全部班级信息
        List<PClass> allPClass = pClassService.getAllPClass();
        //把班级列表传回前台
        model.addAttribute("list",allPClass);
        return "student/register";
    }

    @PostMapping("/CanRegister")
    public String register(Users users, String username, String userpwd, String truename, Integer classid, HttpServletRequest request){
        Users byName=usersService.getByName(username);
        users.setUsername(username);
        users.setUserpwd(userpwd);
        users.setTruename(truename);
        users.setClassid(classid);
        usersService.addUsers(users);
        //判断用户是否存在,byName为null时,用户不存在
        if(byName==null){
            if(userpwd.equals("")){
                request.getSession().setAttribute("msg1","密码为空");//在前端显示
                return  "redirect:/register";//如果密码为空,返回注册页面
            }
            if(truename.equals("")){
                request.getSession().setAttribute("msg2","真实姓名为空");//在前端显示
                return  "redirect:/register";//如果真实姓名为空,返回注册页面
            }
            if(username.equals("")){
                request.getSession().setAttribute("msg3","用户名为空");//在前端显示
                return  "redirect:/register";//如果用户名为空,返回注册页面
            }
            System.out.println("用户可以注册");
            return "redirect:/stulogin";//返回登录页面
        }else{
            System.out.println("用户已存在");
            return "redirect:/register";//返回注册页面
        }
    }
}

 PClassDao

package com.study.dao;

import com.study.pojo.PClass;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 接口层
 */
@Mapper
@Component
public interface PClassDao {

    //查询班级的所有信息
    List<PClass> getAllClass();
}

UsersDao

package com.study.dao;

import com.study.pojo.Users;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UsersDao {//由此去编写UsersDao.xml文件里的sql语句

    //注册
    Integer addUsers(Users users);

    //查询用户的接口
    Users getByName(String username);
}

PClass

package com.study.pojo;

/**
 * 班级的实体类
 * 写完实体类,就去写dao接口,再写sql语句
 */
public class PClass {

    private Integer classid;
    private String classname;

    public Integer getClassid() {
        return classid;
    }

    public void setClassid(Integer classid) {
        this.classid = classid;
    }

    public String getClassname() {
        return classname;
    }

    public void setClassname(String classname) {
        this.classname = classname;
    }
}

 UsersService

package com.study.service;

import com.study.pojo.Users;

public interface UsersService {
    //注册
    Integer addUsers(Users users);
    //查询用户
    Users getByName(String username);
}

UsersServiceImpl

package com.study.service.impl;

import com.study.dao.UsersDao;
import com.study.pojo.Users;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UsersServiceImpl implements UsersService {

    @Override
    public Integer addUsers(Users users){
        return usersDao.addUsers(users);
    }

    @Override
    public Users getByName(String username) {
        return usersDao.getByName(username);
    }
}

PClassService

package com.study.service;

import com.study.pojo.PClass;

import java.util.List;

public interface PClassService {

    List<PClass> getAllPClass();
}

 PClassServiceImpl

package com.study.service.impl;

import com.study.dao.PClassDao;
import com.study.pojo.PClass;
import com.study.service.PClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PClassServiceImpl implements PClassService {
    @Autowired
    PClassDao pClassDao;
    @Override
    public List<PClass> getAllPClass() {
        return pClassDao.getAllClass();
    }
}

 UsersMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.dao.UsersDao">
    <insert id="addUsers">
        insert into users(userid,username,userpwd,truename,classid)
            values(default,#{username},#{userpwd},#{truename},#{classid})
    </insert>

    <select id="getByName" resultType="com.study.pojo.Users">
        select * from users where username=#{username}
    </select>
</mapper>

PClassMapper.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.study.dao.PClassDao">
    <select id="getAllClass" resultType="com.study.pojo.PClass">
            select * from pclass
    </select>
</mapper>

老师登录

总体思路:

  • 编写TeaUser实体类
  • 编写TeaUserDao接口
  • 编写SQL语句,在TeaUserMapper.xml文件里,与接口直接映射
  • 编写TeaUserService接口
  • 编写TeaUserServiceImpl

LoginController

package com.study.controller;

import com.study.pojo.TeaUser;
import com.study.pojo.Users;
import com.study.service.TeaUserService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class LoginController {

    //教师登录
    @PostMapping("/tealogin")
    public String teaLogin(String username,String userpwd,HttpServletRequest request){
        TeaUser teaUser = teaUserService.teaLogin(username, userpwd);
        if(teaUser==null){//登录密码错误
            request.getSession().setAttribute("msg","登录密码错误");
            return "redirect:/toTeacher";//返回登录首页
        }else{//登录成功
            String teaTruename = teaUserService.getTeaTruename(username);//获取老师的姓名
            request.getSession().setAttribute("Teatruename",teaTruename);//把老师的姓名返回前端页面
            return "teacher/manage";//跳转到教师的管理页面
        }
    }
}

TeaUserDao

package com.study.dao;

import com.study.pojo.TeaUser;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

@Mapper
@Component
public interface TeaUserDao {
    //教师登录
    TeaUser teaLogin(String username,String userpwd);
    //获取教师姓名
    String getTeaTruename(String username);
}

TeaUser

package com.study.pojo;

public class TeaUser {

    private Integer userid;
    private String username;
    private String userpwd;
    private String truename;
    private String classid;

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserpwd() {
        return userpwd;
    }

    public void setUserpwd(String userpwd) {
        this.userpwd = userpwd;
    }

    public String getTruename() {
        return truename;
    }

    public void setTruename(String truename) {
        this.truename = truename;
    }

    public String getClassid() {
        return classid;
    }

    public void setClassid(String classid) {
        this.classid = classid;
    }
}

TeaUserService

package com.study.service;

import com.study.pojo.TeaUser;

public interface TeaUserService {
    TeaUser teaLogin(String username,String userpwd);
    String getTeaTruename(String username);
}

TeaUserServiceImpl

package com.study.service.impl;

import com.study.dao.TeaUserDao;
import com.study.pojo.TeaUser;
import com.study.service.TeaUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class TeaUserServiceImpl implements TeaUserService {
    @Autowired
    TeaUserDao teaUserDao;//自动注入

    @Override
    public TeaUser teaLogin(String username, String userpwd) {
        return teaUserDao.teaLogin(username,userpwd);
    }

    @Override
    public String getTeaTruename(String username) {
        return teaUserDao.getTeaTruename(username);
    }
}

TeaUserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.study.dao.TeaUserDao">
    <select id="teaLogin" resultType="com.study.pojo.TeaUser">
        select * from teauser where username=#{username}
                                and userpwd=#{userpwd}
    </select>
    <select id="getTeaTruename" resultType="java.lang.String">
        select truename from teauser where username=#{username}
    </select>
</mapper>

 运行结果:

 学生的查询操作

LoginController

package com.study.controller;

import com.study.pojo.TeaUser;
import com.study.pojo.Users;
import com.study.service.TeaUserService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class LoginController {

    //教师登录
    @PostMapping("/tealogin")
    public String teaLogin(String username,String userpwd,HttpServletRequest request){

        //查询班级id
        Integer classId=teaUserService.getClassId(username);
        //老师登录
        TeaUser teaUser = teaUserService.teaLogin(username, userpwd);
        if(teaUser==null){//登录密码错误
            request.getSession().setAttribute("msg","登录密码错误");
            return "redirect:/toTeacher";//返回登录首页
        }else{//登录成功
            String teaTruename = teaUserService.getTeaTruename(username);//获取老师的姓名
            request.getSession().setAttribute("Teatruename",teaTruename);//把老师的姓名返回前端页面
            request.getSession().setAttribute("TeaClassid",classId);//把班级id返回前端
            return "teacher/manage";//跳转到教师的管理页面
        }
    }
}

TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.PClass;
import com.study.pojo.Users;
import com.study.service.PClassService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
public class TeacherController {
    @Autowired
    PClassService pClassService;
    @Autowired
    UsersService usersService;

    @GetMapping("/StudentList")
    public String findStuUsers(HttpServletRequest request, Model model,
                               @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        //获取班级id
        Integer teaClassid = (Integer)request.getSession().getAttribute("TeaClassid");
        //查看老师所在班级
        PClass classid = pClassService.getClassid(teaClassid);
        model.addAttribute("pj",classid);//返回数据到前端

        //设置分页
        PageHelper.startPage(pageNum,5);
        //查询学生列表
        List<Users> users = usersService.pageByClassid(teaClassid);
        PageInfo<Users> usersPageInfo = new PageInfo<>(users);
        model.addAttribute("pageInfo",usersPageInfo);
        model.addAttribute("liss",users);

        return "teacher/StudentList";
    }
}

PClassDao

package com.study.dao;

import com.study.pojo.PClass;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 接口层
 */
@Mapper
@Component
public interface PClassDao {
    //查询班级id
    PClass getClassId(Integer classid);
}

 TeaUserDao

package com.study.dao;

import com.study.pojo.TeaUser;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

@Mapper
@Component
public interface TeaUserDao {
    //获取班级id
    Integer getClassId(String username);
}

 UserDao

package com.study.dao;

import com.study.pojo.Users;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UsersDao {

    List<Users> pageById(Integer classid);
}

PClassService

package com.study.service;

import com.study.pojo.PClass;

import java.util.List;

public interface PClassService {
    PClass getClassid(Integer classid);
}

 TeaUserService

package com.study.service;

import com.study.pojo.TeaUser;

public interface TeaUserService {
    Integer getClassId(String username);
}

UsersService

package com.study.service;

import com.study.pojo.Users;

import java.util.List;

public interface UsersService {
    //根据id查询
    List<Users> pageByClassid(Integer classid);
}

 PClassServiceImpl

package com.study.service.impl;

import com.study.dao.PClassDao;
import com.study.pojo.PClass;
import com.study.service.PClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PClassServiceImpl implements PClassService {
    @Override
    public PClass getClassid(Integer classid) {
        return pClassDao.getClassId(classid);
    }
}

TeaUserServiceImpl

package com.study.service.impl;

import com.study.dao.TeaUserDao;
import com.study.pojo.TeaUser;
import com.study.service.TeaUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class TeaUserServiceImpl implements TeaUserService {
    @Override
    public Integer getClassId(String username) {
        return teaUserDao.getClassId(username);
    }
}

UsersServiceImpl

package com.study.service.impl;

import com.study.dao.UsersDao;
import com.study.pojo.Users;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UsersServiceImpl implements UsersService {
    @Override
    public List<Users> pageByClassid(Integer classid) {
        return usersDao.pageById(classid);
    }
}

 PClassMapper.xml

<select id="getClassId" resultType="com.study.pojo.PClass">
     select * from pclass where classid=#{classid}
</select>

TeaUserMapper.xml

<select id="getClassId" resultType="java.lang.Integer">
     select classid from teauser where username=#{username}
</select>

UsersMapper.xml

<select id="pageById" resultType="com.study.pojo.Users">
     select * from users where classid=#{classid}
</select>

 运行结果:

学生的添加操作

TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.PClass;
import com.study.pojo.Users;
import com.study.service.PClassService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
public class TeacherController {
    @Autowired
    PClassService pClassService;
    @Autowired
    UsersService usersService;

    @GetMapping("/StudentList")
    public String findStuUsers(HttpServletRequest request, Model model,
                               @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        //获取所有班级信息
        List<PClass> allPClass=pClassService.getAllPClass();
        model.addAttribute("list",allPClass);
        return "teacher/StudentList";

    }

    //添加学生
    @PostMapping("/addStu")
    public String addStuUsers(String username,String userpwd,String truename,Integer classid){
        //查询学生是否存在
        Users byName = usersService.getByName(username);
        Users users=new Users();
        if(byName==null){
            users.setUsername(username);
            users.setUserpwd(userpwd);
            users.setTruename(truename);
            users.setClassid(classid);
            usersService.addUsers(users);
        }else{
            System.out.println("该学生已存在");
        }
        return "rediect:/StudentList";
    }
}

运行结果:

学生的修改操作

TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.PClass;
import com.study.pojo.Users;
import com.study.service.PClassService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * exams   com.sxt.controller
 * 2022-07-03  09:43
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/3  9:43
 */
@Controller
public class TeacherController {
    //修改学生
    @PostMapping("/updateStu")
    public String updStuUser(Users users){
        usersService.updateUsers(users);
        return "redirect:/StudentList";
    }

}

 UserDao

package com.study.dao;

import com.study.pojo.Users;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

import java.util.List;

@Mapper
@Component
public interface UsersDao {//由此去编写UsersDao.xml文件里的sql语句

    Integer updateUsers(Users users);

    Users getByUserid(Integer userid);
}

UsersService

package com.study.service;

import com.study.pojo.Users;

import java.util.List;

public interface UsersService {

    Integer updateUsers(Users users);

    Users getByUserid(Integer userid);
}

 UsersServiceImpl

package com.study.service.impl;

import com.study.dao.UsersDao;
import com.study.pojo.Users;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UsersServiceImpl implements UsersService {

    @Override
    public Integer updateUsers(Users users) {//修改学生信息
        return usersDao.updateUsers(users);
    }

    @Override
    public Users getByUserid(Integer userid) {
        return usersDao.getByUserid(userid);
    }
}

UsersMapper.xml

<update id="updateUsers">
        update users set username=#{username},
                         userpwd=#{userpwd},
                         truename=#{truename},
                         classid=#{classid}
                    where userid=#{userid}
</update>
<select id="getByUserid" resultType="com.study.pojo.Users">
        select * from users where userid=#{userid}
</select>

 学生的删除操作

写代码的逻辑顺序:

  1. controller层:TeacherController
  2. dao层:UsersDao
  3. mapper层:UsersMapper.xml
  4. service层:UsersService
  5. service层:UsersServiceImpl
  6. controller层:TeacherController

 TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.PClass;
import com.study.pojo.Users;
import com.study.service.PClassService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * exams   com.sxt.controller
 * 2022-07-03  09:43
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/3  9:43
 */
@Controller
public class TeacherController {

    //删除单个学生
    @GetMapping("/DeleteStu")
    public String deleteUsers(HttpServletRequest request){
        Integer userid=Integer.valueOf(request.getParameter("userid"));//获取学生id,通过id单个删除学生
        usersService.delUserid(userid);
        return "redirect:/StudentList";
    }
    //删除老师所在班级的所有学生
    @GetMapping("/deleteAll")
    public String deleteUsersAll(HttpServletRequest request){
        //获取班级id
        Integer teaClassid = (Integer) request.getSession().getAttribute("TeaClassid");
        usersService.delClassid(teaClassid);
        return "redirect:/StudentList";
    }

}

UserDao

package com.study.dao;

import com.study.pojo.Users;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

import java.util.List;

@Mapper
@Component
public interface UsersDao {

    Integer delUserid(Integer userid);

    Integer delClassid(Integer classid);
}

 UsersMapper.xml

    <delete id="delUserid">
        delete from users where userid=#{userid}
    </delete>
    <delete id="delClassid">
        delete from users where classid=#{classid}
    </delete>

UsersService

package com.study.service;

import com.study.pojo.Users;

import java.util.List;

public interface UsersService {
    //根据id删除学生
    Integer delUserid(Integer userid);
    //根据班级id删除整班学生
    Integer delClassid(Integer classid);
}

 UsersServiceImpl

package com.study.service.impl;

import com.study.dao.UsersDao;
import com.study.pojo.Users;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UsersServiceImpl implements UsersService {

    @Override
    public Integer delUserid(Integer userid) {
        return usersDao.delUserid(userid);
    }

    @Override
    public Integer delClassid(Integer classid) {
        return usersDao.delClassid(classid);
    }
}

运行结果:

题的查询

Subject

package com.study.pojo;

public class Subject {
    private Integer sid;
    private Integer cno;
    private String scontent;
    private String sa;
    private String sb;
    private String sc;
    private String sd;
    private String skey;
    private Course course;

    public String getSkey() {
        return skey;
    }

    public void setSkey(String skey) {
        this.skey = skey;
    }

    public Course getCourse() {
        return course;
    }

    public void setCourse(Course course) {
        this.course = course;
    }

    public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public Integer getCno() {
        return cno;
    }

    public void setCno(Integer cno) {
        this.cno = cno;
    }

    public String getScontent() {
        return scontent;
    }

    public void setScontent(String scontent) {
        this.scontent = scontent;
    }

    public String getSa() {
        return sa;
    }

    public void setSa(String sa) {
        this.sa = sa;
    }

    public String getSb() {
        return sb;
    }

    public void setSb(String sb) {
        this.sb = sb;
    }

    public String getSc() {
        return sc;
    }

    public void setSc(String sc) {
        this.sc = sc;
    }

    public String getSd() {
        return sd;
    }

    public void setSd(String sd) {
        this.sd = sd;
    }
}

Course

package com.study.pojo;

public class Course {
    private Integer cno;
    private String cname;

    public Integer getCno() {
        return cno;
    }

    public void setCno(Integer cno) {
        this.cno = cno;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }
}

 SubjectDao

package com.study.dao;

import com.study.pojo.Subject;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper
@Component
public interface SubjectDao {
    //查询全部题
    List<Subject> getAllSubject();
}

CourseDao

package com.study.dao;

import com.study.pojo.Course;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

@Mapper
@Component
public interface CourseDao {
    //通过id查询课程
    Course getAllById(Integer cno);
}

SubjectMapper.xml

    <select id="getAllSubject" resultType="com.study.pojo.Subject">
        select * from subject
    </select>

 CourseMapper.xml

    <select id="getAllById" resultType="com.study.pojo.Course">
        select * from course where cno=#{cno}
    </select>

SubjectService

package com.study.service;

import com.study.pojo.Subject;

import java.util.List;

public interface SubjectService {
    List<Subject> getAllSubject();
}

 CourseService

package com.study.service;

import com.study.pojo.Course;
import org.springframework.stereotype.Service;

public interface CourseService {
    Course getAllById(Integer cno);
}

SubjectServiceImpl

package com.study.service.impl;

import com.study.dao.SubjectDao;
import com.study.pojo.Subject;
import com.study.service.SubjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SubjectServiceImpl implements SubjectService {
    @Autowired
    SubjectDao subjectDao;
    @Override
    public List<Subject> getAllSubject() {
         return subjectDao.getAllSubject();
    }
}

 CourseServiceImpl

package com.study.service.impl;

import com.study.dao.CourseDao;
import com.study.pojo.Course;
import com.study.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class CourseServiceImpl implements CourseService {
    @Autowired
    CourseDao courseDao;
    @Override
    public Course getAllById(Integer cno) {
        return courseDao.getAllById(cno);
    }
}

TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.Course;
import com.study.pojo.PClass;
import com.study.pojo.Subject;
import com.study.pojo.Users;
import com.study.service.CourseService;
import com.study.service.PClassService;
import com.study.service.SubjectService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * exams   com.sxt.controller
 * 2022-07-03  09:43
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/3  9:43
 */
@Controller
public class TeacherController {
    //查询题目
    @GetMapping("/finddanxuan")
    public String findSingle(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,Model model){
        PageHelper.startPage(pageNum,5);//题目分页显示
        List<Subject> allSubject = subjectService.getAllSubject();
        for(Subject subject:allSubject){//查询题目
            Course allById=courseService.getAllById(subject.getCno());
            subject.setCourse(allById);
        }
        PageInfo<Subject> subjectPageInfo = new PageInfo<>(allSubject);
        model.addAttribute("pageInfo",subjectPageInfo);//传回前端 
        model.addAttribute("subjectlist",allSubject);//传回前端 
        return "teacher/Single";
    }
}

 运行结果:

题的添加

course这块在这部分主要是做下拉框的课程选择部分的 

SubjectDao

package com.study.dao;

import com.study.pojo.Subject;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper
@Component
public interface SubjectDao {
    //添加题
    Integer addSubject(Subject subject);
}

CourseDao

package com.study.dao;

import com.study.pojo.Course;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper
@Component
public interface CourseDao {
    //查询全部
    List<Course> getAllCourse();
}

 SubjectMapper.xml

    <insert id="addSubject">
        insert into subject(sid,cno,scontent,sa,sb,sc,sd,skey)
            values(default,#{cno},#{scontent},#{sa},#{sb},#{sc},#{sd},#{skey})
    </insert>

CourseMapper.xml

    <select id="getAllCourse" resultType="com.study.pojo.Course">
        select * from course
    </select>

 SubjectService

package com.study.service;

import com.study.pojo.Subject;

import java.util.List;

public interface SubjectService {
    Integer addSingle(Subject subject);
}

CourseService

package com.study.service;

import com.study.pojo.Course;
import org.springframework.stereotype.Service;

import java.util.List;

public interface CourseService {
    List<Course> getAllCourse();
}

 SubjectServiceImpl

package com.study.service.impl;

import com.study.dao.SubjectDao;
import com.study.pojo.Subject;
import com.study.service.SubjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SubjectServiceImpl implements SubjectService {

    @Override
    public Integer addSingle(Subject subject) {
        return subjectDao.addSubject(subject);
    }
}

CourseServiceImpl

package com.study.service.impl;

import com.study.dao.CourseDao;
import com.study.pojo.Course;
import com.study.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CourseServiceImpl implements CourseService {
    @Override
    public List<Course> getAllCourse() {
        return courseDao.getAllCourse();
    }
}

 TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.Course;
import com.study.pojo.PClass;
import com.study.pojo.Subject;
import com.study.pojo.Users;
import com.study.service.CourseService;
import com.study.service.PClassService;
import com.study.service.SubjectService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * exams   com.sxt.controller
 * 2022-07-03  09:43
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/3  9:43
 */
@Controller
public class TeacherController {
    //获取所有课程
    @ResponseBody //因为返回的是一组数据
    @GetMapping("/findAllCourse")
    public List<Course> courseList(){
        List<Course> allCourse = courseService.getAllCourse();
        return allCourse;
    }
    //添加题
    @PostMapping("/addSingle")
    public String addSingle(Integer cno,String scontent,String sa,String sb,String sc,String sd,String skey){
        Subject subject=new Subject();
        subject.setCno(cno);
        subject.setScontent(scontent);
        subject.setSa(sa);
        subject.setSb(sb);
        subject.setSc(sc);
        subject.setSd(sd);
        subject.setSkey(skey);
        subjectService.addSingle(subject);//添加题目
        return "redirect:/finddanxuan";
    }
}

运行结果:

题的修改

SubjectDao

package com.study.dao;

import com.study.pojo.Subject;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper
@Component
public interface SubjectDao {
    //修改
    Integer updateSingle(Subject subject);
    //id查询
    Subject getBySid(Integer sid);
}

SubjectMapper.xml

    <update id="updateSingle">
        update subject set cno=#{cno},
                            scontent=#{scontent},
                            sa=#{sa},
                            sb=#{sb},
                            sc=#{sc},
                            sd=#{sd},
                            skey=#{skey}
                        where sid=#{sid}
    </update>
    <select id="getBySid" resultType="com.study.pojo.Subject">
        select * from subject where sid=#{sid}
    </select>

 SubjectService

package com.study.service;

import com.study.pojo.Subject;

import java.util.List;

public interface SubjectService {
    Integer updateSingle(Subject subject);
    Subject getBySid(Integer sid);
}

SubjectServiceImpl

package com.study.service.impl;

import com.study.dao.SubjectDao;
import com.study.pojo.Subject;
import com.study.service.SubjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SubjectServiceImpl implements SubjectService {

    @Override
    public Integer updateSingle(Subject subject) {
        return subjectDao.updateSingle(subject);
    }

    @Override
    public Subject getBySid(Integer sid) {
        return subjectDao.getBySid(sid);
    }
}

 TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.Course;
import com.study.pojo.PClass;
import com.study.pojo.Subject;
import com.study.pojo.Users;
import com.study.service.CourseService;
import com.study.service.PClassService;
import com.study.service.SubjectService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * exams   com.sxt.controller
 * 2022-07-03  09:43
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/3  9:43
 */
@Controller
public class TeacherController {
    //获取题数据
    @ResponseBody
    @PostMapping("/findBySid")
    public Subject findBySid(@RequestBody Subject subject){
        Subject subject1 = subjectService.getBySid(subject.getSid());
        if(subject1!=null){
            return subject1;
        }else{
            return null;
        }
    }
    //修改题
    @PostMapping("/updateSingle")
    public String updSingle(Subject subject){
        subjectService.updateSingle(subject);
        return "redirect:/finddanxuan";
    }
}

运行结果:

题的删除

SubjectDao

package com.study.dao;

import com.study.pojo.Subject;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper
@Component
public interface SubjectDao {
    //删除题
    Integer delSingle(Integer sid);
}

SubjectMapper.xml

    <delete id="delSingle">
        delete from subject where sid=#{sid}
    </delete>

 SubjectService

package com.study.service;

import com.study.pojo.Subject;

import java.util.List;

public interface SubjectService {
    Integer delSingle(Integer sid);
}

SubjectServiceImpl

package com.study.service.impl;

import com.study.dao.SubjectDao;
import com.study.pojo.Subject;
import com.study.service.SubjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SubjectServiceImpl implements SubjectService {
    @Override
    public Integer delSingle(Integer sid) {
        return subjectDao.delSingle(sid);
    }
}

 TeacherController

package com.study.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.study.pojo.Course;
import com.study.pojo.PClass;
import com.study.pojo.Subject;
import com.study.pojo.Users;
import com.study.service.CourseService;
import com.study.service.PClassService;
import com.study.service.SubjectService;
import com.study.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * exams   com.sxt.controller
 * 2022-07-03  09:43
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/3  9:43
 */
@Controller
public class TeacherController {
    //删除题
    @PostMapping("/deleteSingle")
    public String delSingle(@RequestParam Integer sid){
        subjectService.delSingle(sid);
        return "redirect:/finddanxuan";
    }
}

运行结果:

考试信息操作

  • 创建考试
  • 查询考试
  • 修改考试
  • 删除考试

TeacherController

package com.sxt.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sxt.pojo.*;
import com.sxt.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.tags.Param;

import javax.jws.soap.SOAPBinding;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

/**
 * exams   com.sxt.controller
 * 2022-07-03  09:43
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/3  9:43
 */
@Controller
public class TeacherController {
    @Autowired
    ExamService examService;
    @Autowired
    PaperService paperService;
    //查询试卷信息
    @GetMapping("/paperDetails")
    public  String paperDetails(Integer eid,Model model){
        List<Paper> byEid = paperService.getByEid(eid);
        model.addAttribute("tm",byEid);
        Exam exam = examService.getExam(eid);
        model.addAttribute("exam",exam);
        return "teacher/paperDetails";
    }
    //获取所有班级,主要是下拉框里的内容
    @ResponseBody
    @GetMapping("/findAllClasses")
    public List<PClass> findAllClasses(){
        List<PClass> allPClass=pClassService.getAllPClass();
        return allPClass;
    }
    //查询一场考试
    @ResponseBody
    @PostMapping("/findByOneExam")
    public Exam findByOneExam(@RequestBody Exam exam){
        Exam exam1 = examService.getExam(exam.getEid());
        if(exam1==null){//考试信息为空,则返回空,否则返回考试信息
            return null;
        }else{
            return exam1;

        }
    }
    //修改考试信息
    @PostMapping("/updateExam")
    public String updateExam(Exam exam){
        examService.updExam(exam);
        return "redirect:/selectexam";
    }
    //删除考试信息
    @GetMapping("/deleteExam")
    public String deleteExam(Integer eid){
        examService.delExam(eid);
        return "redirect:/selectexam";
    }
}

ExamDao

package com.sxt.dao;

import com.sxt.pojo.Exam;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * exams   com.sxt.dao
 * 2022-07-17  10:16
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/17  10:16
 */
@Mapper
public interface ExamDao {
    Integer addExam(Exam exam);

    //查询所有考试信息
    List<Exam> getAllExam();
    //根据id查询
    Exam getExam(Integer eid);
    //修改考试
    Integer updExam(Exam exam);
    //删除考试
    Integer delExam(Integer eid);
}

 PaperDao

package com.sxt.dao;

import com.sxt.pojo.Paper;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * exams   com.sxt.dao
 * 2022-07-17  11:07
 *
 * @author sxt  Administrator
 * description : 不可描述
 * @date 2022/7/17  11:07
 */
@Mapper
public interface PaperDao {
    Integer addPaper(Paper paper);
    //根据考试信息id查询试卷
    List<Paper> getByEid(Integer eid);
    //删除试卷信息:eid
    Integer deleteByEid(Integer eid);
}

 Exam

package com.sxt.pojo;

import java.util.Date;

public class Exam {
    private Integer eid;
    private String pname;
    private Integer cno;
    private Integer useid;
    private Integer classid;
    private Integer singlenumber;
    private  Integer singlecore;
    private Date examdate;
    private  Date examtime;
    private Integer testtime;
    private Course course;

    //getter,setter方法略
}

Paper

package com.sxt.pojo;
public class Paper {
    private Integer pid;
    private Integer eid;
    private  Integer sid;
    private Integer cno;
    private String scontent;
    private String sa;
    private String sb;
    private String sc;
    private  String sd;
    private String skey;

    //getter,setter方法略
}

 ExamService

package com.sxt.service;

import com.sxt.pojo.Exam;

import java.util.List;

public interface ExamService {
    Integer addExam(Exam exam);

    List<Exam> getAllExam();
    Exam getExam(Integer eid);
    Integer updExam(Exam exam);
    Integer delExam(Integer eid);
}

PaperService

package com.sxt.service;

import com.sxt.pojo.Paper;

import java.util.List;

public interface PaperService {
    Integer addPaper(Paper paper);
    List<Paper> getByEid(Integer eid);
}

 ExamServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.ExamDao;
import com.sxt.dao.PaperDao;
import com.sxt.pojo.Exam;
import com.sxt.service.ExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ExamServiceImpl implements ExamService {
    @Autowired
    ExamDao examDao;
    @Autowired
    PaperDao paperDao;
    @Override
    public Integer addExam(Exam exam) {
        return examDao.addExam(exam);
    }

    @Override
    public List<Exam> getAllExam() {
        return examDao.getAllExam();
    }

    @Override
    public Exam getExam(Integer eid) {
        return examDao.getExam(eid);
    }

    @Override
    public Integer updExam(Exam exam) {
        return examDao.updExam(exam);
    }

    @Override
    public Integer delExam(Integer eid) {
        paperDao.deleteByEid(eid);//清空试卷信息
        Integer integer = examDao.delExam(eid);
        return integer;
    }
}

PaperServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.PaperDao;
import com.sxt.pojo.Paper;
import com.sxt.service.PaperService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PaperServiceImpl implements PaperService {
    @Autowired
    PaperDao paperDao;
    @Override
    public Integer addPaper(Paper paper) {
        return paperDao.addPaper(paper);
    }

    @Override
    public List<Paper> getByEid(Integer eid) {
        return paperDao.getByEid(eid);
    }
}

 ExamMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sxt.dao.ExamDao">

    <insert id="addExam" useGeneratedKeys="true" keyProperty="eid">
        insert into exam (eid,pname,cno,useid,classid,singlenumber,
        singlecore,examdate,examtime,testtime)
        values (default,#{pname},#{cno},#{useid},#{classid},#{singlenumber},
                #{singlecore},#{examdate},#{examtime},#{testtime})
    </insert>
    <update id="updExam">
        update exam set pname=#{pname},
                        cno=#{cno},
                        useid=#{useid},
                        classid=#{classid},
                        singlenumber=#{singlenumber},
                        singlecore=#{singlecore},
                        examdate=#{examdate},
                        examtime=#{examtime},
                        testtime=#{testtime}
                    where eid=#{eid}
    </update>
    <delete id="delExam">
        delete from exam where eid=#{eid}
    </delete>
    <select id="getAllExam" resultType="com.sxt.pojo.Exam">
        select * from exam
    </select>
    <select id="getExam" resultType="com.sxt.pojo.Exam">
        select * from exam where eid=#{eid}
    </select>
</mapper>

PaperMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sxt.dao.PaperDao">
    <insert id="addPaper">
        insert into paper(pid,eid,sid,cno,
                          scontent,sa,sb,sc,sd,skey)
                          values (default,#{eid},#{sid},
                                  #{cno},#{scontent},#{sa},#{sb},
                                  #{sc},#{sd},#{skey})
    </insert>
    <delete id="deleteByEid">
        delete from paper where eid=#{eid}
    </delete>
    <select id="getByEid" resultType="com.sxt.pojo.Paper">
        select * from paper where eid=#{eid}
    </select>
</mapper>


 老师退出

TeaUserController

package com.sxt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class TeaUserController {
    //退出登录
    @GetMapping("/Tlogout")
    public String Tlogout(HttpServletRequest request){//session请查看LoginController文件
        //需要清除老师id的session
        request.getSession().removeAttribute("Teauserid");
        //需要清除老师班级id的session
        request.getSession().removeAttribute("TeaClassid");
        //需要清除老师真实姓名的session
        request.getSession().removeAttribute("Teatruename");
        return "redirect:/toTeacher";//跳转到老师登录的页面
    }
}

运行结果:

 学生修改密码

LoginController

package com.sxt.controller;


import com.sxt.pojo.TeaUser;
import com.sxt.pojo.Users;

import com.sxt.service.TeaUserService;
import com.sxt.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;

@Controller

public class LoginController {
    //学生登陆
    @PostMapping("/stulogin")
    public String stulogin(String username, String userpwd, HttpServletRequest servletRequest){
        if (login==null){
        }else {
            System.out.println("登陆成功");
            //将用户密码传入前端
            servletRequest.getSession().setAttribute("liss",userpwd);
            //调用获取用户ID的方法
            Integer userid = usersService.getByNameId(username);
            //将获取到的用户ID传入前端
            servletRequest.getSession().setAttribute("lis",userid);
            return "student/StuMan";
        }

    }

}

StuUserController

package com.sxt.controller;

import com.sxt.pojo.PClass;
import com.sxt.pojo.Users;
import com.sxt.service.PClassService;
import com.sxt.service.UsersService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.List;


@Controller
public class StuUserController {
    //学生修改登录密码
    /*
    根据前端请求方式和端口,来写注解
        <form id="loginForm" th:action="@{/xiugai}" method="post" >
     */
    @PostMapping("/xiugai")
    public String updateUserPwd(String userpwd,Integer userid){
        Integer i = usersService.updUserPwd(userpwd, userid);
        if(i==0){
            return "";
        }else{//修改成功,返回登录页面
            return "redirect:/toStuLogin";
        }
    }
}

 UsersDao

package com.sxt.dao;

import com.sxt.pojo.Users;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UsersDao {
    //修改密码
    Integer updUserPwd(String userpwd,Integer userid);
    //通过用户名查询用户id
    Integer getByNameId(String username);
}

UsersMapper.xml

    <!--学生修改登录密码-->
    <update id="updUserPwd">
        update users set userpwd=#{userpwd}
                    where userid=#{userid}
    </update>
    <!--通过用户名查询用户id-->
    <select id="getByNameId" resultType="java.lang.Integer">
        select userid from users where username=#{username}
    </select>

 UsersService

package com.sxt.service;

import com.sxt.pojo.Users;

import java.util.List;

public interface UsersService {
    //学生修改登录密码的接口
    Integer updUserPwd(String userpwd,Integer userid);
    //通过用户名查询用户id
    Integer getByNameId(String username);
}

UsersServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.UsersDao;
import com.sxt.pojo.Users;
import com.sxt.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UsersServiceImpl implements UsersService {
    //学生修改登录密码的实现方法,封装成一个方法,再调用
    @Override
    public Integer updUserPwd(String userpwd, Integer userid) {
        return usersDao.updUserPwd(userpwd,userid);
    }
    //通过用户名查询用户id
    @Override
    public Integer getByNameId(String username) {
        return usersDao.getByNameId(username);
    }
}

 运行结果:

学生首页完善(添加姓名和退出登录)

LoginController

package com.sxt.controller;


import com.sxt.pojo.TeaUser;
import com.sxt.pojo.Users;

import com.sxt.service.TeaUserService;
import com.sxt.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;

@Controller

public class LoginController {
    //学生登陆
    @PostMapping("/stulogin")
    public String stulogin(String username, String userpwd, HttpServletRequest servletRequest){
        if (login==null){
        }else {
            //获取用户的真实姓名
            String trueName = usersService.getTrueName(username);
            //将获取到的用户的真实姓名传入前端,即在前端显示学生的真实姓名
            servletRequest.getSession().setAttribute("truename",trueName);
            return "student/StuMan";
        }

    }
}

StuUserController

package com.sxt.controller;

import com.sxt.pojo.PClass;
import com.sxt.pojo.Users;
import com.sxt.service.PClassService;
import com.sxt.service.UsersService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.List;


@Controller
public class StuUserController {
    //退出登录
    @GetMapping("/logout")
    public String slogout(HttpServletRequest request){
        //清除用户ID的session
        request.getSession().removeAttribute("lis");
        //清除用户真实姓名的session
        request.getSession().removeAttribute("truename");
        return "redirect:/toStuLogin";
    }
}

 UsersDao

package com.sxt.dao;

import com.sxt.pojo.Users;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UsersDao {
    //通过用户名查询学生的真实姓名
    String getTrueName(String username);
}

UsersMapper.xml

    <!--通过用户名查询学生的真实姓名-->
    <select id="getTrueName" resultType="java.lang.String">
        select truename from users where username=#{username}
    </select>

 UsersService

package com.sxt.service;

import com.sxt.pojo.Users;

import java.util.List;

public interface UsersService {
    //通过用户名查询学生的真实姓名
    String getTrueName(String username);
}

UsersServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.UsersDao;
import com.sxt.pojo.Users;
import com.sxt.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UsersServiceImpl implements UsersService {
    //通过用户名查询学生真实姓名
    @Override
    public String getTrueName(String username) {
        return usersDao.getTrueName(username);
    }
}

运行结果:

考试中心的考试信息列表

ExamController

package com.sxt.controller;

import com.sxt.pojo.Course;
import com.sxt.pojo.Exam;
import com.sxt.service.CourseService;
import com.sxt.service.ExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
public class ExamController {
    @Autowired
    ExamService examService;
    @Autowired
    CourseService courseService;

    @GetMapping("/examList")
    public String examList(HttpServletRequest request, Model model){
        //获取班级ID
        Integer classid = (Integer) request.getSession().getAttribute("classid");
        List<Exam> examClassid = examService.getExamClassid(classid);
        //获取课程ID
        for (Exam exam : examClassid){
            Course allById = courseService.getAllById(exam.getCno());
            exam.setCourse(allById);
        }
        //把课程ID传入前端
        model.addAttribute("examslenth",examClassid.size());
        model.addAttribute("exams",examClassid);
        return "student/examList";
    }
}

LoginController

package com.sxt.controller;


import com.sxt.pojo.TeaUser;
import com.sxt.pojo.Users;

import com.sxt.service.TeaUserService;
import com.sxt.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;

@Controller

public class LoginController {
    //学生登陆
    @PostMapping("/stulogin")
    public String stulogin(String username, String userpwd, HttpServletRequest servletRequest){
        if (login==null){
        }else {
            //通过用户名查询班级ID
            Integer byClass = usersService.getByClass(username);
            //将获取到的班级ID传入前端
            servletRequest.getSession().setAttribute("classid",byClass);
            return "student/StuMan";
        }

    }
}

 ExamDao

package com.sxt.dao;

import com.sxt.pojo.Exam;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface ExamDao {
    //通过班级id查询考试信息
    List<Exam> getExamClassid(Integer classid);
}

UsersDao

package com.sxt.dao;

import com.sxt.pojo.Users;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UsersDao {
    //通过用户名查询班级ID
    Integer getByClass(String username);
}

 ExamMapper.xml

    <!--通过班级id查询考试信息-->
    <select id="getExamClassid" resultType="com.sxt.pojo.Exam">
        select * from exam where classid=#{classid}
    </select>

UsersMapper.xml

    <!--通过用户名查询班级ID-->
    <select id="getByClass" resultType="java.lang.Integer">
        select classid from users where username=#{username}
    </select>

 ExamService

package com.sxt.service;

import com.sxt.pojo.Exam;

import java.util.List;

public interface ExamService {
    //通过班级id查询考试信息
    List<Exam> getExamClassid(Integer classid);
}

UsersService

package com.sxt.service;

import com.sxt.pojo.Users;

import java.util.List;

public interface UsersService {
    //通过用户名查询班级ID
    Integer getByClass(String username);
}

 ExamServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.ExamDao;
import com.sxt.dao.PaperDao;
import com.sxt.pojo.Exam;
import com.sxt.service.ExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ExamServiceImpl implements ExamService {
    //通过班级id查询考试信息
    @Override
    public List<Exam> getExamClassid(Integer classid) {
        return examDao.getExamClassid(classid);
    }
}

UsersSerivceImpl

package com.sxt.service.impl;

import com.sxt.dao.UsersDao;
import com.sxt.pojo.Users;
import com.sxt.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UsersServiceImpl implements UsersService {
    //通过用户名查询班级ID
    @Override
    public Integer getByClass(String username) {
        return usersDao.getByClass(username);
    }
}

 运行结果:

注意创建数据测试时,创建考试的老师所在班级ID和学生所在班级ID要一致

答卷

ExamController

package com.sxt.controller;

import com.sxt.pojo.Course;
import com.sxt.pojo.Exam;
import com.sxt.pojo.Paper;
import com.sxt.service.CourseService;
import com.sxt.service.ExamService;
import com.sxt.service.PaperService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
public class ExamController {
    @Autowired
    PaperService paperService;
    //查询数据
    @ResponseBody
    @PostMapping("/findExamByEid")
    public Exam findExamById(@RequestBody Exam exam){
        Exam exam1 = examService.getExam(exam.getEid());
        if(exam1!=null){//如果不为空,返回考试信息
            return exam1;
        }else{
            return null;
        }
    }
    //查询试卷
    @GetMapping("/paper")
    public String findPaper(Integer eid,HttpServletRequest request,Model model){
        //通过考试信息ID获取试卷问题列表
        List<Paper> byEid = paperService.getByEid(eid);
        int size=byEid.size();
        //获取考试信息
        Exam exam = examService.getExam(eid);
        //传入前端
        request.getSession().setAttribute("single",byEid);
        model.addAttribute("cont",size);
        model.addAttribute("exam",exam);
        return "student/papers";
    }
}

运行结果:

显示考试成绩

Studentexam 

package com.sxt.pojo;

public class Studentexam {
    private Integer seid;
    private Integer userid;
    private Integer classid;
    private Integer eid;
    private String pname;
    private Integer score;
    private Integer zscore;
    private String tjtime;
    //getter,setter方法省略
}

ExamController

package com.sxt.controller;

import com.sun.org.apache.xpath.internal.operations.Mod;
import com.sxt.pojo.Course;
import com.sxt.pojo.Exam;
import com.sxt.pojo.Paper;
import com.sxt.pojo.Studentexam;
import com.sxt.service.CourseService;
import com.sxt.service.ExamService;
import com.sxt.service.PaperService;
import com.sxt.service.StudentExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.util.List;

@Controller
public class ExamController {
    @Autowired
    StudentExamService studentExamService;
    //显示考试成绩
    @PostMapping("/PaperScore")
    public String paperScore(HttpServletRequest request,Model model){
        //存放答案
        String stuArr[]=null;
        //初始成绩
        Integer score=0;
        //计算成绩
        Integer eid = Integer.valueOf(request.getParameter("eid"));
        Exam exam = examService.getExam(eid);
        Integer singlecore = exam.getSinglecore();

        //获取试卷问题列表
        List<Paper> single = (List<Paper>) request.getSession().getAttribute("single");
        //获取试卷ID的值
        for(int i=0;i<single.size();i++){
            Paper paper = single.get(i);
            stuArr = request.getParameterValues(String.valueOf(paper.getSid()));
            if(stuArr!=null){//如果数据不为空就进行答案封装
                String stuKeys="";
                //封装答案
                for(int j=0;j<stuArr.length;j++){
                    stuKeys+=stuArr[i];
                }
                if(stuKeys.equalsIgnoreCase(paper.getSkey())){
                    score+=singlecore;
                }else{

                }
            }else{//否则返回考试信息列表页面
                return "redirect:/examList";
            }
        }
        //计算总成绩
        int zscore=single.size()+singlecore;
        //学生成绩
        model.addAttribute("score",score);
        String pname = request.getParameter("pname");
        String tjtime = request.getParameter("tjtime");
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        Timestamp.valueOf(tjtime);
        //获取classid的值
        Integer classid = (Integer) request.getSession().getAttribute("classid");
        //获取userid的值
        Integer userid = (Integer) request.getSession().getAttribute("lis");

        Studentexam studentexam = new Studentexam();
        //用set方法存储值
        studentexam.setEid(eid);
        studentexam.setPname(pname);
        studentexam.setScore(score);
        studentexam.setClassid(classid);
        studentexam.setUserid(userid);
        studentexam.setTjtime(tjtime);
        studentexam.setZscore(zscore);
        studentExamService.addStudentExam(studentexam);
        return "student/paperScore";
    }
    //查询学生成绩
    @GetMapping("/findAllStuPaper")
    public String findStuPaperList(HttpServletRequest request, Model model){
        //获取用户ID
        Integer userid = (Integer) request.getSession().getAttribute("lis");
        //根据用户ID查询学生成绩
        List<Studentexam> studentexams = studentExamService.getstuExamList(userid);
        //传入前端
        model.addAttribute("stuexamlist",studentexams);
        return "student/stuPaperList";
    }
}

StudentExamDao

package com.sxt.dao;

import com.sxt.pojo.Studentexam;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface StudentExamDao {
    //添加学生成绩
    Integer addStudentExam(Studentexam studentexam);
    //查询学生成绩
    List<Studentexam> getStuPaperList(Integer userid);
}

StudentExamMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sxt.dao.StudentExamDao">
    <!--添加学生成绩-->
    <insert id="addStudentExam">
        insert into studentrxam(seid,userid,classid,eid,
                                pname,zscore,score,tjtime)
                    values(default ,#{userid},#{classid},#{eid},
                            #{pname},#{zscore},#{score},#{tjtime})
    </insert>

    <!--查询学生成绩-->
    <select id="getStuPaperList" resultType="com.sxt.pojo.Studentexam">
        select * from studentrxam where userid=#{userid}
    </select>
</mapper>

StudentExamSerivce

package com.sxt.service;

import com.sxt.pojo.Studentexam;

import java.util.List;

public interface StudentExamService {
    //添加学生成绩
    Integer addStudentExam(Studentexam studentexam);
    //查询学生成绩
    List<Studentexam> getstuExamList(Integer userid);
}

 StudentExamServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.StudentExamDao;
import com.sxt.pojo.Studentexam;
import com.sxt.service.StudentExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentExamServiceImpl implements StudentExamService {
    @Autowired
    StudentExamDao studentExamDao;
    //添加学生成绩
    @Override
    public Integer addStudentExam(Studentexam studentexam) {
        return studentExamDao.addStudentExam(studentexam);
    }

    //查询学生成绩
    @Override
    public List<Studentexam> getstuExamList(Integer userid) {
        return studentExamDao.getStuPaperList(userid);
    }
}

运行结果:

 

学生考试功能的完善

ExamController

package com.sxt.controller;

import com.sun.org.apache.xpath.internal.operations.Mod;
import com.sxt.pojo.Course;
import com.sxt.pojo.Exam;
import com.sxt.pojo.Paper;
import com.sxt.pojo.Studentexam;
import com.sxt.service.CourseService;
import com.sxt.service.ExamService;
import com.sxt.service.PaperService;
import com.sxt.service.StudentExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.util.List;

@Controller
public class ExamController {
    //是否做过该试卷,不可重复考试
    @ResponseBody
    @PostMapping("/findOneStuExam")
    public List<Studentexam> findIsPaper(HttpServletRequest request,@RequestBody Exam exam){
        //获取学生ID
        Integer userid = (Integer) request.getSession().getAttribute("lis");
        //获取考试信息ID
        Integer eid = exam.getEid();
        //是否做过该试卷
        List<Studentexam> isPaper = studentExamService.getIsPaper(userid, eid);
        return isPaper;
    }
    //解决点击在线考试报错
    @GetMapping("/StuMan")
    public String getStuMan(){
        return "student/StuMan";//跳转到在线考试系统页面即可
    }
}

StudentExamDao

package com.sxt.dao;

import com.sxt.pojo.Studentexam;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface StudentExamDao {
    //查询是否做过该试卷
    List<Studentexam> getIsPaper(Integer userid,Integer eid);
}

 StudentExamMapper.xml

    <select id="getIsPaper" resultType="com.sxt.pojo.Studentexam">
        select * from studentrxam where userid=#{userid} and eid=#{eid}
    </select>

StudentExamService

package com.sxt.service;

import com.sxt.pojo.Studentexam;

import java.util.List;

public interface StudentExamService {
    //查询是否做过该试卷
    List<Studentexam> getIsPaper(Integer userid,Integer eid);
}

StudentExamServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.StudentExamDao;
import com.sxt.pojo.Studentexam;
import com.sxt.service.StudentExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentExamServiceImpl implements StudentExamService {
    //查询是否做过该试卷
    @Override
    public List<Studentexam> getIsPaper(Integer userid, Integer eid) {
        return studentExamDao.getIsPaper(userid,eid);
    }
}

 运行结果:

教师查询学生成绩信息

ExamController

package com.sxt.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sun.org.apache.xpath.internal.operations.Mod;
import com.sxt.pojo.*;
import com.sxt.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.util.List;

@Controller
public class ExamController {
    //老师查询学生成绩
    @GetMapping("/findAllScore")
    public String findAllScore(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request, Model model){
        //实现分页功能
        PageHelper.startPage(pageNum,5);//每5条分一页
        //获取老师班级ID
        Integer teaClassid = (Integer) request.getSession().getAttribute("TeaClassid");
        //通过班级ID获取班级信息
        PClass classes = pClassService.getClassid(teaClassid);
        //信息传入前端
        model.addAttribute("cs",classes);
        //老师查询学生成绩
        List<Studentexam> allStuScore = studentExamService.getAllStuScore(teaClassid);
        //通过成绩获取学生信息
        for(Studentexam studentexam : allStuScore){
            Users byUserid = usersService.getByUserid(studentexam.getUserid());
            studentexam.setUsers(byUserid);
        }
        //传入前端 
        PageInfo<Studentexam> studentexamPageInfo = new PageInfo<>(allStuScore);
        model.addAttribute("pageInfo",studentexamPageInfo);
        model.addAttribute("score",allStuScore);
        return "teacher/studentScore";
    }

}

StudentExamDao

package com.sxt.dao;

import com.sxt.pojo.Studentexam;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface StudentExamDao {
    //老师查询试卷信息
    List<Studentexam> getAllStuScore(Integer classid);
}

 StudentExamMapper.xml

    <!--老师查询试卷信息-->
    <select id="getAllStuScore" resultType="com.sxt.pojo.Studentexam">
        select * from studentexam where classid=#{classid}
    </select>

StudentExamService

package com.sxt.service;

import com.sxt.pojo.Studentexam;

import java.util.List;

public interface StudentExamService {
    //老师查询试卷信息
    List<Studentexam> getAllStuScore(Integer classid);
}

 StudentExamServiceImpl

package com.sxt.service.impl;

import com.sxt.dao.StudentExamDao;
import com.sxt.pojo.Studentexam;
import com.sxt.service.StudentExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentExamServiceImpl implements StudentExamService {
    //老师查询试卷信息
    @Override
    public List<Studentexam> getAllStuScore(Integer classid) {
        return studentExamDao.getAllStuScore(classid);
    }
}

运行结果:

配置登录拦截器

LoginInterceptor

package com.sxt.config;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 配置登录拦截器
 */
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //学生ID
        Integer userid = (Integer) request.getSession().getAttribute("lis");
        //老师ID
        Integer teauserid = (Integer) request.getSession().getAttribute("Teauserid");
        //获取URI
        String uri=request.getRequestURI();
        if(userid!=null){
            if(!(uri.equals("/StudentList"))&&!(uri.equals("/DeleteStu"))&&
                    !(uri.equals("/deleteAll"))&&!(uri.equals("/finddanxuan"))&&
                    !(uri.equals("/addSingle"))&&!(uri.equals("/selectexam"))&&
                    !(uri.equals("/addexam"))&&!(uri.equals("/paperDetails"))&&
                    !(uri.equals("/deleteExam"))&&!(uri.equals("/findAllScore"))){
                return true;
            }
        }
        if(teauserid!=null){
            if(!(uri.equals("/examList"))&&!(uri.equals("/paper"))&&
                    !(uri.equals("/findAllStuPaper"))&&!(uri.equals("/StuMan"))){
                return true;
            }
        }
        response.sendRedirect(request.getContextPath()+"/toStuLogin");//跳转回登录页面
        //返回登录页时清空学生和老师的登录信息
        request.getSession().removeAttribute("lis");
        request.getSession().removeAttribute("Teauserid");
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

LoginConfig

package com.sxt.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 声明登录拦截器的类
 */
@Configuration
public class LoginConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册登录拦截器
        InterceptorRegistration interceptorRegistration = registry.addInterceptor(new LoginInterceptor());
        //拦截所有路径
        interceptorRegistration.addPathPatterns("/**");
        //不用拦截的路径:登录页面和静态资源
        interceptorRegistration.excludePathPatterns(
                "/css/**",
                "/fonts/**",
                "/img/**",
                "/js/**",
                "/",
                "/student/login.html",
                "/student/login.html",
                "student/register.html",
                "/toTeacher",
                "/toStuLogin",
                "/stulogin",
                "/tealogin",
                "/register",
                "/CanRegister"
        );
    }
}

 运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于深度学习的单图像人群计数研究:网络设计、损失函数和监控信号

摘要 https://arxiv.org/pdf/2012.15685v2.pdf 单图像人群计数是一个具有挑战性的计算机视觉问题,在公共安全、城市规划、交通管理等领域有着广泛的应用。近年来,随着深度学习技术的发展,人群计数引起了广泛的关注并取得了巨大的成功。通过系统地回顾和总结2015年以来基于深…

rust学习——智能指针Rc

文章目录 Rc 与 ArcRcRc::clone观察引用计数的变化不可变引用一个综合例子Rc 简单总结 多线程无力的 RcArcArc 的性能损耗 总结 Rc 与 Arc Rust 所有权机制要求一个值只能有一个所有者&#xff0c;在大多数情况下&#xff0c;都没有问题&#xff0c;但是考虑以下情况&#xff1…

二维码智慧门牌管理系统升级解决方案:采集要素为智慧城市建设提供精准数据支持

文章目录 前言一、二维码智慧门牌管理系统的升级需求二、采集要素在系统升级中的应用三、消防栓、井盖等采集要素的应用 前言 随着城市化进程的加速&#xff0c;智慧城市的建设已成为未来城市发展的必然趋势。其中&#xff0c;二维码智慧门牌管理系统作为智慧城市的重要组成部…

基于Spring Boot的大学课程排课系统设计与实现

摘 要 大学课程排课是现代教育管理中重要的一环。目前&#xff0c;传统的排课方式已经无法满足日益增长的课程需求和学生个性化的诉求。因此&#xff0c;研究一种基于遗传算法的大学课程排课系统是非常必要的。本研究旨在开发一种基于SpringBoot Vue的大学课程排课系统&#x…

【Java 进阶篇】在Java Web应用中获取ServletContext对象详解

在Java Web应用开发中&#xff0c;ServletContext对象扮演着重要的角色&#xff0c;它允许你在整个Web应用程序中存储和共享数据。ServletContext对象是Servlet容器提供的一种用于管理Web应用程序的全局信息的方式。本文将详细探讨ServletContext对象的概念、用途以及如何在Jav…

算法笔记【8】-合并排序算法

文章目录 一、前言二、合并排序算法基本原理三、实现步骤四、优缺点分析 一、前言 合并排序算法通过采用分治策略和递归思想&#xff0c;实现了高效、稳定的排序功能。本文将深入探讨合并排序算法的原理、实现步骤&#xff0c;并讨论其优缺点。 二、合并排序算法基本原理 合…

AntDB数据库荣获 “2023年信创物联网优秀服务商”

日前&#xff0c;在2023世界数字经济大会暨第十三届智博会 2023京甬信创物联网产融对接会上&#xff0c;AntDB数据库再获殊荣&#xff0c;获评“2023年信创物联网优秀服务商”。 图1&#xff1a;2023年信创物联网优秀服务商颁奖现场 信创物联网是信息技术应用创新与物联网的结…

网络爬虫入门导学

一、内容组织 2、常用的python IDE工具 比较推荐以下几种&#xff1a; 其中IDLE是python自带的/默认的/常用的/入门级编写工具&#xff0c;包含交互式和文件式 适用于&#xff1a;简单直接/入门级/代码不超过300行 Sublime Text是专为程序员开发的第三方专用编程工具&#xff…

OPNET <<< Program Abort >>> Standard function stack imbalance

OPNET <<< Program Abort >>> Standard function stack imbalance OPNET 问题原因及解决办法 OPNET 问题 OPNET仿真时遇到此问题&#xff1a; <<< Program Abort >>> Standard function stack imbalance 原因及解决办法 出现此问题是因…

【逗老师的无线电】艾德克斯ITECH电源电子负载网口适配器

艾德克斯的产品还是不错的&#xff0c;但是ITECH的大部分中低端设备都不带网口&#xff0c;只带了一个串口&#xff0c;并且这个串口还是个完全非标定义的5V TTL串口&#xff0c;原装的适配器300多还只能转接成RS-232。 那么&#xff0c;这回咱们来整个骚活&#xff0c;直接给艾…

Go-Python-Java-C-LeetCode高分解法-第十二周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接&#xff1a;LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏&#xff0c;每日一题&#xff0c;和博主一起进步 LeetCode专栏 我搜集到了50道精选题&#xff0c;适合速成概览大部分常用算法 突…

简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析

问题背景&#xff1a; 前端需要发送一个这样的请求&#xff0c;但出现404 首先解析请求的变化&#xff1a; http://www.51xuecheng.cn/api/checkcode/pic 1.请求先打在nginx&#xff0c;www.51xuecheng.cn/api/checkcode/pic部分匹配到了之后会转发给网关进行处理变成localho…

人工智能-线性回归的从零开始实现

线性回归的从零开始实现 在了解线性回归的关键思想之后&#xff0c;我们可以开始通过代码来动手实现线性回归了。 在这一节中&#xff0c;我们将从零开始实现整个方法&#xff0c; 包括数据流水线、模型、损失函数和小批量随机梯度下降优化器。 虽然现代的深度学习框架几乎可以…

预安装win11的电脑怎么退回正版win10?

对于新购的笔记本 通常来讲预装的系统是全新安装的&#xff0c;是没有之前Windows10系统文件的&#xff0c;无法回退。 可以打开设置-----系统----恢复-----看下是否有该选项。 ------------------------------------------------------------------------------- 若是在上述…

[论文精读]How Powerful are Graph Neural Networks?

论文原文&#xff1a;[1810.00826] How Powerful are Graph Neural Networks? (arxiv.org) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#x…

字符串固定长度自动补齐的主要方法

1 问题 输入日期例如02/03/04时&#xff0c;要求输出2002年03月04日、2004年02月03日或2004年03月04日&#xff0c;但是经过一系列处理后0会被自动处理掉&#xff0c;例如输出2002年3月4日等&#xff0c;与要求输出月、日必须是两位数不符。 2 方法 要自动补充“0”&#xff0c…

<学习笔记>从零开始自学Python-之-常用库篇(十三)内置小型数据库shelve

一、shelve简介&#xff1a; shelve是Python当中数据储存的方案&#xff0c;类似key-value数据库&#xff0c;便于保存Python对象&#xff0c;shelve只有一个open&#xff08;&#xff09;函数&#xff0c;用来打开指定的文件&#xff08;字典&#xff09;&#xff0c;会返回一…

CMake 构建指南:如何提高 C/C++ 项目的可维护性

如果您是一位C/C开发人员&#xff0c;那么您一定知道在编写和维护大型项目时所面临的挑战。这些项目通常包含大量的源代码、库和依赖项&#xff0c;需要耗费大量的时间和精力才能构建和维护。在这种情况下&#xff0c;使用自动化工具可以大大减轻您的负担&#xff0c;提高项目的…

线段树 区间赋值 + 区间加减 + 求区间最值

线段树好题&#xff1a;P1253 扶苏的问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 区间赋值 区间加减 求区间最大。 对于区间赋值和区间加减来说&#xff0c;需要两个懒标记&#xff0c;一个表示赋值cover&#xff0c;一个表示加减add。 区间赋值的优先级大于区间加…

LeetCode热题100 旋转图像

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9…