基本思想
通过doGet方法创建出网页,提交表单时调用doPost方法进行处理数据,从数据库中查找出所有的问题,再查找出所有问题的正确答案和表单传入的数据进行比对,正确加分数;
Servlet代码
package com.controller;
import com.Do.UserDo;
import com.entry.Question;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class QuestionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
double count = 0;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter printWriter = response.getWriter();
//用于存放用户选择的答案
List<String> list = new ArrayList<>();
UserDo userDo = new UserDo();
//调用do类查询所有问题
List<Question> list1 = userDo.selectQuestion();
//循环获取浏览器发来的请求中每一个answer的value
for (Question answers:list1){
String answer = request.getParameter("answer"+answers.getId());
list.add(answer);
}
//调用do类得到每一个问题的正确答案
List<String> trueAnswer = userDo.selectAnswer();
//获取迭代器
Iterator<String> selectIterator = list.iterator();
Iterator<String> answerIterator = trueAnswer.iterator();
//判断value值是否与答案相同
while (selectIterator.hasNext()&&answerIterator.hasNext()){
if (answerIterator.next().equals(selectIterator.next())){
count = count+10;
//printWriter.print("答案正确");
}else {
//printWriter.print("答案错误");
}
}
printWriter.print(count);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
int num = 1;
PrintWriter printWriter = response.getWriter();
UserDo userDo = new UserDo();
List<Question> list =null;
list = userDo.selectQuestion();
printWriter.print("<form action=\"question\" method=\"post\">");
printWriter.print("<table>");
for (Question question:list){
String questions = question.getQuestion();
String answer1 = question.getAnswer1();
String answer2 = question.getAnswer2();
String answer3 = question.getAnswer3();
String answer4 = question.getAnswer4();
printWriter.print("<tr>");
printWriter.print("<td>"+num+"、"+questions+"</td>");
printWriter.print("</tr>");
printWriter.print("<tr>");
printWriter.print("<td>");
printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer1+"\">"+answer1);
printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer2+"\">"+answer2);
printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer3+"\">"+answer3);
printWriter.print("<input type=\"radio\" name=\"answer"+question.getId()+"\" value=\""+answer4+"\">"+answer4);
printWriter.print("</td>");
printWriter.print("</tr>");
num++;
}
printWriter.print("<tr>");
printWriter.print("<td><input type=\"submit\" value=\"提交\">");
printWriter.print("<input type=\"reset\" value=\"重新填写\"></td>");
printWriter.print("</tr>");
printWriter.print("</table>");
printWriter.print("</form>");
}
}
do类查询数据库
/**
* 查询所有问题
* @return 问题列表
*/
public List<Question> selectQuestion(){
List<Question> list = new ArrayList();
Jdbc jdbc = new Jdbc();
jdbc.GetConnection();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String sql = "select * from question";
preparedStatement = jdbc.prepareStatement(sql);
try {
resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
Question question = new Question();
question.setId(resultSet.getInt(1));
question.setQuestion(resultSet.getString(2));
question.setAnswer1(resultSet.getString(3));
question.setAnswer2(resultSet.getString(4));
question.setAnswer3(resultSet.getString(5));
question.setAnswer4(resultSet.getString(6));
list.add(question);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
jdbc.Close();
}
return list;
}
/**
* 查询问题的正确答案
* @return 答案
*/
public List<String> selectAnswer(){
List<String> list = new ArrayList<>();
String answer;
Jdbc jdbc = new Jdbc();
jdbc.GetConnection();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String sql = "SELECT answer.answer FROM question join answer on question.question_id = answer.question_id";
preparedStatement = jdbc.prepareStatement(sql);
try {
resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
answer = resultSet.getString(1);
list.add(answer);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return list;
}
提示
Java连接数据库的封装类获取方式: jdbc连接数据库.