⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scoreservlet.java

📁 学生成绩管理系统JPA做的
💻 JAVA
字号:
package com.fengmanfei.student.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fengmanfei.student.entity.ClassEO;
import com.fengmanfei.student.entity.CourseEO;
import com.fengmanfei.student.entity.ScoreEO;
import com.fengmanfei.student.entity.StudentEO;
import com.fengmanfei.student.exception.StudentException;

public class ScoreServlet extends HttpServlet {

	private static final long serialVersionUID = -8205614348005279786L;

	// @PersistenceUnit(unitName="student")
	private EntityManagerFactory emf;

	@Override
	public void init() throws ServletException {
		super.init();
		if (emf == null) {
			emf = Persistence.createEntityManagerFactory("student");
		}
	}

	@SuppressWarnings("unchecked")
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String action = request.getParameter("action");

		/**
		 * 学生成绩。对已有的成绩计算总分,平均分。
		 * 已经选课但是还有成绩的课程要提示还没有录入成绩
		 */
		if ("listStudentScore".equals(action)) {

			EntityManager em = emf.createEntityManager();

			int studentId = Integer.parseInt(request.getParameter("studentId"));

			try {
				Query query = em.createQuery(
						" from StudentEO where id = :studentId ").setParameter(
						"studentId", studentId);

				List<StudentEO> studentList = query.getResultList();

				if (studentList.size() == 0) {
					throw new RuntimeException("Student Not Found. ");
				}

				StudentEO studentEO = studentList.get(0);

				/**
				 * 查询该学生的所有成绩
				 */
				List<ScoreEO> scoreList = em.createQuery(
						" from ScoreEO where studentEO.id = :studentId ")
						.setParameter("studentId", studentId).getResultList();

				/**
				 * 计算已经选择,但是缺少成绩的课程
				 */
				List courseWithoutScoreList = new ArrayList();

				for (CourseEO courseEO : studentEO.getCourses()) {
					boolean contains = false;
					for (ScoreEO scoreEO : scoreList) {
						if (courseEO.getId() == scoreEO.getCourseEO().getId()) {
							contains = true;
							break;
						}
					}
					if (!contains) {
						courseWithoutScoreList.add(courseEO);
					}
				}

				request.setAttribute("studentEO", studentEO);
				request.setAttribute("scoreList", scoreList);
				request.setAttribute("courseList", courseWithoutScoreList);

				request.getRequestDispatcher("/listStudentScore.jsp").forward(
						request, response);
			} finally {
				em.close();
			}

		} else if ("listCourseScore".equals(action)) {

			EntityManager em = emf.createEntityManager();

			EntityTransaction trans = em.getTransaction();

			try {
				trans.begin();

				ClassEO classEO = new ClassEO();
				classEO.setName(request.getParameter("name"));

				em.persist(classEO);

				trans.commit();

				request.setAttribute("classEO", classEO);
				request.setAttribute("msg", "add success. ");
				request.getRequestDispatcher("/listCourseScore.jsp").forward(
						request, response);

			} finally {
				em.close();
			}
		} else if ("initAddScore".equals(action) || "initAdd".equals(action)) {

			int studentId = Integer.parseInt(request.getParameter("studentId"));
			int courseId = Integer.parseInt(request.getParameter("courseId"));

			EntityManager em = emf.createEntityManager();

			try {
				StudentEO studentEO = em.find(StudentEO.class, studentId);
				CourseEO courseEO = em.find(CourseEO.class, courseId);

				request.setAttribute("studentEO", studentEO);
				request.setAttribute("courseEO", courseEO);

				request.getRequestDispatcher("/addScore.jsp").forward(request,
						response);
			} finally {
				em.close();
			}

		} else if ("addScore".equals(action) || "add".equals(action)) {

			int studentId = Integer.parseInt(request.getParameter("studentId"));
			int courseId = Integer.parseInt(request.getParameter("courseId"));

			double score;
			try {
				score = Double.parseDouble(request.getParameter("score"));
			} catch (NumberFormatException e) {
				throw new StudentException("分数格式不对,请重新输入。");
			}

			EntityManager em = emf.createEntityManager();

			try {
				EntityTransaction trans = em.getTransaction();

				trans.begin();

				StudentEO studentEO = em.find(StudentEO.class, studentId);
				CourseEO courseEO = em.find(CourseEO.class, courseId);

				ScoreEO scoreEO = new ScoreEO();
				scoreEO.setCourseEO(courseEO);
				scoreEO.setStudentEO(studentEO);
				scoreEO.setScore(score);

				em.persist(scoreEO);

				trans.commit();

				request.setAttribute("msg", "学生 "
						+ scoreEO.getStudentEO().getName() + " 的《"
						+ scoreEO.getCourseEO().getName() + "》成绩添加成功。");

				request.setAttribute("studentEO", studentEO);
				request.setAttribute("courseEO", courseEO);
				request.setAttribute("scoreEO", scoreEO);

				request.getRequestDispatcher("/addScoreSuccess.jsp").forward(
						request, response);
			} finally {
				em.close();
			}
		} else if ("edit".equals(action) || "editScore".equals(action)) {

			int scoreId = Integer.parseInt(request.getParameter("scoreId"));

			EntityManager em = emf.createEntityManager();

			try {
				ScoreEO scoreEO = em.find(ScoreEO.class, scoreId);

				request.setAttribute("scoreEO", scoreEO);
				request.setAttribute("studentEO", scoreEO.getStudentEO());
				request.setAttribute("courseEO", scoreEO.getCourseEO());

				request.getRequestDispatcher("/addScore.jsp").forward(request,
						response);
			} finally {
				em.close();
			}

		} else if ("save".equals(action) || "saveScore".equals(action)) {

			int scoreId = Integer.parseInt(request.getParameter("scoreId"));

			double score = Double.parseDouble(request.getParameter("score"));

			EntityManager em = emf.createEntityManager();

			try {
				em.getTransaction().begin();

				ScoreEO scoreEO = em.find(ScoreEO.class, scoreId);
				scoreEO.setScore(score);

				em.persist(scoreEO);

				em.getTransaction().commit();

				request.setAttribute("msg", "学生 "
						+ scoreEO.getStudentEO().getName() + " 的《"
						+ scoreEO.getCourseEO().getName() + "》成绩修改成功。");

				request.setAttribute("scoreEO", scoreEO);
				request.setAttribute("studentEO", scoreEO.getStudentEO());
				request.setAttribute("courseEO", scoreEO.getCourseEO());

				request.getRequestDispatcher("/addScoreSuccess.jsp").forward(
						request, response);

			} catch (Exception e) {
				em.close();
			}

		} else if ("delete".equals(action) || "deleteScore".equals(action)) {

			int scoreId = Integer.parseInt(request.getParameter("scoreId"));

			EntityManager em = emf.createEntityManager();

			try {
				em.getTransaction().begin();

				ScoreEO scoreEO = em.find(ScoreEO.class, scoreId);

				em.remove(scoreEO);

				em.getTransaction().commit();

				request.setAttribute("msg", "学生 "
						+ scoreEO.getStudentEO().getName() + " 的《"
						+ scoreEO.getCourseEO().getName() + "》成绩删除成功。");

				request.setAttribute("scoreEO", scoreEO);
				request.setAttribute("studentEO", scoreEO.getStudentEO());
				request.setAttribute("courseEO", scoreEO.getCourseEO());

				request.getRequestDispatcher("/addScoreSuccess.jsp").forward(
						request, response);

			} catch (Exception e) {
				em.close();
			}
		} else if ("list".equals(action)) {

			EntityManager em = emf.createEntityManager();

			try {
				List<ScoreEO> scoreList = em.createQuery(" from ScoreEO ")
						.getResultList();

				request.setAttribute("scoreList", scoreList);

				request.getRequestDispatcher("/listScore.jsp").forward(request,
						response);

			} finally {
				em.close();
			}

		}

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -