📄 testpaperaction.java
字号:
package cn.hxex.exam.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 cn.hxex.exam.bean.TestResult;
import cn.hxex.exam.dao.DAOFactory;
import cn.hxex.exam.dao.StudentDAO;
import cn.hxex.exam.dao.TeacherDAO;
import cn.hxex.exam.dao.TestPaperDAO;
import cn.hxex.exam.form.TestPaperForm;
import cn.hxex.exam.model.Classes;
import cn.hxex.exam.model.SelectQuestion;
import cn.hxex.exam.model.Student;
import cn.hxex.exam.model.Teacher;
import cn.hxex.exam.model.TestPaper;
import cn.hxex.exam.model.User;
import cn.hxex.exam.model.YesNoQuestion;
import cn.hxex.exam.struts.BaseAction;
import cn.hxex.exam.struts.StrutsConstants;
import cn.hxex.exam.util.HxexBeanUtils;
import cn.hxex.exam.util.HxexStringUtils;
/**
* 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( StrutsConstants.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 = HxexBeanUtils.copyProperties( new TestPaper(), form );
// 取得当前登录教师
HttpSession session = request.getSession();
Teacher t = (Teacher)session.getAttribute( StrutsConstants.SESSION_USER );
// 设置提示信息
if( HxexStringUtils.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(StrutsConstants.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 + -