开发一个简单的考试系统,在HTML页面中建立一个表单,通过POST方法传递参数,题目类型包括单选题、多选题和填空题,要求程序给出考试成绩。页面参考如图1,请在下方贴上question.html的源码及其运行效果。
图1 运行效果
源码:
question.html
请回答下面问题:
2)在src目录中创建com.demo包,然后创建ExamServlet.java文件。当在question.html页面中单击“交卷”按钮时,根据用户答案,给出最终成绩。结果如图2所示。请在下方贴出ExamServlet.java代码。
图2 运行效果
代码:
package com.demo;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/quetionForm")
public class ExamServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
String cooperation = req.getParameter("cooperation");
// out.println("1 "+cooperation);
String language1 = req.getParameter("language1");
String language2 = req.getParameter("language2");
String language3 = req.getParameter("language3");
// out.println(" 2 "+language1);
String impClass = req.getParameter("impClass");
// out.println(" 3 "+impClass);
String languagelogo = req.getParameter("languagelogo");
// out.println("4 "+languagelogo);
int sum = 0;
try {
if(cooperation.equals("Microsoft"))
sum += 25;
if(language1.equals("java") && language3.equals("c++") ){
sum += 25;
if(language2 != null)
sum -= 25;
}
if(impClass.equals("HttpServlet"))
sum += 25;
if(languagelogo.equals("java"))
sum += 25;
} catch (Exception e) {
out.print("请选择正确的答案");
}
// out.println("cooperation ==> "+cooperation +"n"+
// "language ==> "+ language + "n"+
// "impClass ==> "+ impClass + "n"+
// "languagelogo ==> "+ languagelogo + "n"
// + "sum = "+sum);
out.println("");
out.println("");
out.println(" result ");
out.println(" ");
out.print(" ");
out.println("result == " +sum);
out.println(" ");
out.println("");
out.flush();
out.close();
}
}
任务2 学习请求转发与请求作用域
完成下面的综合应用。程序运行首先显示一个页面,输入学号和姓名后,单击“登录”按钮,控制转发到FirstServlet,在其中检索出学号和姓名信息,创建一个Student对象并将它存储到请求作用域中,将控制转发到SecondServlet,在其中从请求作用域检索出Student对象并显示学号和姓名,同时显示一个链接。参考效果如图3.
图3 运行效果
源码:
FirstServlet
package com.demo;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.List;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/login")
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
String name = request.getParameter("name");
request.setAttribute("stu",new Student(id, name));
System.out.println("成功 == "+ id +" == "+name);
request.getRequestDispatcher("/SecondServlet.do").forward(request, response);
out.flush();
out.close();
}
}
SecondServlet
package com.demo;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.regex.Pattern;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/getMethod")
public class SecondServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Student stu = (Student) request.getAttribute("stu");
String id = stu.getId();
String name = stu.getName();
out.println("");
out.println("");
out.println(" result ");
out.println(" ");
out.print(" 学号: "+id + "
");
out.print(" 姓名: "+name + "
");
out.print("返回输入首页 ");
out.println(" ");
out.println("");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
login.jsp
ForwordJsp.jsp
this is students form:



