web后端开发-实现web端线上答题程序

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次后就无法点击提交答题按钮再进行提交了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值