www.pudn.com > exam.rar > HandPaper.java


package kaoshi.student.action; 
 
import java.io.*; 
import java.util.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import org.apache.struts.action.*; 
import org.apache.struts.upload.*; 
import kaoshi.bean.*; 
 
public class HandPaper extends Action { 
 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
            HttpServletRequest request, HttpServletResponse response) 
            throws Exception 
    {    
    	//检查上传文件是否超限 
    	Boolean maxLengthExceeded = (Boolean)request.getAttribute( 
        			MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);         
        if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue())) { 
        	request.setAttribute("errorMessage", "上传文件长度太大"); 
        	return mapping.findForward("prompt"); 
        } 
    	DynaActionForm paperForm = (DynaActionForm)form; 
    	String sid = (String)paperForm.get("sid");    	 
    	String nm = (String)paperForm.get("nm"); 
    	String ip = request.getRemoteAddr(); 
        ServletContext application = request.getSession().getServletContext(); 
		ExamHall kaochang = (ExamHall)application.getAttribute("kaochang"); 
		if (!kaochang.isValidPaper(sid, ip)) { 
			request.setAttribute("errorMessage", "无效试卷"); 
        	return mapping.findForward("prompt"); 
    	} 
    	//生成答题卡文件并判分		 
		String path = application.getRealPath("/WEB-INF/result"); 
		FileWriter fw = new FileWriter(path + "/" + sid + ".htm"); 
		fw.write("学号: "+sid+"
姓名: "+nm+"
生成时间: "+ new Date()+"

"); fw.write(""); double t = 0.0; //用原始顺序改卷 ArrayList selectType = (ArrayList)application.getAttribute("selectType2"); for (int i=0,n=selectType.size(); i"); } fw.write("
题号答案对错
"+qid+""+s+""+correct+"


客观题得分: "+t); fw.close(); //在成绩单上报告客观题得分 kaochang.reportResult(sid, t); //保存主观题压缩文件 FormFile uploadType = (FormFile)paperForm.get("uploadType"); if ((uploadType!=null)&&(uploadType.getFileSize()>0)) { String oldFileName = uploadType.getFileName(); String suffix = oldFileName.substring(oldFileName.lastIndexOf('.')); InputStream in = uploadType.getInputStream(); OutputStream out = new FileOutputStream(path +"/"+ sid + nm + suffix); byte[] temp = new byte[1024]; while ((in.read(temp)) != -1) { out.write(temp); } in.close(); out.close(); } request.setAttribute("sid", sid); request.setAttribute("nm", nm); request.setAttribute("total", t); return mapping.findForward("end"); } }