基于SSM框架的学生信息管理系统(二)

7 篇文章 1 订阅
3 篇文章 1 订阅

本篇博客将讲述基于SSM框架的学生信息管理系统的具体实现。

GitHub项目地址:https://github.com/qiuxinfa/stuInfoManagerSys

一、项目结构

 

二、配置文件

三、具体代码实现

下面将以学生管理模块和成绩管理模块为例,说明如何让这个系统运行起来,其他模块,大家可以模仿着写,要自己思考了,才会有进步。

1. pojo类

学生类:Student:

package com.qxf.pojo;

/**
 * 学生类
 * @author Administrator
 *
 */
public class Student {
	private String id;
	private String name;
	private Integer sex;
	private Integer age;
	private String phone;
	private String clazzId;
	private String majorId;
	private String instituteId;
	
	public Student() {
		
	}

	public Student(String id, String name, Integer sex, Integer age, String phone, String clazzId, String majorId,
			String instituteId) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.phone = phone;
		this.clazzId = clazzId;
		this.majorId = majorId;
		this.instituteId = instituteId;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getSex() {
		return sex;
	}

	public void setSex(Integer sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getClazzId() {
		return clazzId;
	}

	public void setClazzId(String clazzId) {
		this.clazzId = clazzId;
	}

	public String getMajorId() {
		return majorId;
	}

	public void setMajorId(String majorId) {
		this.majorId = majorId;
	}

	public String getInstituteId() {
		return instituteId;
	}

	public void setInstituteId(String instituteId) {
		this.instituteId = instituteId;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + ", phone=" + phone
				+ ", clazzId=" + clazzId + ", majorId=" + majorId + ", instituteId=" + instituteId + "]";
	}
	
	
}

成绩类:Grade

package com.qxf.pojo;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 成绩表
 * @author Administrator
 *
 */
public class Grade {
	private String id;
	private String studentId;
	private String courseId;
	private String teacherId;
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date examTime;
	private Integer examType;
	private double score;
	
	public Grade() {
		
	}
	
	public Grade(String id, String studentId, String courseId, String teacherId, Date examTime, Integer examType,
			double score) {
		this.id = id;
		this.studentId = studentId;
		this.courseId = courseId;
		this.teacherId = teacherId;
		this.examTime = examTime;
		this.examType = examType;
		this.score = score;
	}



	public String getTeacherId() {
		return teacherId;
	}

	public void setTeacherId(String teacherId) {
		this.teacherId = teacherId;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getStudentId() {
		return studentId;
	}

	public void setStudentId(String studentId) {
		this.studentId = studentId;
	}

	public String getCourseId() {
		return courseId;
	}

	public void setCourseId(String courseId) {
		this.courseId = courseId;
	}

	public Date getExamTime() {
		return examTime;
	}

	public void setExamTime(Date examTime) {
		this.examTime = examTime;
	}

	public Integer getExamType() {
		return examType;
	}

	public void setExamType(Integer examType) {
		this.examType = examType;
	}

	public double getScore() {
		return score;
	}

	public void setScore(double score) {
		this.score = score;
	}

	@Override
	public String toString() {
		return "Grade [id=" + id + ", studentId=" + studentId + ", courseId=" + courseId + ", teacherId=" + teacherId
				+ ", examTime=" + examTime + ", examType=" + examType + ", score=" + score + "]";
	}


	
}

2.mapper

StudentMapper.java

package com.qxf.mapper;

import java.util.List;

import com.qxf.pojo.Clazz;
import com.qxf.pojo.Institute;
import com.qxf.pojo.Major;
import com.qxf.pojo.Student;

public interface StudentMapper {
	/**
	 * 查找全部学生
	 * @return
	 */
	public List<Student> findAllStudent(Student student);
	
	/**
	 * 根据学号查找学生
	 * @param sid
	 * @return
	 */
	public Student findStudentById(String id);
	
	/**
	 * 根据姓名模糊查找学生
	 * @param name
	 * @return
	 */
	public Student findStudentByName(String name);
	
	/**
	 * 根据学号删除学生
	 * @param sid
	 * @return
	 */
	public Integer deleteStudentById(String id);
	
	/**
	 * 修改学生信息
	 * @param student
	 * @return
	 */
	public Integer updateStudent(Student student);
	
	/**
	 * 新增学生
	 * @param student
	 * @return
	 */
	public Integer addStudent(Student student);
	
	/**
	 * 查找学院列表
	 * @return
	 */
	public List<Institute> getInstituteList();
	
	/**
	 * 查找专业列表
	 * @return
	 */
	public List<Major> getMajorList(Major major);
	
	/**
	 * 查找班级列表
	 * @return
	 */
	public List<Clazz> getClazzList(Clazz clazz);
}

StudentMapper.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.qxf.mapper.StudentMapper">
    
    <!-- 查询所有学生信息 -->
    <select id="findAllStudent" parameterType="com.qxf.pojo.Student" resultType="com.qxf.pojo.Student">
     select s.id,s.name,s.sex,s.age,s.phone,
    	(select c.name from clazz c where c.id=s.clazz_id) clazzId,
    	(select c.name from major c where c.id=s.major_id) majorId,
    	(select c.name from institute c where c.id=s.institute_id) instituteId
     from student s 
    	  <where>
    	    <if test="id!=null and id!=''">
    			id= #{id}
    		</if>
    		<if test="name!=null and name!=''">
    		  and name= #{name}
    		</if>
    		<if test="sex!=null and sex!=''">
    		  and sex= #{sex}
    		</if>
    		<if test="age!=null and age!=''">
    		  and age=#{age}
    		</if>
    		<if test="phone!=null and phone!=''">
    		  and phone=#{phone}
    		</if>
    		<if test="clazzId!=null and clazzId!='' and clazzId!='-1'">
    		  and clazz_id=#{clazzId}
    		</if>  
    		<if test="majorId!=null and majorId!='' and majorId!='-1'">
    		  and major_id=#{majorId}
    		</if> 
    		<if test="instituteId!=null and instituteId!='' and instituteId!='-1'">
    		  and institute_id=#{instituteId}
    		</if>     	  	
    	  </where>
    </select>
    
    <!-- 根据id查询学生信息 -->
    <select id="findStudentById" resultType="com.qxf.pojo.Student" parameterType="string">
        select * from student where id=#{id}
    </select>
    
    <!-- 根据id查询学生信息 -->
    <select id="findStudentByName" resultType="com.qxf.pojo.Student" parameterType="string">
        select * from student where name like '%${name}%'
    </select>
    
     <!-- 根据学号删除学生 -->
    <delete id="deleteStudentById" parameterType="string">
    	delete from student where id=#{id}
    </delete> 
    
     <!-- 修改信息 -->
    <update id="updateStudent" parameterType="com.qxf.pojo.Student">
    	update student
    	  <set>
    		<if test="name!=null and name!=''">
    			name= #{name}
    		</if>
    		<if test="sex!=null and sex!=''">
    			, sex= #{sex}
    		</if>
    		<if test="age!=null and age!=''">
    			, age= #{age}
    		</if>    		
    		<if test="phone!=null and phone!=''">
    			, phone=#{phone}
    		</if>
    		<if test="clazzId!=null and clazzId!='' and clazzId!='-1'">
    			, clazz_id=#{clazzId}
    		</if>
    		<if test="majorId!=null and majorId!='' and majorId!='-1'">
    			, major_id=#{majorId}
    		</if>
    		<if test="instituteId!=null and instituteId!='' and instituteId!='-1'">
    			, institute_id=#{instituteId}
    		</if>    		    		
    	</set>
    	 where id=#{id}	
    </update> 
    
