📄 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+"<br>姓名: "+nm+"<br>生成时间: "+
new Date()+"<br><hr>");
fw.write("<table><tr><td>题号</td><td>答案</td><td>对错</td></tr>");
double t = 0.0;
//用原始顺序改卷
ArrayList selectType = (ArrayList)application.getAttribute("selectType2");
for (int i=0,n=selectType.size(); i<n; i++) {
Question question = (Question)selectType.get(i);
String qid = question.getId();
String s = (String)paperForm.get(qid);
boolean correct = (s!=null)&&(s.equals(question.getReference()));
if (correct) {
t = t + question.getScore();
}
fw.write("<tr><td>"+qid+"</td><td>"+s+"</td><td>"+correct+"</td></tr>");
}
fw.write("</table><hr><br>客观题得分: "+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");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -