📄 scoreservlet.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 + -