        <!-- 添加学生 -->
    <insert id="addStudent" parameterType="com.qxf.pojo.Student">
      insert into student(id,name,sex,age,phone,clazz_id,major_id,institute_id) 
    	values(#{id},#{name},#{sex},#{age},#{phone},#{clazzId},#{majorId},#{instituteId})
    </insert>
    
        <!-- 查找学院列表 -->
    <select id="getInstituteList" resultType="com.qxf.pojo.Institute">
    	select id,name from institute
    </select>

    <!-- 查找专业列表 -->
    <select id="getMajorList" parameterType="com.qxf.pojo.Major" resultType="com.qxf.pojo.Major">
    	select id,name from major where 1=1
    	<if test="instituteId!=null and instituteId!='' and instituteId!='-1'">
    	  and institute_id=#{instituteId}
    	</if>
    </select>
    
    <!-- 查找班级列表 -->
    <select id="getClazzList" parameterType="com.qxf.pojo.Clazz" resultType="com.qxf.pojo.Clazz">
    	select id,name from clazz where 1=1 
    	<if test="majorId!=null and majorId!='' and majorId!='-1'">
    	  and major_id=#{majorId}
    	</if>    	
    </select>
       
</mapper>

GradeMapper.java

package com.qxf.mapper;

import java.util.List;

import com.qxf.pojo.CourseTeacher;
import com.qxf.pojo.Grade;
import com.qxf.pojo.Student;
import com.qxf.pojo.StudentCourse;

public interface GradeMapper {
	/**
	 * 查找全部成绩
	 * @return
	 */
	public List<Grade> findAllGrade(Grade grade);
	
	/**
	 * 根据学号查找成绩
	 * @param sid
	 * @return
	 */
	public Grade findGradeById(String id);
	
	/**
	 * 根据学号删除成绩
	 * @param sid
	 * @return
	 */
	public Integer deleteGradeById(String id);
	
	/**
	 * 修改成绩信息
	 * @param grade
	 * @return
	 */
	public Integer updateGrade(Grade grade);
	
	/**
	 * 新增成绩
	 * @param grade
	 * @return
	 */
	public Integer addGrade(Grade grade);
	
	/**
	 * 查找学生列表
	 * @return
	 */
	public List<Student> getStudentList();
	
	/**
	 * 查找学生-课程列表
	 * @return
	 */
	public List<StudentCourse> getStudentCourseList(StudentCourse sc);
	
	/**
	 * 查找课程-老师列表
	 * @return
	 */
	public List<CourseTeacher> getCourseTeacherList(CourseTeacher ct);
	
	/**
	 * 查找当前数据是否存在中间表StudentCourse
	 * @param sc
	 * @return
	 */
	public StudentCourse findStudentCourseById(StudentCourse sc);
	
	/**
	 * 将当前数据插入到中间表StudentCourse
	 * @param sc
	 * @return
	 */
	public Integer addStudentCourse(StudentCourse sc);
	
	/**
	 * 查找当前数据是否存在中间表CourseTeacher
	 * @param ct
	 * @return
	 */
	public CourseTeacher findCourseTeacherById(CourseTeacher ct);
	
	/**
	 * 将当前数据插入到中间表CourseTeacher
	 * @param ct
	 * @return
	 */
	public Integer addCourseTeacher(CourseTeacher ct);	
	
}

GradeMapper.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.qxf.mapper.GradeMapper">
    
    <!-- 查询所有成绩信息 -->
    <select id="findAllGrade" parameterType="com.qxf.pojo.Grade" resultType="com.qxf.pojo.Grade">
    	select g.id,
    	(select c.name from student c where c.id=g.student_id) studentId,
    	(select c.name from course c where c.id=g.course_id) courseId,
    	(select c.name from teacher c where c.id=g.teacher_id) teacherId,
    	DATE_FORMAT(g.exam_time,'%Y-%m-%d') examTime,
    	g.exam_type,
    	g.score
    	from grade g 
    	  <where>
    	    <if test="id!=null and id!=''">
    			id= #{id}
    		</if>
    		<if test="examTime!=null and examTime!=''">
    		  and g.exam_time= #{examTime}
    		</if>
    		<if test="examType!=null and examType!=''">
    		  and exam_type= #{examType}
    		</if>
    		<if test="score!=null and score!=''">
    		  and score=#{score}
    		</if>
    		<if test="studentId!=null and studentId!='' and studentId!='-1'">
    		  and student_id=#{studentId}
    		</if>  
    		<if test="courseId!=null and courseId!='' and courseId!='-1'">
    		  and course_id=#{courseId}
    		</if> 
    		<if test="teacherId!=null and teacherId!='' and teacherId!='-1'">
    		  and teacher_id=#{teacherId}
    		</if>        	  	
    	  </where>
    </select>
    
    <!-- 根据id查询成绩信息 -->
    <select id="findGradeById" resultType="com.qxf.pojo.Grade" parameterType="string">
        select * from grade where id=#{id}
    </select>
    
     <!-- 根据学号删除成绩 -->
    <delete id="deleteGradeById" parameterType="string">
    	delete from grade where id=#{id}
    </delete> 
    
     <!-- 修改信息 -->
    <update id="updateGrade" parameterType="com.qxf.pojo.Grade">
    	update grade
    	  <set>
    		<if test="examTime!=null and examTime!=''">
    		  exam_time= #{examTime}
    		</if>
    		<if test="examType!=null and examType!=''">
    		  ,exam_type= #{examType}
    		</if>
    		<if test="score!=null and score!=''">
    		  ,score=#{score}
    		</if>
    		<if test="studentId!=null and studentId!='' and studentId!='-1'">
    		  ,student_id=#{studentId}
    		</if>  
    		<if test="courseId!=null and courseId!='' and courseId!='-1'">
    		  ,course_id=#{courseId}
    		</if> 
    		<if test="teacherId!=null and teacherId!='' and teacherId!='-1'">
    		  ,teacher_id=#{teacherId}
    		</if>    		    		
    	</set>
    	 where id=#{id}	
    </update> 
    
        <!-- 添加成绩 -->
    <insert id="addGrade" parameterType="com.qxf.pojo.Grade">
    	insert into grade(id,exam_time,exam_type,score,student_id,course_id,teacher_id) 
    	values(#{id},#{examTime},#{examType},#{score},#{studentId},#{courseId},#{teacherId})
    </insert>
    
    <!-- 查找学生列表 -->
    <select id="getStudentList" resultType="com.qxf.pojo.Student">
    	select id,name from student
    </select>

    <!-- 查找学生-课程列表 -->
    <select id="getStudentCourseList" parameterType="com.qxf.pojo.StudentCourse" resultType="com.qxf.pojo.Course">
    	select c.id,c.name from course c,student_course sc where c.id=sc.course_id
    	<if test="studentId!=null and studentId!='' and studentId!='-1'">
    	  and sc.student_id=#{studentId}
    	</if>
    </select>
    
    <!-- 查找课程-老师列表 -->
    <select id="getCourseTeacherList" parameterType="com.qxf.pojo.CourseTeacher" resultType="com.qxf.pojo.Teacher">
    	select t.id,t.name from teacher t,course_teacher ct where t.id=ct.teacher_id 
    	<if test="courseId!=null and courseId!='' and courseId!='-1'">
    	  and ct.course_id=#{courseId}
    	</if>    	
    </select>
    
    <!-- 查找当前数据是否存在中间表StudentCourse -->
    <select id="findStudentCourseById" parameterType="com.qxf.pojo.StudentCourse" resultType="com.qxf.pojo.StudentCourse">
    	select * from student_course
    	<where>
    		<if test="studentId!=null and studentId!=''">
    		  and student_id=#{studentId}
    		</if>
    		<if test="courseId!=null and courseId!=''">
    		  and course_id=#{courseId}
    		</if>    	
    	</where>
    </select>
    
    <!-- 将当前数据插入到中间表StudentCourse -->  
    <insert id="addStudentCourse" parameterType="com.qxf.pojo.StudentCourse">
    	insert into student_course(id,student_id,course_id) values (#{id},#{studentId},#{courseId});
    </insert>

    <!-- 查找当前数据是否存在中间表CourseTeacher -->
    <select id="findCourseTeacherById" parameterType="com.qxf.pojo.CourseTeacher" resultType="com.qxf.pojo.CourseTeacher">
    	select * from course_teacher
    	<where>
    		<if test="teacherId!=null and teacherId!=''">
    		  and teacher_id=#{teacherId}
    		</if>
    		<if test="courseId!=null and courseId!=''">
    		  and course_id=#{courseId}
    		</if>    	
    	</where>
    </select>
    
    <!-- 将当前数据插入到中间表CourseTeacher -->  
    <insert id="addCourseTeacher" parameterType="com.qxf.pojo.CourseTeacher">
    	insert into course_teacher(id,course_id,teacher_id) values (#{id},#{courseId},#{teacherId});
    </insert>    
              
</mapper>

3.service层

StudentService

package com.qxf.service;

import java.util.List;

import com.qxf.pojo.Clazz;
import com.qxf.pojo.Institute;
import com.qxf.pojo.Major;
import com.qxf.pojo.Student;

public interface StudentService {
	/**
	 * 查找全部学生
	 * @return
	 */
	public List<Student> findAllStudent(Student student);
	
	/**
	 * 根据学号查找学生
	 * @param sid
	 * @return
	 */
	public Student findStudentById(String id);
	
	/**
	 * 根据姓名模糊查找学生
	 * @param name
	 * @return
	 */
	public Student findStudentByName(String name);
	
	/**
	 * 根据学号删除学生
	 * @param sid
	 * @return
	 */
	public Integer deleteStudentById(String id);
	
	/**
	 * 修改学生信息
	 * @param student
	 * @return
	 */
	public Integer updateStudent(Student student);
	
	/**
	 * 新增学生
	 * @param student
	 * @return
	 */
	public Integer addStudent(Student student);
	
	/**
	 * 查找学院列表
	 * @return
	 */
	public List<Institute> getInstituteList();
	
	
	/**
	 * 查找专业列表
	 * @return
	 */
	public List<Major> getMajorList(Major major);
	
	/**
	 * 查找班级列表
	 * @return
	 */
	public List<Clazz> getClazzList(Clazz clazz);	
}

StudentServiceImpl

package com.qxf.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.qxf.mapper.StudentMapper;
import com.qxf.pojo.Clazz;
import com.qxf.pojo.Institute;
import com.qxf.pojo.Major;
import com.qxf.pojo.Student;
import com.qxf.service.StudentService;

@Service
public class StudentServiceImpl implements StudentService{

	@Autowired(required=false)
	private StudentMapper studentMapper;
	
	public List<Student> findAllStudent(Student student) {
		// TODO Auto-generated method stub
		return studentMapper.findAllStudent(student);
	}

	public Student findStudentById(String id) {
		// TODO Auto-generated method stub
		return studentMapper.findStudentById(id);
	}

	public Student findStudentByName(String name) {
		// TODO Auto-generated method stub
		return studentMapper.findStudentByName(name);
	}

	public Integer deleteStudentById(String id) {
		// TODO Auto-generated method stub
		return studentMapper.deleteStudentById(id);
	}

	public Integer updateStudent(Student student) {
		// TODO Auto-generated method stub
		return studentMapper.updateStudent(student);
	}

	public Integer addStudent(Student student) {
		// TODO Auto-generated method stub
		return studentMapper.addStudent(student);
	}

	public List<Institute> getInstituteList() {
		// TODO Auto-generated method stub
		return studentMapper.getInstituteList();
	}

	public List<Major> getMajorList(Major major) {
		// TODO Auto-generated method stub
		return studentMapper.getMajorList(major);
	}

	public List<Clazz> getClazzList(Clazz clazz) {
		// TODO Auto-generated method stub
		return studentMapper.getClazzList(clazz);
	}

	
}

GradeService

package com.qxf.service;

import java.util.List;

import com.qxf.pojo.CourseTeacher;
import com.qxf.pojo.Grade;
import com.qxf.pojo.Student;
import com.qxf.pojo.StudentCourse;

public interface GradeService {
	/**
	 * 查找全部成绩
	 * @return
	 */
	public List<Grade> findAllGrade(Grade grade);
	
	/**
	 * 根据学号查找成绩
	 * @param sid
	 * @return
	 */
	public Grade findGradeById(String id);
	
	/**
	 * 根据学号删除成绩
	 * @param sid
	 * @return
	 */
	public Integer deleteGradeById(String id);
	
	/**
	 * 修改成绩信息
	 * @param grade
	 * @return
	 */
	public Integer updateGrade(Grade grade);
	
	/**
	 * 新增成绩
	 * @param grade
	 * @return
	 */
	public Integer addGrade(Grade grade);
	
	/**
	 * 查找学生列表
	 * @return
	 */
	public List<Student> getStudentList();
	
	/**
	 * 查找学生-课程列表
	 * @return
	 */
	public List<StudentCourse> getStudentCourseList(StudentCourse sc);
	
	/**
	 * 查找课程-老师列表
	 * @return
	 */
	public List<CourseTeacher> getCourseTeacherList(CourseTeacher ct);
	
	/**
	 * 查找当前数据是否存在中间表StudentCourse
	 * @param sc
	 * @return
	 */
	public StudentCourse findStudentCourseById(StudentCourse sc);
	
	/**
	 * 将当前数据插入到中间表StudentCourse
	 * @param sc
	 * @return
	 */
	public Integer addStudentCourse(StudentCourse sc);
	
	/**
	 * 查找当前数据是否存在中间表CourseTeacher
	 * @param ct
	 * @return
	 */
	public CourseTeacher findCourseTeacherById(CourseTeacher ct);
	
	/**
	 * 将当前数据插入到中间表CourseTeacher
	 * @param ct
	 * @return
	 */
	public Integer addCourseTeacher(CourseTeacher ct);	
	
}

GradeServiceImpl

package com.qxf.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.qxf.mapper.GradeMapper;
import com.qxf.pojo.CourseTeacher;
import com.qxf.pojo.Grade;
import com.qxf.pojo.Student;
import com.qxf.pojo.StudentCourse;
import com.qxf.service.GradeService;

@Service
public class GradeServiceImpl implements GradeService{

	@Autowired
	private GradeMapper gradeMapper;
	
	public List<Grade> findAllGrade(Grade grade) {
		// TODO Auto-generated method stub
		return gradeMapper.findAllGrade(grade);
	}

	public Grade findGradeById(String id) {
		// TODO Auto-generated method stub
		return gradeMapper.findGradeById(id);
	}

	public Integer deleteGradeById(String id) {
		// TODO Auto-generated method stub
		return gradeMapper.deleteGradeById(id);
	}

	public Integer updateGrade(Grade grade) {
		// TODO Auto-generated method stub
		return gradeMapper.updateGrade(grade);
	}

	public Integer addGrade(Grade grade) {
		// TODO Auto-generated method stub
		return gradeMapper.addGrade(grade);
	}

	public List<Student> getStudentList() {
		// TODO Auto-generated method stub
		return gradeMapper.getStudentList();
	}

	public List<StudentCourse> getStudentCourseList(StudentCourse sc) {
		// TODO Auto-generated method stub
		return gradeMapper.getStudentCourseList(sc);
	}

	public List<CourseTeacher> getCourseTeacherList(CourseTeacher ct) {
		// TODO Auto-generated method stub
		return gradeMapper.getCourseTeacherList(ct);
	}

	public StudentCourse findStudentCourseById(StudentCourse sc) {
		// TODO Auto-generated method stub
		return gradeMapper.findStudentCourseById(sc);
	}

	public Integer addStudentCourse(StudentCourse sc) {
		// TODO Auto-generated method stub
		return gradeMapper.addStudentCourse(sc);
	}

	public CourseTeacher findCourseTeacherById(CourseTeacher ct) {
		// TODO Auto-generated method stub
		return gradeMapper.findCourseTeacherById(ct);
	}

	public Integer addCourseTeacher(CourseTeacher ct) {
		// TODO Auto-generated method stub
		return gradeMapper.addCourseTeacher(ct);
	}

}

4.controller层

StudentController

package com.qxf.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.qxf.pojo.Clazz;
import com.qxf.pojo.Institute;
import com.qxf.pojo.Major;
import com.qxf.pojo.Student;
import com.qxf.service.StudentService;

@Controller
public class StudentController {
	@Autowired
	private StudentService studentService;
	
	/**
	 * 格式化前台传过来的日期类型
	 * @param binder
	 */
	@InitBinder
	public void initBinder(ServletRequestDataBinder binder){
	SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
	binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
	}
	
	/**
	 * 查找学院列表
	 * @param model
	 * @return
	 */
	 @ResponseBody
	 @RequestMapping("/findInstituteList")
	    public String findInstituteList(Model model) {
		   //学院下拉列表
		    List<Institute> instituteList = studentService.getInstituteList();
	        String jsonString = JSON.toJSONString(instituteList);
	        return jsonString;
	    }
	
		/**
		 * 查找专业列表
		 * @param model
		 * @return
		 */
		 @ResponseBody
		 @RequestMapping("/findMajorList")
		    public String findMajorList(Major major) {
			   //专业下拉列表
			    List<Major> majorList = studentService.getMajorList(major);
		        String jsonString = JSON.toJSONString(majorList);
		        return jsonString;
		    }
		/**
		 * 查找班级列表
		 * @param model
		 * @return
		 */
		 @ResponseBody
		 @RequestMapping("/findClazzList")
		    public String findClazzList(Clazz clazz) {
			   //班级下拉列表
			    List<Clazz> clazzList = studentService.getClazzList(clazz);
		        String jsonString = JSON.toJSONString(clazzList);
		        return jsonString;
		    }		 
	/**
	 * 查找全部学生
	 * @param model
	 * @return
	 */
	 @ResponseBody
	 @RequestMapping("/findAllStudent")
	    public String findAllStudent(Model model, Student student) {
		    System.out.println("查找条件--->"+student);
	        List<Student> list = studentService.findAllStudent(student);
	        String jsonString = JSON.toJSONString(list);
	        return jsonString;
	    }
    /**
     * 根据id查询学生
     * @param sid
     * @return
     */
    //ajax查询数据
    @ResponseBody
    @RequestMapping("/findStudentById")
    public Student findStudentById(@RequestParam("id") String id) {
    	System.out.println("查找学号--->"+id);
        return studentService.findStudentById(id);
    }

    /**
     * 根据姓名模糊查找学生
     * @param name
     * @return
     */
    @ResponseBody
    @RequestMapping("/findStudentByName")
    public Student findStudentByName(@RequestParam("name") String name) {
        return studentService.findStudentByName(name);
    }
    
    @ResponseBody
    @RequestMapping("/deleteStudentById")
    public String deleteStudentById(String id) {
    	Integer flag = studentService.deleteStudentById(id);
    	if(flag>0) {
    		return JSON.toJSONString("删除成功!");
    	}else {
    		return JSON.toJSONString("删除失败!");   		
    	}
    }
	
    @ResponseBody
    @RequestMapping("/updateStudent")
    public String updateStudent(Student student) {
    	Integer flag = studentService.updateStudent(student);
    	String msg = "";
    	if(flag>0) {
    		msg = "修改成功";
    	}else {
    		msg = "修改失败"; 		
    	}
    	return JSON.toJSONString(msg);
    }
    
    @ResponseBody
    @RequestMapping("/addStudent")
    public String addStudent(Student student) {
    	String id = UUID.randomUUID().toString().replace("-", "");
    	student.setId(id);
    	Integer flag = studentService.addStudent(student);
    	String msg = "";
    	if(flag>0) {
    		msg = "添加成功";
    	}else {
    		msg = "添加失败"; 		
    	}
    	return JSON.toJSONString(msg);
    }
    
}

GradeController

package com.qxf.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.qxf.pojo.CourseTeacher;
import com.qxf.pojo.Student;
import com.qxf.pojo.StudentCourse;
import com.qxf.pojo.Grade;
import com.qxf.service.GradeService;

@Controller
public class GradeController {
	@Autowired
	private GradeService gradeService;
	
	/**
	 * 格式化前台传过来的日期类型
	 * @param binder
	 */
	@InitBinder
	public void initBinder(ServletRequestDataBinder binder){
	SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
	binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
	}
	
	/**
	 * 查找学生列表
	 * @param model
	 * @return
	 */
	 @ResponseBody
	 @RequestMapping("/findStudentList")
	    public String findStudentList() {
		   //学生下拉列表
		    List<Student> studentList = gradeService.getStudentList();
	        String jsonString = JSON.toJSONString(studentList);
	        return jsonString;
	    }
	
		/**
		 * 查找学生-课程列表
		 * @param model
		 * @return
		 */
		 @ResponseBody
		 @RequestMapping("/getStudentCourseList")
		    public String getStudentCourseList(StudentCourse sc) {
			   //学生-课程下拉列表
			    List<StudentCourse> majorList = gradeService.getStudentCourseList(sc);
		        String jsonString = JSON.toJSONString(majorList);
		        return jsonString;
		    }
		/**
		 * 查找课程-老师列表
		 * @param model
		 * @return
		 */
		 @ResponseBody
		 @RequestMapping("/getCourseTeacherList")
		    public String getCourseTeacherList(CourseTeacher ct) {
			   //课程-老师下拉列表
			    List<CourseTeacher> clazzList = gradeService.getCourseTeacherList(ct);
		        String jsonString = JSON.toJSONString(clazzList);
		        return jsonString;
		    }		 
	/**
	 * 查找全部成绩
	 * @param model
	 * @return
	 */
	 @ResponseBody
	 @RequestMapping("/findAllGrade")
	    public String findAllGrade(Grade grade) {
		    System.out.println("查找条件--->"+grade);
	        List<Grade> list = gradeService.findAllGrade(grade);
	        String jsonString = JSON.toJSONString(list);
	        return jsonString;
	    }
    /**
     * 根据id查询成绩
     * @param sid
     * @return
     */
    //ajax查询数据
    @ResponseBody
    @RequestMapping("/findGradeById")
    public Grade findGradeById(@RequestParam("id") String id) {
    	System.out.println("查找学号--->"+id);
        return gradeService.findGradeById(id);
    }
    
    @ResponseBody
    @RequestMapping("/deleteGradeById")
    public String deleteGradeById(@RequestParam("id") String id) {
    	Integer flag = gradeService.deleteGradeById(id);
    	if(flag>0) {
    		return JSON.toJSONString("删除成功!");
    	}else {
    		return JSON.toJSONString("删除失败!");   		
    	}
    }
	
    @ResponseBody
    @RequestMapping("/updateGrade")
    public String updateGrade(Grade grade) {
    	Integer flag = gradeService.updateGrade(grade);
    	String msg = "";
    	if(flag>0) {
    		msg = "修改成功";
    	}else {
    		msg = "修改失败"; 		
    	}
    	return JSON.toJSONString(msg);
    }
    
    @ResponseBody
    @RequestMapping("/addGrade")
    public String addGrade(Grade grade) {
    	String uuid = UUID.randomUUID().toString().replace("-", "");
    	grade.setId(uuid);
    	Integer flag = gradeService.addGrade(grade);
    	String msg = "";
    	if(flag>0) {
    		msg +="1";
    	}else {
    		msg += "0"; 		
    	}
    	String studentId = grade.getStudentId();
    	String courseId = grade.getCourseId();
    	String teacherId = grade.getTeacherId();
    	uuid = UUID.randomUUID().toString().replace("-", "");
    	StudentCourse sc = new StudentCourse(uuid, studentId, courseId);
    	uuid = UUID.randomUUID().toString().replace("-", "");
    	CourseTeacher ct = new CourseTeacher(uuid, courseId, teacherId);
    	StudentCourse scFlag = gradeService.findStudentCourseById(sc);
    	//如果当前数据不存在中间表StudentCourse,则插入
    	if(scFlag==null) {
    		msg+=","+gradeService.addStudentCourse(sc);
    	}
    	CourseTeacher ctFlag = gradeService.findCourseTeacherById(ct);
    	if(ctFlag==null) {
    		msg+=","+gradeService.addCourseTeacher(ct);
    	}
    	return msg;
    }
    
}

5.前端js和jsp

1.先展示学生模块的:

showStudent.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<html>
<head>
    <title>学生管理</title>
    <script type="text/javascript" src="${pageContext.request.contextPath }/common/js/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/student/js/showStudent.js"></script>
   
    <style type="text/css">
       label{
    		margin-top: 100px;
    		margin-left:500px;
    	}

       .center{
       		text-align:center;
       }
       
/*         table{  
		    border-collapse:collapse; 
		    border-spacing:0;
		    margin:0;
		    padding:0;
		    border:none; 
		    align-content: center;
       }  */
    
       td{
/*             border-collapse:collapse; 
            border-spacing:0;
		    margin:0;
		    padding:0; */
   		    text-align:center;
   	   }
   	   
   	   a{ 
   	   		text-decoration:none;
   	   		display: inline-block; 
   	   		text-align: center; 
   	   }
   	   button{
            margin: 0;
            padding: 0;
            font-size: 100%;
        }
       
       .buttonClass{
       		background-color: white!important;
       		color: blue;
            border: 0px;  
            margin-right: -1px;  
            margin-bottom: -1px;  
            
       }
       
       .form-right{
       		text-align:center;
       }
       
       .search{
       		margin-top:30px;
       }
    </style>
</head>

<body>
    <br>
	<!-- 查询条件 -->
	<div class="search">
	<label>查找条件:</label><br/>
	<form action="${pageContext.request.contextPath }/findAllStudent" method="get" id="searchForm" class="center">
          <div>
                       学号:<input type="text" name="id" id="id" value=""/>
			 &nbsp;&nbsp;&nbsp;&nbsp;
			学院: <select  id="selectInstitute" onchange="instituteChange()">
			    </select>
			
		  </div>
		  <div>
		   姓名:<input type="text" name="name" id="name" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			专业:<select  id="selectMajor" onchange="majorChange()">
			    </select>
		  </div>
		  <div>
			电话:<input type="text" name="phone" id="phone" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			班级:<select  id="selectClazz">
			    </select>
		  </div>
		  <div>
		       年龄:<input type="text" name="age" id="age" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			性别:<input type="radio" name="sex" value="1"></input>男
			<input type="radio" name="sex" value="2" ></input>女
		  </div>
	  <br>
	  <input type="button" onclick="searchStudent()" value="查找"/>
	  &nbsp;&nbsp;&nbsp;&nbsp;
	  <input type="button" onclick="clearForm()" value="重置"/>
	 </form>
	</div>
	
	<br/><br/>
	
	<!-- 结果列表 -->
	<label>结果列表:</label><br/><br/><br/>
	<table width="80%" border="1" align="center" cellspacing="0" cellpadding="0" id="show">
	   <thead>
			<tr align="center">
				<th>序号</th>
				<th>学号</th>
				<th>班级</th>
				<th>姓名</th>
				<th>性别</th>
				<th>年龄</th>
				<th>电话</th>
				<th>专业</th>
				<th>学院</th>
				<th>操作</th>
			</tr>
		</thead>
		<tbody>

		</tbody>
	</table>
</body>
</html>
 

showStudent.js

//页面加载时执行,查找全部学生列表
    $(function () {
    	//学院下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findInstituteList",
            dataType: "json",
            success: function (instituteList) {
         	   for(var i=0;i<instituteList.length;i++){
         		   var data = instituteList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectInstitute").append(option);
         	   }
     		  var option = "<option value=-1>请选择</option>";
              $("#selectInstitute").append(option);
              $("#selectInstitute option[value='-1']").attr("selected", true);
         	 
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("学院列表获取失败!");
            }
        })
         //初始化专业下拉选择
  		  var option = "<option value=-1>请选择</option>";
          $("#selectMajor").append(option);
          $("#selectMajor option[value='-1']").attr("selected", true);
          //初始化班级下拉选择
   		  option = "<option value=-1>请选择</option>";
          $("#selectClazz").append(option);
          $("#selectClazz option[value='-1']").attr("selected", true);        
        
        //学生列表
        $.ajax({
                   type: "post",
                   url: "/stuInfoManagerSys/findAllStudent",
                   data: {"clazzId":$("#clazzId").val(),"name":$("#name").val(),"id":$("#id").val(),"phone":$("#phone").val(),
                	   "age":$("#age").val(),"sex":$("#sex").val(),"majorId":$("#majorId").val(),"instituteId":$("#instituteId").val()},
                   dataType: "json",
                   success: function (studentList) {
                	   for(var i=0;i<studentList.length;i++){
                		   var data = studentList[i];
                		   var time = new Date(data.birthday);
                		   var sex='';
                		   var birthday=myformatter(time);
                		   var operation="<a href=\"/stuInfoManagerSys/student/jsp/addStudent.jsp\">添加</a>"
                			             + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button onclick=\"deleteStudent("+ data.id +")\"  class='buttonClass'>删除</button>"
                		                 + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/stuInfoManagerSys/student/jsp/editStudent.jsp?id="+ data.id +"\">修改</a>";
                		   if(data.sex==1){
                			   sex='男';
                		   }else if(data.sex==2){
                			   sex='女';
                		   }
                           var tr = "";
                           tr +=
                               "<td>"+(i+1)+"</td><td>" + data.id + "</td><td>" + data.clazzId + "</td><td>" + data.name
                               + "</td><td>" + sex + "</td><td>" + data.age + "</td><td>" + data.phone + "</td><td>" + data.majorId + "</td><td>" 
                               + data.instituteId + "</td><td>" + operation +"</td>";
                           $("tbody").append('<tr>'+tr+'</tr>');
                	   }
                   },
                   //null值不会被success回调函数捕获,因此可以通过error来实现该功能
                   error: function () {
                       alert("初始化:查找失败!");
                   }
               })
    });

//根据id删除学生
function deleteStudent(id){
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/deleteStudentById",
        data: {"id":id},
        dataType: "json",
        success: function(data){
        	alert("删除成功");
        	window.location.reload(); //刷新当前页面.
        	//parent.location.reload(); //刷新父亲对象(用于框架)
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("删除失败");
        }
    })
}

//根据条件查找学生
function searchStudent(){
	var id = $("#id").val();
	var name = $("#name").val();
	var sex = $('input:radio[name="sex"]:checked').val();
	if(sex=="undefined"){
		sex='';
	}
	if(isNaN(sex)){
		sex='';
		debugger;
	}
	if(sex!=''){
		sex = parseInt(sex);
	}
	var age = $("#age").val();
	var phone = $("#phone").val();
	var clazzId = $('#selectClazz option:selected').val();
	var majorId = $('#selectMajor option:selected').val();
	var instituteId = $('#selectInstitute option:selected').val();
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findAllStudent",
        data: {"id":id,"name":name,"sex":sex,"age":age,"clazzId":clazzId,"phone":phone,"majorId":majorId,"instituteId":instituteId},
        dataType: "json",
        success: function (studentList) {
            $("tbody").html(""); //清除原来的数据
      	   for(var i=0;i<studentList.length;i++){
      		   var data = studentList[i];
      		   var time = new Date(data.birthday);
      		   var sex='';
      		   var birthday=myformatter(time);
      		   var operation="<a href=\"/stuInfoManagerSys/student/jsp/addStudent.jsp\">添加</a>"
      			             + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button onclick=\"deleteStudent("+ data.id +")\" class='buttonClass'>删除</button>"
      		                 + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/stuInfoManagerSys/student/jsp/editStudent.jsp?id="+ data.id +"\">修改</a>";
      		   if(data.sex==1){
      			   sex='男';
      		   }else if(data.sex==2){
      			   sex='女';
      		   }
                 var tr = "";
                 tr +=
                     "<td>"+(i+1)+"</td><td>" + data.id + "</td><td>" + data.clazzId + "</td><td>" + data.name
                     + "</td><td>" + sex + "</td><td>" + data.age + "</td><td>" + data.phone + "</td><td>" 
                     + data.majorId + "</td><td>" + data.instituteId + "</td><td>" + operation +"</td>";
                 $("tbody").append('<tr>'+tr+'</tr>');
      	   }
         },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("查找失败");
        }
    })	
}

//重置
function clearForm(){
    //清空查询条件
	$("#id").val("");
	$("#name").val("");
	$("#phone").val("");
	$("#age").val("");
	$("input[type='radio']").each(function(){
//		 $(this).attr("checked",false);
		this.checked=false;
	});
	
	$("#selectClazz").val("-1");
	$("#selectMajor").val("-1");
	$("#selectInstitute").val("-1");
//	$("#selectClazz option[value='-1']").attr("selected", true);
//	$("#selectMajor option[value='-1']").attr("selected", true);
//	$("#selectInstitute option[value='-1']").attr("selected", true);

	//无条件查询
	searchStudent();
}

//格式化时间yyyy-mm-dd
function myformatter(date){  
    var strDate = date.getFullYear()+"-";
    strDate += date.getMonth()+1+"-";
    strDate += date.getDate();
    return strDate ;
}

//当学院改变时触发
function instituteChange(){
	//清空专业和班级下拉列表的内容
	$("#selectClazz").empty();
	$("#selectMajor").empty();
	//获取学院的选中的id
	var instituteId = $('#selectInstitute option:selected').val();
	//异步请求获取该学院下的专业列表
    //专业下拉列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findMajorList",
        dataType: "json",
        data:{"instituteId":instituteId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectMajor").append(option);
     	   }
  		  var option = "<option value=-1>请选择</option>";
          $("#selectMajor").append(option);
          $("#selectMajor option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("专业列表获取失败!");
        }
    })	
}

//当专业改变时触发
function majorChange(){
	//清空班级下拉列表的内容
	$("#selectClazz").empty();
	//获取专业下的选中的id
	var majorId = $('#selectMajor option:selected').val();
	//异步请求获取该学院下的专业列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findClazzList",
        dataType: "json",
        data:{"majorId":majorId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectClazz").append(option);
     	   }
   		  var option = "<option value=-1>请选择</option>";
          $("#selectClazz").append(option);
          $("#selectClazz option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("班级列表获取失败!");
        }
    })
    
}



editStudent.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改学生信息</title>
    <script type="text/javascript" src="${pageContext.request.contextPath }/common/js/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/student/js/editStudent.js"></script>
    
    <style type="text/css">
       label{
    		margin-top: 100px;
    		margin-left:500px;
    	}

       .center{
       		text-align:center;
       }
       
       h3{
       	    margin-top: 80px;
    		margin-left:100px;
       }
    </style>
</head>
<body>
    <h3>修改学生信息:</h3>
    <br>
	<form action="${pageContext.request.contextPath }/updateStudent" method="get" id="editForm" class="center">
                       学号:<input type="text" name="id" id="id" value="" readonly="readonly"/>
			 &nbsp;&nbsp;&nbsp;&nbsp;
			学院: <select  id="selectInstitute" onchange="instituteChange()">
			    </select>
			
		  </div>
		  <div>
		   姓名:<input type="text" name="name" id="name" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			专业:<select  id="selectMajor" onchange="majorChange()">
			    </select>
		  </div>
		  <div>
			电话:<input type="text" name="phone" id="phone" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			班级:<select  id="selectClazz">
			    </select>
		  </div>
		  <div>
		       年龄:<input type="text" name="age" id="age" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			性别:<input type="radio" name="sex" value="1"></input>男
			<input type="radio" name="sex" value="2" ></input>女
		  </div>
	  <br>
	    <br><br>
		<input type="hidden" name="id" id="id" value=""></input>
		<input type="button" name="submit" value="确认修改" onclick="updateStudent()"></input>
		&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="button"  name="close" value="关闭" onclick="closePage()"></input>
		
	</form>
</body>
</html>

editStudent.js

//页面加载时执行,查找全部学生列表
    $(function () {
    	//学院下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findInstituteList",
            dataType: "json",
            success: function (instituteList) {
         	   for(var i=0;i<instituteList.length;i++){
         		   var data = instituteList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectInstitute").append(option);
         	   }
     		  var option = "<option value=-1>请选择</option>";
              $("#selectInstitute").append(option);
              $("#selectInstitute option[value='-1']").attr("selected", true);
         	 
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("学院列表获取失败!");
            }
        })

        //专业下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findMajorList",
            dataType: "json",
            success: function (instituteList) {
         	   for(var i=0;i<instituteList.length;i++){
         		   var data = instituteList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectMajor").append(option);
         	   }
      		  var option = "<option value=-1>请选择</option>";
              $("#selectMajor").append(option);
              $("#selectMajor option[value='-1']").attr("selected", true);
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("专业列表获取失败!");
            }
        })
        
        //班级下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findClazzList",
            dataType: "json",
            success: function (instituteList) {
         	   for(var i=0;i<instituteList.length;i++){
         		   var data = instituteList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectClazz").append(option);
         	   }
       		  var option = "<option value=-1>请选择</option>";
              $("#selectClazz").append(option);
              $("#selectClazz option[value='-1']").attr("selected", true);
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("班级列表获取失败!");
            }
        })    	
    	
        var a=GetRequest();
        console.log("id:"+a['id']); //打印出传过来的id
        var id=a['id'];
        $.ajax({
                   type: "post",
                   url: "/stuInfoManagerSys/findStudentById",
                   data: {"id":id},
                   dataType: "json",
                   success: function (student) {
                	  $("#selectClazz").val(student.clazzId);
                	  $("#selectMajor").val(student.majorId);
                	  $("#selectInstitute").val(student.instituteId);
                	  $("#name").val(student.name);
                	  $("#id").val(student.id);
                	  $("#age").val(student.age);
                	  $("#phone").val(student.phone);
                	  if(student.sex==2){
                		  $("input[name=sex]:first").attr("checked","");
                		  $("input[name=sex]:last").attr("checked","checked");
                	  }
                	 
                	 
                   },
                   //null值不会被success回调函数捕获,因此可以通过error来实现该功能
                   error: function () {
                       alert("初始化:查找失败!");
                   }
               })
    });

//获取参数值     
function GetRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
     if (url.indexOf("?") != -1) {
           var str = url.substr(1);
           strs = str.split("&");
           for (var i = 0; i < strs.length; i++) {
               theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);
           }
       }
       return theRequest;   
 }  

//根据id更新学生信息
function updateStudent(){
	var id = $("#id").val();
	var name = $("#name").val();
	var sex = $('input:radio[name="sex"]:checked').val();
	if(sex=="undefined"){
		sex='';
	}
	if(isNaN(sex)){
		sex='';
		debugger;
	}
	if(sex!=''){
		sex = parseInt(sex);
	}
	var age = $("#age").val();
	var phone = $("#phone").val();
	var clazzId = $('#selectClazz option:selected').val();
	var majorId = $('#selectMajor option:selected').val();
	var instituteId = $('#selectInstitute option:selected').val();
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/updateStudent",
        data: {"id":id,"name":name,"sex":sex,"age":age,"clazzId":clazzId,"phone":phone,"majorId":majorId,"instituteId":instituteId},
        dataType: "json",
        success: function (data) {
            alert(data);
            closePage();
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("删除失败");
        }
    })
}

//关闭当前页面,返回上一级页面
function closePage(){
	window.history.back();  //返回上一页
	window.close();	
}

//格式化时间yyyy-mm-dd
function myformatter(date){  
    var strDate = date.getFullYear()+"-";
    strDate += date.getMonth()+1+"-";
    strDate += date.getDate();
    return strDate ;
}

//当学院改变时触发
function instituteChange(){
	//清空专业和班级下拉列表的内容
	$("#selectClazz").empty();
	$("#selectMajor").empty();
	//获取学院的选中的id
	var instituteId = $('#selectInstitute option:selected').val();
	//异步请求获取该学院下的专业列表
    //专业下拉列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findMajorList",
        dataType: "json",
        data:{"instituteId":instituteId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectMajor").append(option);
     	   }
  		  var option = "<option value=-1>请选择</option>";
          $("#selectMajor").append(option);
          $("#selectMajor option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("专业列表获取失败!");
        }
    })	
}

//当专业改变时触发
function majorChange(){
	//清空班级下拉列表的内容
	$("#selectClazz").empty();
	//获取专业下的选中的id
	var majorId = $('#selectMajor option:selected').val();
	//异步请求获取该学院下的专业列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findClazzList",
        dataType: "json",
        data:{"majorId":majorId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectClazz").append(option);
     	   }
   		  var option = "<option value=-1>请选择</option>";
          $("#selectClazz").append(option);
          $("#selectClazz option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("班级列表获取失败!");
        }
    })
    
}

addStudent.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新增学生信息</title>
    <script type="text/javascript" src="${pageContext.request.contextPath }/common/js/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/student/js/addStudent.js"></script>
    
    <style type="text/css">
       label{
    		margin-top: 100px;
    		margin-left:500px;
    	}

       .center{
       		text-align:center;
       }
       
       h3{
       	    margin-top: 80px;
    		margin-left:100px;
       }
    </style>
</head>
<body>
    <h3>新增学生信息:</h3>
    <br>
	<form action="${pageContext.request.contextPath }/addStudent" method="get" id="addForm" class="center">
		<div>
                          <input type="text" name="id" id="id" value="" hidden="hidden"/>
			 &nbsp;&nbsp;&nbsp;&nbsp;
			学院: <select  id="selectInstitute" onchange="instituteChange()">
			    </select>
			
		  </div>
		  <div>
		   姓名:<input type="text" name="name" id="name" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			专业:<select  id="selectMajor" onchange="majorChange()">
			    </select>
		  </div>
		  <div>
			电话:<input type="text" name="phone" id="phone" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			班级:<select  id="selectClazz">
			    </select>
		  </div>
		  <div>
		       年龄:<input type="text" name="age" id="age" value=""/>
			&nbsp;&nbsp;&nbsp;&nbsp;
			性别:<input type="radio" name="sex" value="1"></input>男
			<input type="radio" name="sex" value="2" ></input>女
		  </div>
	  <br>
	    <br><br>
		<input type="button" name="submit" value="添加" onclick="addStudent()"></input>
		&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="button"  name="close" value="关闭" onclick="closePage()"></input>
		
	</form>
</body>
</html>

addStudent.js

//页面加载时执行
$(function(){
    	//学院下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findInstituteList",
            dataType: "json",
            success: function (instituteList) {
         	   for(var i=0;i<instituteList.length;i++){
         		   var data = instituteList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectInstitute").append(option);
         	   }
     		  var option = "<option value=-1>请选择</option>";
              $("#selectInstitute").append(option);
              $("#selectInstitute option[value='-1']").attr("selected", true);
         	 
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("学院列表获取失败!");
            }
        })
        //初始化专业下拉选择
		  var option = "<option value=-1>请选择</option>";
        $("#selectMajor").append(option);
        $("#selectMajor option[value='-1']").attr("selected", true);
        //初始化班级下拉选择
 		  option = "<option value=-1>请选择</option>";
        $("#selectClazz").append(option);
        $("#selectClazz option[value='-1']").attr("selected", true);  
        	
});

//根据id新增学生信息
function addStudent(){
	var id = $("#id").val();
	var name = $("#name").val();
	var sex = $('input:radio[name="sex"]:checked').val();
	if(sex=="undefined"){
		sex='';
	}
	if(isNaN(sex)){
		sex='';
		debugger;
	}
	if(sex!=''){
		sex = parseInt(sex);
	}
	var age = $("#age").val();
	var phone = $("#phone").val();
	var clazzId = $('#selectClazz option:selected').val();
	var majorId = $('#selectMajor option:selected').val();
	var instituteId = $('#selectInstitute option:selected').val();
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/addStudent",
        data: {"id":id,"name":name,"sex":sex,"age":age,"clazzId":clazzId,"phone":phone,"majorId":majorId,"instituteId":instituteId},
        dataType: "json",
        //提交前进行数据校验
        beforeSend: function (XHR) {
			if(!clazzId || clazzId==-1){
				alert("班级必选!");
				return false;
			}
			if(!name){
				alert("姓名必填!");
				$("#name").focus();//获取焦点
				return false;
			}
			if(!majorId || majorId==-1){
				alert("专业必选!");
				return false;
			}
			if(!phone){
				alert("电话必填!");
				$("#phone").focus();//获取焦点
				return false;
			}
			if(!instituteId || instituteId==-1){
				alert("学院必选!");
				return false;
			}
			if(!age){
				alert("年龄必填!");
				$("#age").focus();//获取焦点
				return false;
			}
			if(!sex){
				alert("性别必选!");
				return false;
			}
        },
        success: function (data) {
            alert(data);
            window.location.href="/stuInfoManagerSys/student/jsp/showStudent.jsp";
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("添加失败");
        }
    })
}
//关闭当前页面,返回上一级页面
function closePage(){
	window.history.back();  //返回上一页
	window.close();	
}

//当学院改变时触发
function instituteChange(){
	//清空专业和班级下拉列表的内容
	$("#selectClazz").empty();
	$("#selectMajor").empty();
	//获取学院的选中的id
	var instituteId = $('#selectInstitute option:selected').val();
	//异步请求获取该学院下的专业列表
    //专业下拉列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findMajorList",
        dataType: "json",
        data:{"instituteId":instituteId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectMajor").append(option);
     	   }
  		  var option = "<option value=-1>请选择</option>";
          $("#selectMajor").append(option);
          $("#selectMajor option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("专业列表获取失败!");
        }
    })	
}

//当专业改变时触发
function majorChange(){
	//清空班级下拉列表的内容
	$("#selectClazz").empty();
	//获取专业下的选中的id
	var majorId = $('#selectMajor option:selected').val();
	//异步请求获取该学院下的专业列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findClazzList",
        dataType: "json",
        data:{"majorId":majorId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectClazz").append(option);
     	   }
   		  var option = "<option value=-1>请选择</option>";
          $("#selectClazz").append(option);
          $("#selectClazz option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("班级列表获取失败!");
        }
    })
    
}

2.以下是成绩模块的

showGrade.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<html>
<head>
    <title>成绩管理</title>
    <script type="text/javascript" src="${pageContext.request.contextPath }/common/js/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/grade/js/showGrade.js"></script>
   
    <style type="text/css">
       label{
    		margin-top: 100px;
    		margin-left:500px;
    	}

       .center{
       		text-align:center;
       }
       
/*         table{  
		    border-collapse:collapse; 
		    border-spacing:0;
		    margin:0;
		    padding:0;
		    border:none; 
		    align-content: center;
       }  */
    
       td{
/*             border-collapse:collapse; 
            border-spacing:0;
		    margin:0;
		    padding:0; */
   		    text-align:center;
   	   }
   	   
   	   a{ 
   	   		text-decoration:none;
   	   		display: inline-block; 
   	   		text-align: center; 
   	   }
   	   button{
            margin: 0;
            padding: 0;
            font-size: 100%;
        }
       
       .buttonClass{
       		background-color: white!important;
       		color: blue;
            border: 0px;  
            margin-right: -1px;  
            margin-bottom: -1px;  
            
       }
       
       .form-right{
       		text-align:center;
       }
       
       .search{
       		margin-top:30px;
       }
    </style>
</head>

<body>
    <br>
	<!-- 查询条件 -->
	<div class="search">
	<label>查找条件:</label><br/>
	<form action="${pageContext.request.contextPath }/findAllGrade" method="get" id="searchForm" class="center">
          <div>
                       考试号:<input type="text" name="id" id="id" value=""/>		
		  </div>
		  <div>
		  考试时间:<input type="date" name="examTime" id="examTime" value=""/>
		  </div>
		  <div>
			考试类型:<input type="text" name="examType" id="examType" value=""/>
		  </div>
		  <div>
			学生姓名: <select  id="selectStudent" onchange="studentChange()">
			    </select>
		  </div>
		  <div>
			考试课程:<select  id="selectCourse" onchange="courseChange()">
			    </select>
		  </div>
		  <div>
			任课老师:<select  id="selectTeacher">
			    </select>
		  </div>
		  <div>
		       成绩:<input type="text" name="score" id="score" value=""/>
		  </div>
	  <br>
	  <input type="button" onclick="searchGrade()" value="查找"/>
	  &nbsp;&nbsp;&nbsp;&nbsp;
	  <input type="button" onclick="clearForm()" value="重置"/>
	 </form>
	</div>
	
	<br/><br/>
	
	<!-- 结果列表 -->
	<label>结果列表:</label><br/><br/><br/>
	<table width="50%" border="1" align="center" cellspacing="0" cellpadding="0" id="show">
	   <thead>
			<tr align="center">
				<th>序号</th>
				<th>考试号</th>
				<th>考试时间</th>
				<th>考试类型</th>
				<th>学生姓名</th>
				<th>考试课程</th>
				<th>任课老师</th>
				<th>成绩</th>
				<th>操作</th>
			</tr>
		</thead>
		<tbody>

		</tbody>
	</table>
</body>
</html>
 

showGrade.js

//页面加载时执行,查找全部成绩列表
    $(function () {
    	//学生下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findStudentList",
            dataType: "json",
            success: function (instituteList) {
         	   for(var i=0;i<instituteList.length;i++){
         		   var data = instituteList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectStudent").append(option);
         	   }
     		  var option = "<option value=-1>请选择</option>";
              $("#selectStudent").append(option);
              $("#selectStudent option[value='-1']").attr("selected", true);
         	 
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("学院列表获取失败!");
            }
        })
         //初始化学生-课程下拉选择
  		  var option = "<option value=-1>请选择</option>";
          $("#selectCourse").append(option);
          $("#selectCourse option[value='-1']").attr("selected", true);
          //初始化课程-老师下拉选择
   		  option = "<option value=-1>请选择</option>";
          $("#selectTeacher").append(option);
          $("#selectTeacher option[value='-1']").attr("selected", true);        
        
        //成绩列表
        $.ajax({
                   type: "post",
                   url: "/stuInfoManagerSys/findAllGrade",
                   dataType: "json",
                   success: function (gradeList) {
                	   for(var i=0;i<gradeList.length;i++){
                		   var data = gradeList[i];
                		   var tmp = new Date(data.examTime);
                		   var examTime = myformatter(tmp);
                		   var operation="<a href=\"/stuInfoManagerSys/grade/jsp/addGrade.jsp\">添加</a>"
                			             + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button onclick=\"deleteGrade(\'"+ data.id +"\')\"  class='buttonClass'>删除</button>"
                		                 + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/stuInfoManagerSys/grade/jsp/editGrade.jsp?id="+ data.id +"\">修改</a>";
                           var tr = "";
                           tr +=
                               "<td>"+(i+1)+"</td><td>" + data.id + "</td><td>" + examTime + "</td><td>" + data.examType
                               + "</td><td>" + data.studentId + "</td><td>" + data.courseId + "</td><td>" + data.teacherId + "</td><td>" + data.score + "</td><td>" 
                               + operation + "</td>";
                           $("tbody").append('<tr>'+tr+'</tr>');
                	   }
                   },
                   //null值不会被success回调函数捕获,因此可以通过error来实现该功能
                   error: function () {
                       alert("初始化:查找失败!");
                   }
               })
    });

//根据id删除成绩
function deleteGrade(id){
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/deleteGradeById",
        data: {"id":id},
        dataType: "json",
        success: function(data){
        	alert(data);
        	window.location.reload(); //刷新当前页面.
        	//parent.location.reload(); //刷新父亲对象(用于框架)
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("删除失败");
        }
    })
}

//根据条件查找成绩
function searchGrade(){
	var id = $("#id").val();
	var examTime = $("#examTime").val();
	var examType = $("#examType").val();
	var score = $("#score").val();
	if(score==null || score==''){
		score=0;
	}
	var studentId = $('#selectStudent option:selected').val();
	var courseId = $('#selectCourse option:selected').val();
	var teacherId = $('#selectTeacher option:selected').val();
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findAllGrade",
        data: {"id":id,"examTime":examTime,"examType":examType,"score":score,"studentId":studentId,"courseId":courseId,"teacherId":teacherId},
        dataType: "json",
        success: function (gradeList) {
            $("tbody").html(""); //清除原来的数据
      	   for(var i=0;i<gradeList.length;i++){
      		   var data = gradeList[i];
    		   var tmp = new Date(data.examTime);
    		   var examTime = myformatter(tmp);
    		   var operation="<a href=\"/stuInfoManagerSys/grade/jsp/addGrade.jsp\">添加</a>"
		             + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button onclick=\"deleteGrade("+ data.id +")\"  class='buttonClass'>删除</button>"
	                 + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/stuInfoManagerSys/grade/jsp/editGrade.jsp?id="+ data.id +"\">修改</a>";
		     var tr = "";
		     tr +=
		         "<td>"+(i+1)+"</td><td>" + data.id + "</td><td>" + examTime + "</td><td>" + data.examType
		         + "</td><td>" + data.studentId + "</td><td>" + data.courseId + "</td><td>" + data.teacherId + "</td><td>" + data.score + "</td><td>" 
		         + operation + "</td>";
		     $("tbody").append('<tr>'+tr+'</tr>');
      	   }
         },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("查找失败");
        }
    })	
}

//重置
function clearForm(){
    //清空查询条件
	$("#id").val("");
	$("#examTime").val("");
	$("#examType").val("");
	$("#score").val("");	
	$("#selectStudent").val("-1");
	$("#selectCourse").val("-1");
	$("#selectTeacher").val("-1");

	//无条件查询
	searchGrade();
}

//格式化时间yyyy-mm-dd
function myformatter(date){  
    var strDate = date.getFullYear()+"-";
    strDate += date.getMonth()+1+"-";
    strDate += date.getDate();
    return strDate ;
}

//当学生改变时触发
function studentChange(){
	//清空下拉列表的内容
	$("#selectCourse").empty();
	$("#selectTeacher").empty();
	//获取学生的选中的id
	var studentId = $('#selectStudent option:selected').val();
	//异步请求获取该学院下的专业列表
    //专业下拉列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/getStudentCourseList",
        dataType: "json",
        data:{"studentId":studentId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectCourse").append(option);
     	   }
  		  var option = "<option value=-1>请选择</option>";
          $("#selectCourse").append(option);
          $("#selectCourse option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("课程列表获取失败!");
        }
    })	
}

//当课程改变时触发
function courseChange(){
	//清空老师下拉列表的内容
	$("#selectTeacher").empty();
	//获取专业下的选中的id
	var courseId = $('#selectCourse option:selected').val();
	//异步请求获取该学院下的专业列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/getCourseTeacherList",
        dataType: "json",
        data:{"courseId":courseId},
        success: function (instituteList) {
     	   for(var i=0;i<instituteList.length;i++){
     		   var data = instituteList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectTeacher").append(option);
     	   }
   		  var option = "<option value=-1>请选择</option>";
          $("#selectTeacher").append(option);
          $("#selectTeacher option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("老师列表获取失败!");
        }
    })
    
}



editGrade.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改成绩信息</title>
    <script type="text/javascript" src="${pageContext.request.contextPath }/common/js/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/grade/js/editGrade.js"></script>
    
    <style type="text/css">
       label{
    		margin-top: 100px;
    		margin-left:500px;
    	}

       .center{
       		text-align:center;
       }
       
       h3{
       	    margin-top: 80px;
    		margin-left:100px;
       }
    </style>
</head>
<body>
    <h3>修改成绩信息:</h3>
    <br>
	<form action="${pageContext.request.contextPath }/updateGrade" method="get" id="editForm" class="center">
          <div>
                       考试号:<input type="text" name="id" id="id" value="" readonly="readonly"/>		
		  </div>
		  <div>
		  考试时间:<input type="date" name="examTime" id="examTime" value=""/>
		  </div>
		  <div>
			考试类型:<input type="text" name="examType" id="examType" value=""/>
		  </div>
		  <div>
			学生姓名: <select  id="selectStudent" disabled="disabled">
			    </select>
		  </div>
		  <div>
			考试课程:<select  id="selectCourse"  disabled="disabled">
			    </select>
		  </div>
		  <div>
			任课老师:<select  id="selectTeacher"  disabled="disabled">
			    </select>
		  </div>
		  <div>
		       成绩:<input type="text" name="score" id="score" value=""/>
		  </div>
	  <br>
	    <br><br>
		<input type="hidden" name="id" id="id" value=""></input>
		<input type="button" name="submit" value="确认修改" onclick="updateGrade()"></input>
		&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="button"  name="close" value="关闭" onclick="closePage()"></input>
		
	</form>
</body>
</html>

editGrade.js

//页面加载时执行,查找全部成绩列表
    $(function () {
    	//学生下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findStudentList",
            dataType: "json",
            success: function (studentList) {
         	   for(var i=0;i<studentList.length;i++){
         		   var data = studentList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectStudent").append(option);
         	   }
     		  var option = "<option value=-1>请选择</option>";
              $("#selectStudent").append(option);
              $("#selectStudent option[value='-1']").attr("selected", true);
         	 
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("学生列表获取失败!");
            }
        })

        //课程下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/getStudentCourseList",
            dataType: "json",
            success: function (studentList) {
         	   for(var i=0;i<studentList.length;i++){
         		   var data = studentList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectCourse").append(option);
         	   }
      		  var option = "<option value=-1>请选择</option>";
              $("#selectCourse").append(option);
              $("#selectCourse option[value='-1']").attr("selected", true);
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("课程列表获取失败!");
            }
        })
        
        //老师下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/getCourseTeacherList",
            dataType: "json",
            success: function (studentList) {
         	   for(var i=0;i<studentList.length;i++){
         		   var data = studentList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectTeacher").append(option);
         	   }
       		  var option = "<option value=-1>请选择</option>";
              $("#selectTeacher").append(option);
              $("#selectTeacher option[value='-1']").attr("selected", true);
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("老师列表获取失败!");
            }
        })    	
    	
        var a=GetRequest();
        console.log("id:"+a['id']); //打印出传过来的id
        var id=a['id'];
        $.ajax({
                   type: "post",
                   url: "/stuInfoManagerSys/findGradeById",
                   data: {"id":id},
                   dataType: "json",
                   success: function (grade) {
                	  $("#selectTeacher").val(grade.teacherId);
                	  $("#selectCourse").val(grade.courseId);
                	  $("#selectStudent").val(grade.studentId);
                	  $("#examTime").val(grade.examTime);
                	  $("#id").val(grade.id);
                	  $("#examType").val(grade.examType);
                	  $("#score").val(grade.score);               	                	 
                   },
                   //null值不会被success回调函数捕获,因此可以通过error来实现该功能
                   error: function () {
                       alert("初始化:查找失败!");
                   }
               })
    });

//获取参数值     
function GetRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
     if (url.indexOf("?") != -1) {
           var str = url.substr(1);
           strs = str.split("&");
           for (var i = 0; i < strs.length; i++) {
               theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);
           }
       }
       return theRequest;   
 }  

//根据id更新成绩信息
function updateGrade(){
	var id = $("#id").val();
	var examTime = $("#examTime").val();
	var examType = $("#examType").val();
	var score = $("#score").val();
	if(score==null || score==''){
		score=0;
	}
	var studentId = $('#selectStudent option:selected').val();
	var courseId = $('#selectCourse option:selected').val();
	var teacherId = $('#selectTeacher option:selected').val();
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/updateGrade",
        data: {"id":id,"examTime":examTime,"examType":examType,"score":score,"studentId":studentId,"courseId":courseId,"teacherId":teacherId},
        dataType: "json",
        success: function (data) {
            alert(data);          
            closePage();
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("修改失败");
        }
    })
}

//关闭当前页面,返回上一级页面
function closePage(){
	window.history.back();  //返回上一页
	window.close();	
}

//格式化时间yyyy-mm-dd
function myformatter(date){  
    var strDate = date.getFullYear()+"-";
    strDate += date.getMonth()+1+"-";
    strDate += date.getDate();
    return strDate ;
}

addGrade.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新增成绩信息</title>
    <script type="text/javascript" src="${pageContext.request.contextPath }/common/js/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/grade/js/addGrade.js"></script>
    
    <style type="text/css">
       label{
    		margin-top: 100px;
    		margin-left:500px;
    	}

       .center{
       		text-align:center;
       }
       
       h3{
       	    margin-top: 80px;
    		margin-left:100px;
       }
    </style>
</head>
<body>
    <h3>新增成绩信息:</h3>
    <br>
	<form action="${pageContext.request.contextPath }/addGrade" method="get" id="addForm" class="center">
          <div>
                       <input type="text" name="id" id="id" value="" hidden="hidden"/>		
		  </div>
		  <div>
		  考试时间:<input type="date" name="examTime" id="examTime" value=""/>
		  </div>
		  <div>
			考试类型:<input type="text" name="examType" id="examType" value=""/>
		  </div>
		  <div>
			学生姓名: <select  id="selectStudent">
			    </select>
		  </div>
		  <div>
			考试课程:<select  id="selectCourse">
			    </select>
		  </div>
		  <div>
			任课老师:<select  id="selectTeacher">
			    </select>
		  </div>
		  <div>
		       成绩:<input type="text" name="score" id="score" value=""/>
		  </div>
	  <br>
	    <br><br>
		<input type="button" name="submit" value="添加" onclick="addGrade()"></input>
		&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="button"  name="close" value="关闭" onclick="closePage()"></input>
		
	</form>
</body>
</html>

addGrade.js

