📄 testpaperaction.java
字号:
package com.qrsx.exam.struts.action;
import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.qrsx.exam.Constants;
import com.qrsx.exam.dao.DAOFactory;
import com.qrsx.exam.dao.StudentDAO;
import com.qrsx.exam.dao.TeacherDAO;
import com.qrsx.exam.dao.TestPaperDAO;
import com.qrsx.exam.model.Classes;
import com.qrsx.exam.model.SelectQuestion;
import com.qrsx.exam.model.Student;
import com.qrsx.exam.model.Teacher;
import com.qrsx.exam.model.TestPaper;
import com.qrsx.exam.model.TestResult;
import com.qrsx.exam.model.User;
import com.qrsx.exam.model.YesNoQuestion;
import com.qrsx.exam.struts.BaseAction;
import com.qrsx.exam.struts.form.TestPaperForm;
import com.qrsx.exam.util.BeanUtils;
import com.qrsx.exam.util.StringUtils;
/**
* The Action about test paper
*
* @struts.action name="testPaperForm" path="/exam/testpaper" scope="request"
* input="/exam/testpaper_list.jsp" validate="false"
* parameter="p"
*
* @struts.action-forward name="add" path="/exam/testpaper_add.jsp"
*
* @struts.action-forward name="list" path="/exam/testpaper_list.jsp"
*
* @struts.action-forward name="update" path="/exam/testpaper_update.jsp"
*
* @struts.action-forward name="stulist" path="/exam/testpaper_stulist.jsp"
*
* @struts.action-forward name="result" path="/exam/testpaper_result.jsp"
*
* @author galaxy
*
*/
public class TestPaperAction extends BaseAction {
protected final Log log = LogFactory.getLog(getClass());
/**
* 获得试卷列表
*/
public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
HttpSession session = request.getSession();
// 得到当前登录教师的信息
User u = (User) session.getAttribute(Constants.SESSION_USER);
// 取得该教师所发布的试卷信息
TeacherDAO dao = DAOFactory.getDao(TeacherDAO.class);
Teacher t = dao.findById(u.getId(), false);
Set<TestPaper> papers = t.getPapers();
request.setAttribute("papers", papers);
// 返回试卷列表页面
return mapping.findForward("list");
}
/**
* 进入试卷录入页面
*/
public ActionForward addin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
return mapping.findForward("add");
}
/**
* 试卷信息的保存功能
*/
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 得到用户提交的试卷信息
TestPaper paper = BeanUtils.copyProperties(new TestPaper(), form);
// 取得当前登录教师
HttpSession session = request.getSession();
Teacher t = (Teacher) session
.getAttribute(Constants.SESSION_USER);
// 设置提示信息
if (StringUtils.isEmpty(((TestPaperForm) form).getId())) {
// 保存试卷信息
TeacherDAO teacherdao = DAOFactory.getDao(TeacherDAO.class);
t = teacherdao.findById(t.getId(), false);
paper.setTeacher(t);
TestPaperDAO paperdao = DAOFactory.getDao(TestPaperDAO.class);
paperdao.makePersistent(paper);
addMessage(request, "testpaper.msg.add.success");
TestPaperForm paperform = (TestPaperForm) form;
paperform.setExamtime(null);
paperform.setTitle(null);
return mapping.findForward("add");
} else {
// 修改试卷信息
TestPaperDAO dao = DAOFactory.getDao(TestPaperDAO.class);
TestPaper tp = dao.findById(paper.getId(), false);
tp.setTitle(paper.getTitle());
tp.setExamtime(paper.getExamtime());
addMessage(request, "testpaper.msg.update.success");
return list(mapping, form, request, response);
}
}
/**
* 进入试卷修改页面的Action方法
*/
public ActionForward updatein(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 得到用户提交的信息
TestPaperForm paperform = (TestPaperForm) form;
// 检索用户要修改的试卷对象
TestPaperDAO dao = DAOFactory.getDao(TestPaperDAO.class);
TestPaper paper = dao.findById(paperform.getId(), false);
if (paper == null) {
addMessage(request, "testpaper.msg.update.notexist");
return list(mapping, form, request, response);
} else {
request.setAttribute("paper", paper);
}
// 跳转到试卷修改页面
return mapping.findForward("update");
}
/**
* 试卷删除功能
*/
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 得到用户提交的参数
TestPaperForm paperform = (TestPaperForm) form;
// 得到试卷的基本信息
TestPaperDAO dao = DAOFactory.getDao(TestPaperDAO.class);
TestPaper paper = dao.findById(paperform.getId(), false);
if (paper != null) {
// 删除试卷
paper.getTeacher().getPapers().remove(paper);
dao.makeTransient(paper);
addMessage(request, "testpaper.msg.delete.success");
} else {
addMessage(request, "testpaper.msg.update.notexist");
}
return list(mapping, form, request, response);
}
/**
* 获得学生试卷列表的Action方法
*/
public ActionForward stulist(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 得到Session对象的实例
HttpSession session = request.getSession();
// 得到当前登录用户的信息
User u = (User) session.getAttribute(Constants.SESSION_USER);
if (u != null) {
// 得到学生对象
StudentDAO stuDAO = DAOFactory.getDao(StudentDAO.class);
Student student = stuDAO.findById(u.getId(), false);
// 得到学生所在的班级
Classes classes = student.getClasses();
// 得到班级的任课教师
Set<Teacher> teachers = classes.getTeachers();
// 得到这些任课教师所发布的所有的试卷
Set<TestPaper> papers = new HashSet<TestPaper>();
Iterator<Teacher> it = teachers.iterator();
while (it.hasNext()) {
Teacher t = it.next();
papers.addAll(t.getPapers());
}
request.setAttribute("papers", papers);
}
// 跳转到试卷列表页面
return mapping.findForward("stulist");
}
/**
* 自动判卷Action方法
*/
public ActionForward exam(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 得到用户提交的试卷参数
TestPaperForm paperform = (TestPaperForm) form;
// 得到试卷的信息
TestPaperDAO dao = DAOFactory.getDao(TestPaperDAO.class);
TestPaper paper = dao.findById(paperform.getId(), false);
if (paper != null) {
// 初始化考试结果Bean
TestResult result = new TestResult();
// 选择题
Set<SelectQuestion> selects = paper.getSelectquestions();
Iterator<SelectQuestion> itSelects = selects.iterator();
while (itSelects.hasNext()) {
SelectQuestion select = itSelects.next();
String answer = request.getParameter(select.getId());
result.addScore(select.getScore(answer));
result.addTotalScore(select.getScore());
}
// 判断题
Set<YesNoQuestion> yesnos = paper.getYesnoquestions();
Iterator<YesNoQuestion> itYesNo = yesnos.iterator();
while (itYesNo.hasNext()) {
YesNoQuestion yesno = itYesNo.next();
String answer = request.getParameter(yesno.getId());
result.addScore(yesno.getScore(answer));
result.addTotalScore(yesno.getScore());
}
// 设置考试的结果
request.setAttribute("testresult", result);
addMessage(request, "testpaper.msg.delete.success");
} else {
addMessage(request, "testpaper.msg.update.notexist");
}
// 跳转到结果页面
return mapping.findForward("result");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -