onlineexamaction.java
来自「培训考试系统代码」· Java 代码 · 共 1,182 行 · 第 1/3 页
JAVA
1,182 行
package com.huawei.icd30.agt.exam;
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.servlet.http.*;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import com.huawei.icd30.agt.util.*;
import com.huawei.icd30.common.db.*;
import com.huawei.icd30.common.systemconfig.* ;
import java.util.*;
/**
* <p> 从OnlineExamForm类中提取在线考试模块从页面提交的数据信息,
* 进行考试的查询,处理所提交的答卷的Action类。
* </p>
* <p> </p>
* <p> </p>
* @author 龙燕茜
* @version 1.0
*/
public class OnlineExamAction extends Action
{
public ActionForward perform(ActionMapping mapping,
ActionForm form, HttpServletRequest req,
HttpServletResponse res)
{
//判断session是否超时
//ActionForward checkForword = Tools.checkSession(req,res);
//if(checkForword != null)
//{
// return checkForword;
//}
//获取操作类型
String opeType = ((OnlineExamForm)form).getOpeType();//从form中获取
if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_GETALL)
|| opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_GETTASK))
{//获取考试列表
return getExamList(mapping,form,req,res);
}
else if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_GETPAPER))
{//获取考试的试卷
return getExamPaper(mapping,form,req,res);
}
else if( opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_TEST) )
{//获取自测的试卷
return getTestPaper(mapping,form,req,res);
}
else if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_DEAL))
{//处理答卷
return dealExamPaper(mapping,form,req,res);
}
else if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_TESTDEAL))
{//处理自测题
return dealTestPaper(mapping,form,req,res);
}
else if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_GETEXAMRESULT))
{
return getExamResultPaper(mapping,form,req,res);
}
///:huangyuyuan add 2004-06-09
else if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_RANK_TEST))
{//获取自测的试卷
return getRankTestPaper(mapping,form,req,res);
}
else if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_RANK_TESTDEAL))
{//处理自测题
return dealRankTestPaper(mapping,form,req,res);
}
else if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_RANK_DEAL))
{//处理答卷
return dealRankExamPaper(mapping,form,req,res);
}
///:~
else
{//操作类型错误,定向到错误页面,错误编码:UNKNOW_ERROR
req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
return (mapping.findForward("error"));
}
}
/**
* 获取考试列表
*/
private ActionForward getExamList(ActionMapping mapping,
ActionForm form, HttpServletRequest req,
HttpServletResponse res)
{
//从OnlineExamForm中获取操作类型与查询条件;
String classIdTerm = ((OnlineExamForm)form).getClassIdTerm();
//获取操作类型
String opeType = ((OnlineExamForm)form).getOpeType();//从form中获取
String titleTerm = req.getParameter("titleTerm");
String subjectTerm = req.getParameter("subjectTerm");
String startTimeTerm = req.getParameter("startTimeTerm");
String endTimeTerm = req.getParameter("endTimeTerm");
String hostIp = req.getRemoteAddr();
//从Session中获取工号
String staffNo = (String)req.getSession().getAttribute("workerNo");
//从Session中获取地市
//String cityId = (String)req.getSession().getAttribute("CITYID");
//省中心的地市,从配置文件中获取?????????????
//String cityCenter = "00";
//定义连接的实例
SysDbConn aplcoms = null;
try
{
//得到一个连接的实例
aplcoms = SysConnPool.getInstance().getAplComs();
if(opeType.equalsIgnoreCase(OperatorFlagCode.ONLINEEXAM_GETALL))
{//利用P_Agt_OnExamGetALL进行查询
//从数据库中获取考试列表记录
aplcoms.preparedSP();
//设置条件参数:类别ID
aplcoms.setString(1, titleTerm);
aplcoms.setString(2, subjectTerm);
aplcoms.setString(3, classIdTerm);
aplcoms.setString(4, startTimeTerm);
aplcoms.setString(5, endTimeTerm);
aplcoms.setString(6, staffNo);
aplcoms.setString(7, hostIp);
//aplcoms.setString(3, cityCenter);
SysResultSet rs1 = aplcoms.csCommonSP("P_Agt_OnExamGetALL").getResultSet();
rs1.next();
aplcoms.preparedQuery(rs1.getString(1));
SysResultSet rs2 = aplcoms.csCommonQuery("SELFSQL","1","-1").getResultSet();
//把结果集存放到session中
req.getSession().setAttribute("ONLINEEXAM-GET-BYCLASSSET",new ResUtil(rs2));
//定向到列表显示页面
return (mapping.findForward("onexambyclasslist"));
}
else
{//利用P_Agt_OnExamGetTask进行查询
//从数据库中获取考试列表记录
aplcoms.preparedSP();
//设置条件参数:工号
aplcoms.setString(1, titleTerm);
aplcoms.setString(2, subjectTerm);
aplcoms.setString(3, classIdTerm);
aplcoms.setString(4, startTimeTerm);
aplcoms.setString(5, endTimeTerm);
aplcoms.setString(6, staffNo);
aplcoms.setString(7, hostIp);
//aplcoms.setString(3, cityCenter);
SysResultSet rs1 = aplcoms.csCommonSP("P_Agt_OnExamGetALL").getResultSet();
rs1.next();
aplcoms.preparedQuery(rs1.getString(1));
SysResultSet rs2 = aplcoms.csCommonQuery("SELFSQL","1","-1").getResultSet();
//把结果集存放到session中
req.getSession().setAttribute("ONLINEEXAM-GET-TASKSET",new ResUtil(rs2));
//定向到列表显示页面
return (mapping.findForward("onexamtasklist"));
}
}
catch (SysDbException aple)
{//捕获CommonService系统异常,定向到出错页面
//输出异常信息
aple.printStackTrace();
req.setAttribute("errorId",ErrorCode.COMMONSERVICE_ERROR);
return (mapping.findForward("error"));
}
catch(java.sql.SQLException sqle)
{//捕获调用aplcoms异常,定向到出错页面
// 输出异常信息
sqle.printStackTrace();
req.setAttribute("errorId",ErrorCode.DATABASE_ERROR);
return (mapping.findForward("error"));
}
catch(Exception e)
{//捕获未知异常,定向到出错页面
//输出异常信息
e.printStackTrace();
req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
return (mapping.findForward("error"));
}
finally
{//关闭连接实例
if(aplcoms != null)
{
aplcoms.close();
}
}
}
/**
* 根据考试的ID号获取的试卷信息
*/
private ActionForward getExamPaper(ActionMapping mapping,
ActionForm form, HttpServletRequest req,
HttpServletResponse res)
{
//从OnlineExamForm中获取考试的ID;
String examId = ((OnlineExamForm)form).getExamId();
String scope = req.getParameter("scope");
//从Session中获取工号
String staffNo = (String)req.getSession().getAttribute("workerNo");
//定义连接的实例
SysDbConn aplcoms = null;
try
{
//得到一个连接的实例
aplcoms = SysConnPool.getInstance().getAplComs();
//调用存储过程P_Agt_OnExamGetHead获取考试试卷的前面的信息
//包括:考试的名称、考试的最大次数、用户已考的次数、考试的限制时间
aplcoms.preparedSP();
aplcoms.setString(1 ,staffNo); //设置条件参数:考试ID号与工号
aplcoms.setString(2 ,examId);
SysDataSet ds1 = aplcoms.csCommonSP("P_Agt_OnExamGetHead");
SysRecord rc1 = ds1.getParamSet();
String title = rc1.getString(0);
int maxCount = rc1.getInt(1);
int userCount = rc1.getInt(2);
int examTime = rc1.getInt(3);
if(maxCount != 0)
{//考试限制次数,即考试的最大次数不为空
if(userCount == maxCount)
{
//向到出错页面,错误号:ONEXAM_OVER_ERROR
req.setAttribute("errorId",ErrorCode.ONEXAM_OVER_ERROR);
return (mapping.findForward("error"));
}
}
SysResultSet rs1 = null;
String paperId = null;
if("3".equalsIgnoreCase(scope))
{
//从数据库中获取考试试卷的试题列表记录
if("ok".equalsIgnoreCase(req.getParameter("print")))
{//定向到试卷的显示打印页面
paperId = ((OnlineExamForm)form).getPaperId();
}
else
{
aplcoms.preparedQuery("");
aplcoms.setString(1 ,examId);
aplcoms.setString(2 ,req.getRemoteAddr());
SysResultSet rss = aplcoms.csCommonQuery("SQL_Agt_OnExamGetPaperIDByHost" ,"1" ,"-1").getResultSet();
if(rss != null)
{
rss.setRecord(0);
paperId = rss.getString(0);
}
}
aplcoms.preparedQuery("");
aplcoms.setString(1 ,paperId); //设置条件参数:考试ID号
rs1 = aplcoms.csCommonQuery("SQL_Agt_OnExamGetTestByPaperID" ,"1" ,"-1").getResultSet();
}
else
{
aplcoms.preparedQuery("");
aplcoms.setString(1 ,examId);
SysResultSet rss = aplcoms.csCommonQuery("SQL_Agt_OnExamGetPaperID" ,"1" ,"-1").getResultSet();
if(rss != null)
{
rss.setRecord(0);
paperId = rss.getString(0);
}
//从数据库中获取考试试卷的试题列表记录
aplcoms.preparedQuery("");
aplcoms.setString(1 ,examId); //设置条件参数:考试ID号
rs1 = aplcoms.csCommonQuery("SQL_Agt_OnExamGetTest" ,"1" ,"-1").getResultSet();
}
//把结果集存放到session中
req.setAttribute("ONLINEEXAM-GETTEST-RESULTSET",rs1);
//把考试试卷的前面的信息传送到页面
req.setAttribute("title",title);
req.setAttribute("maxCount",String.valueOf(maxCount));
req.setAttribute("userCount",String.valueOf(userCount));
req.setAttribute("examTime",String.valueOf(examTime));
if("ok".equalsIgnoreCase(req.getParameter("print")))
{//定向到试卷的显示打印页面
System.out.println("forward!!!!!!!!");
return (mapping.findForward("exampaper"));
}
//调用存储过程P_Agt_OnExamAddRecord插入考试记录
aplcoms.preparedSP();
//设置参数:员工工号、考试ID、考试的时间、考试的时长
aplcoms.setString(1, staffNo);
aplcoms.setString(2, examId);
aplcoms.setInt(3,0);
aplcoms.setString(4, paperId);
SysDataSet ds2 = aplcoms.csCommonSP("P_Agt_OnExamAddRecord");
SysRecord rc2 = ds2.getParamSet() ;
if(rc2==null || rc2.getInt(2) == OperatorFlagCode.OPERATOR_EORROR)
{//定向到出错页面,错误号为:ONEXAM_RECORDADD_ERROR
req.setAttribute("errorId",ErrorCode.ONEXAM_RECORDADD_ERROR);
return (mapping.findForward("error"));
}
req.setAttribute("recordId",rc2.getString(0));
req.setAttribute("paperFlag",String.valueOf(rc2.getInt(1)));
///:huangyuyuan modify 2004-06-14
//获取设置参数,判断是显示所有试题还是分批显示试题
String showByItem = Initor.systemConfig.get("agt/showByItem","true").trim();
//定向到考试页面
if("true".equals(showByItem))
{
return (mapping.findForward("onrankexamdo"));
}
else
{
return (mapping.findForward("onexamdo"));
}
///:~
}
catch (SysDbException aple)
{//捕获CommonService系统异常,定向到出错页面
//输出异常信息
aple.printStackTrace();
req.setAttribute("errorId",ErrorCode.COMMONSERVICE_ERROR);
return (mapping.findForward("error"));
}
catch(java.sql.SQLException sqle)
{//捕获调用aplcoms异常,定向到出错页面
// 输出异常信息
sqle.printStackTrace();
req.setAttribute("errorId",ErrorCode.DATABASE_ERROR);
return (mapping.findForward("error"));
}
catch(Exception e)
{//捕获未知异常,定向到出错页面
//输出异常信息
e.printStackTrace();
req.setAttribute("errorId",ErrorCode.UNKNOW_ERROR);
return (mapping.findForward("error"));
}
finally
{//关闭连接实例
if(aplcoms != null)
{
aplcoms.close();
}
}
}
/**
* 根据试卷的ID号获取的试卷信息
*/
private ActionForward getTestPaper(ActionMapping mapping,
ActionForm form, HttpServletRequest req,
HttpServletResponse res)
{
//从OnlineExamForm中获取试卷的ID;
String paperId = ((OnlineExamForm)form).getPaperId();
//定义连接的实例
SysDbConn aplcoms = null;
try
{
//得到一个连接的实例
aplcoms = SysConnPool.getInstance().getAplComs();
//获取试卷的信息
//包括:试卷的名称
aplcoms.preparedQuery("");
aplcoms.setString(1 ,paperId);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?