web后端开发
实现web端线上答题程序
一、要求描述
1.进行线上答题,返回答案正确还是错误,并显示所填的答案信息
2.最多只可进行5次提交,否则无法点击提交按钮
二、代码
TestServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
// 线上答题
//每人最多答题5次,5次后不能提交
/**
* Servlet implementation class TestServlet
*/
@WebServlet("/testservlet")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TestServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(); // 获取当前会话
Integer attemptCount = (Integer) session.getAttribute("attemptCount"); // 获取已尝试次数
if(attemptCount == null) {
attemptCount = 0; // 第一次尝试
} else if(attemptCount >= 5) {
// 如果尝试次数超过5次,重定向到一个提示页面或者在当前页面显示提示信息
response.sendRedirect("maxAttempts.jsp"); // 假设有一个maxAttempts.jsp页面用来提示用户已达到最大尝试次数
return; // 结束方法执行
}
// 记录本次尝试
attemptCount++;
session.setAttribute("attemptCount", attemptCount);
//获取前端输入
String answer1 = request.getParameter("first");
String answer2 = request.getParameter("second");
String answer3 = request.getParameter("third");
// 正确或错误的标识row,1正确,错误
int row1 = -1;// 赋初始值,-1非法
int row2 = -1;
int row3 = -1;
// 第一题答案Java
if("Java".equals(answer1)){
row1 = 1;
}
else{
row1 = 0;
}
// 第二题答案Eclipse
if("Eclipse".equals(answer2)){
row2 = 1;
}
else{
row2 = 0;
}
// 第三题答案Apache Tomcat
if("Apache Tomcat".equals(answer3)){
row3 = 1;
}
else{
row3 = 0;
}
request.setCharacterEncoding("UTF-8");
// 将答案和答案的正误标识存储在请求对象中
request.setAttribute("answer1", answer1);
request.setAttribute("answer2", answer2);
request.setAttribute("answer3", answer3);
request.setAttribute("row1", row1);
request.setAttribute("row2", row2);
request.setAttribute("row3", row3);
// 转发到的JSP页面中访问,用于展示用户的答案和判定结果
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>答题测试</title>
</head>
<body>
<form action="testservlet" method="post">
<table>
<tr><td>第一次测试</td></tr>
<tr><td>你用的程序设计语言是什么</td><td><input type="type" name="first"></td></tr>
<%-- Java脚本(代码段) --%>
<%
if(request.getAttribute("answer1")!=null){
String answer1 = request.getAttribute("answer1").toString();
int row1 = Integer.parseInt(request.getAttribute("row1").toString());
if(row1==1){
out.print("<tr><td style='color:blue'>本题回答正确,"+"</td><td>你的答案是:" + answer1 + "</td></tr>");
}
else{
out.print("<tr><td style='color:red'>本题回答错误,</td><td>你的答案是:" + answer1 + "</td></tr>");
}
}
%>
<tr><td>你用的集成开发环境是什么</td><td><input type="type" name="second"></td></tr>
<%
if(request.getAttribute("answer2")!=null){
String answer2 = request.getAttribute("answer2").toString();
int row2 = Integer.parseInt(request.getAttribute("row2").toString());
if(row2==1){
out.print("<tr><td style='color:blue'>本题回答正确,</td><td>你的答案是:" + answer2 + "</td></tr>");
}
else{
out.print("<tr><td style='color:red'>本题回答错误,</td><td>你的答案是:" + answer2 + "</td></tr>");
}
}
%>
<tr><td>你用的Web服务器是什么</td><td><input type="type" name="third"></td></tr>
<%
if(request.getAttribute("answer3")!=null){
String answer3 = request.getAttribute("answer3").toString();
int row3 = Integer.parseInt(request.getAttribute("row3").toString());
if(row3==1){
out.print("<tr><td style='color:blue'>本题回答正确,</td><td>你的答案是:" + answer3 + "</td></tr>");
}
else{
out.print("<tr><td style='color:red'>本题回答错误,</td><td>你的答案是:" + answer3 + "</td></tr>");
}
}
%>
<tr><td><input type="submit" id="submitBtn" value="提交答题" /></td></tr>
</table>
</form>
</body>
</html>
<!-- 在表单下方添加一段脚本来检查尝试次数 -->
<script>
function checkAttemptCount() {
var maxAttempts = 5;
var attemptCount = <%= session.getAttribute("attemptCount") != null ? session.getAttribute("attemptCount") : 0 %>;
if(attemptCount >= maxAttempts) {
document.getElementById('submitBtn').disabled = true;
}
}
window.onload = checkAttemptCount; // 页面加载时检查
</script>
三、结果
提交答题5次后就无法点击提交答题按钮再进行提交了