//页面加载时执行
$(function(){
    	//学生下拉列表
        $.ajax({
            type: "post",
            url: "/stuInfoManagerSys/findAllStudent",
            dataType: "json",
            success: function (studentList) {
         	   for(var i=0;i<studentList.length;i++){
         		   var data = studentList[i];
         		   var option = "<option value="+data.id+">"+data.name+"</option>";
                   $("#selectStudent").append(option);
         	   }
     		  var option = "<option value=-1>请选择</option>";
              $("#selectStudent").append(option);
              $("#selectStudent option[value='-1']").attr("selected", true);
         	 
            },
            //null值不会被success回调函数捕获,因此可以通过error来实现该功能
            error: function () {
                alert("学生列表获取失败!");
            }
        })
        
    //课程下拉列表
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findAllCourse",
        dataType: "json",
        data:{},
        success: function (studentList) {
     	   for(var i=0;i<studentList.length;i++){
     		   var data = studentList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectCourse").append(option);
     	   }
  		  var option = "<option value=-1>请选择</option>";
          $("#selectCourse").append(option);
          $("#selectCourse option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("课程列表获取失败!");
        }
    })	        

    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/findAllTeacher",
        dataType: "json",
        data:{},
        success: function (studentList) {
     	   for(var i=0;i<studentList.length;i++){
     		   var data = studentList[i];
     		   var option = "<option value="+data.id+">"+data.name+"</option>";
               $("#selectTeacher").append(option);
     	   }
   		  var option = "<option value=-1>请选择</option>";
          $("#selectTeacher").append(option);
          $("#selectTeacher option[value='-1']").attr("selected", true);
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("老师列表获取失败!");
        }
    })
        
        	
});

//根据id新增成绩信息
function addGrade(){
	//var id = $("#id").val();
	var examTime = $("#examTime").val();
	var examType = $("#examType").val();
	var score = $("#score").val();
	if(score==null || score==''){
		score=0;
	}
	var studentId = $('#selectStudent option:selected').val();
	var courseId = $('#selectCourse option:selected').val();
	var teacherId = $('#selectTeacher option:selected').val();
	debugger;
    $.ajax({
        type: "post",
        url: "/stuInfoManagerSys/addGrade",
        data: {"examTime":examTime,"examType":examType,"score":score,"studentId":studentId,"courseId":courseId,"teacherId":teacherId},
        dataType: "text",
        //提交前进行数据校验
        beforeSend: function (XHR) {
			if(!teacherId || teacherId==-1){
				alert("老师必选!");
				return false;
			}
			if(!courseId || courseId==-1){
				alert("课程必选!");
				return false;
			}
			if(!score){
				alert("成绩必填!");
				$("#score").focus();//获取焦点
				return false;
			}
			if(!studentId || studentId==-1){
				alert("学生必选!");
				return false;
			}
        },
        success: function (data) {
        	//var str = eval("(" + data + ")");
        	alert("data的类型--->"+typeof(data));
        	var msg = data.split(",");
            if(msg[0]==1){
            	alert("新增成功!");
            }else{
            	alert("新增失败!");
            }
            if(msg[1]==1){
            	alert("成功插入中间表StudentCourse");
            }
            if(msg[2]==1){
            	alert("成功插入中间表CourseTeacher");
            }    
            window.location.href="/stuInfoManagerSys/grade/jsp/showGrade.jsp";
        },
        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
        error: function () {
            alert("添加失败");
        }
    })
}
//关闭当前页面,返回上一级页面
function closePage(){
	window.history.back();  //返回上一页
	window.close();	
}

当学生改变时触发
//function studentChange(){
//	//清空课程和老师下拉列表的内容
//	$("#selectTeacher").empty();
//	$("#selectCourse").empty();
//	//获取学生的选中的id
//	var studentId = $('#selectStudent option:selected').val();
//	//异步请求获取该学生下的课程列表
//    //课程下拉列表
//    $.ajax({
//        type: "post",
//        url: "/stuInfoManagerSys/getStudentCourseList",
//        dataType: "json",
//        data:{"studentId":studentId},
//        success: function (studentList) {
//     	   for(var i=0;i<studentList.length;i++){
//     		   var data = studentList[i];
//     		   var option = "<option value="+data.id+">"+data.name+"</option>";
//               $("#selectCourse").append(option);
//     	   }
//  		  var option = "<option value=-1>请选择</option>";
//          $("#selectCourse").append(option);
//          $("#selectCourse option[value='-1']").attr("selected", true);
//        },
//        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
//        error: function () {
//            alert("课程列表获取失败!");
//        }
//    })	
//}
//
当课程改变时触发
//function courseChange(){
//	//清空老师下拉列表的内容
//	$("#selectTeacher").empty();
//	//获取课程下的选中的id
//	var courseId = $('#selectCourse option:selected').val();
//	//异步请求获取该学生下的课程列表
//    $.ajax({
//        type: "post",
//        url: "/stuInfoManagerSys/getCourseTeacherList",
//        dataType: "json",
//        data:{"courseId":courseId},
//        success: function (studentList) {
//     	   for(var i=0;i<studentList.length;i++){
//     		   var data = studentList[i];
//     		   var option = "<option value="+data.id+">"+data.name+"</option>";
//               $("#selectTeacher").append(option);
//     	   }
//   		  var option = "<option value=-1>请选择</option>";
//          $("#selectTeacher").append(option);
//          $("#selectTeacher option[value='-1']").attr("selected", true);
//        },
//        //null值不会被success回调函数捕获,因此可以通过error来实现该功能
//        error: function () {
//            alert("老师列表获取失败!");
//        }
//    })
//    
//}

四、详细配置文件

1.mybatis配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>   
    <settings>
        <setting name="cacheEnabled" value="true"/>
       <!--  开启驼峰命名 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/> 
    </settings>
    <!-- 只需配置别名,其他的配置使用其他的方法进行配置 -->
    <typeAliases>
    	<package name="com.qxf.pojo"/>
    </typeAliases>
</configuration>

2.spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <!-- 导入jdbc配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 注解的扫描路径 -->
    <context:component-scan base-package="com.qxf.*"/>
    <!-- 连接池 -->
    <!-- 配置1个阿里连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
          destroy-method="close">
        <property name="driverClassName">
            <value>${jdbc.driver}</value>
        </property>
        <property name="url">
            <value>${jdbc.url}</value>
        </property>
        <property name="username">
            <value>${jdbc.username}</value>
        </property>
        <property name="password">
            <value>${jdbc.password}</value>
        </property>
        <!-- 连接池最大使用连接数 -->
        <property name="maxActive">
            <value>20</value>
        </property>
        <!-- 初始化连接大小 -->
        <property name="initialSize">
            <value>1</value>
        </property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait">
            <value>60000</value>
        </property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle">
            <value>20</value>
        </property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle">
            <value>3</value>
        </property>
        <!-- 自动清除无用连接 -->
        <property name="removeAbandoned">
            <value>true</value>
        </property>
        <!-- 清除无用连接的等待时间 -->
        <property name="removeAbandonedTimeout">
            <value>180</value>
        </property>
        <!-- 连接属性 -->
        <property name="connectionProperties">
            <value>clientEncoding=UTF-8</value>
        </property>
    </bean>

    <!-- mybatis的sessionfatory -->
    <bean id="sqlSessionFactory"
          class="org.mybatis.spring.SqlSessionFactoryBean"
          p:dataSource-ref="dataSource"
          p:configLocation="classpath:mybatis-config.xml"
          p:mapperLocations="classpath:/mapper/*.xml"/>

    <!-- dao的实现类对象,既mapper对象 。从上面的session工厂中,自动创建出所有mapper文件下的实现类对象 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
          p:basePackage="com.qxf.mapper"
          p:sqlSessionFactoryBeanName="sqlSessionFactory"/>

    <!-- 事务管理器,用于注解注入事务 -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
          p:dataSource-ref="dataSource"/>

</beans>

3.springMVC配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" 
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd 
       http://www.springframework.org/schema/mvc 
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 注解的扫描路径 -->
    <context:component-scan base-package="com.qxf.controller"/>
    <mvc:annotation-driven/>
    <!-- springmvc的视图解析器 -->
<!--     <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="prefix" value="/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    </bean> -->
</beans>

4.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"
         version="2.5">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mybatis.xml;
            classpath:springmvc-servlet.xml
        </param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>6000</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- 放行静态资源 -->

	<servlet-mapping>
	     <servlet-name>default</servlet-name>
	     <url-pattern>*.css</url-pattern>
	</servlet-mapping>
	   
	<servlet-mapping>
	     <servlet-name>default</servlet-name>
	     <url-pattern>*.js</url-pattern>
	</servlet-mapping>

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <display-name>stuInfoManagerSys</display-name>

    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

5.jdbc.properties(根据情况修改)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/stuinfosys
jdbc.username=root
jdbc.password=root

6.日志文件

#USE THIS SETTING FOR OUTPUT MYBATIS`s SQL ON THE CONSOLE
log4j.rootLogger=DEBUG, Console

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG


7.pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.qxf</groupId>
  <artifactId>stuInfoManagerSys</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <!-- 统一管理版本号 -->
    <properties>
        <!-- spring版本号 -->
        <spring.version>4.0.2.RELEASE</spring.version>
        <!-- mybatis版本号 -->
        <mybatis.version>3.2.6</mybatis.version>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>
<!-- 添加依赖 -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
            <scope>test</scope>
        </dependency>
        <!-- spring核心包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- mybatis/spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- 导入java ee jar 包 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- JSTL标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>


        <!-- 格式化对象,方便输出日志 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.41</version>
        </dependency>


        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->
        <!-- 映入JSON -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>
        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.30</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.2</version>
        </dependency>
    </dependencies>
  
</project>

五、总结和说明

说明:要在项目的根目录下建一个login.jsp文件,因为我修改了启动默认打开的文件不是index.jsp。

总结:

1.在web.xml文件中,如果拦截路径为/,则还要配置放行静态资源,不然会去请求静态资源,我在项目中就遇到过请求js文件的,后来放行了静态资源才解决

2.页面打算后面用前端框架美化一下

3.暂时还没有实现分页查询的效果,后面会补上

4.代码尽量自己敲,敲的过程过,才会发现问题,才会有成长

5.在敲代码前一定要有一个清晰的流程和逻辑,理清楚关系再写代码都不迟

 

  • 6
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值