?? 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 + -