jsp 加法口算 - ByServlet

本文介绍了如何使用Java的Servlet技术开发一个简单的加法口算练习,通过HttpServletRequest和HttpServletResponse交互,配合随机数生成,确保每次计算的随机性和结果验证。用户输入答案后,系统会检查其是否正确,并在session中存储随机数以实现连续计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

CalculateByServlet.java 

package com;

import java.io.IOException;
import java.util.Random;

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;

import com.sun.net.httpserver.HttpsServer;

@WebServlet("/CalculateByServlet")
public class CalculateByServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");					//设置请求内容的编码
		response.setContentType("text/html;charset=UTF-8");		//设置输出的文档类型和字符编码
		//java.io.PrintWriter out = response.getWriter();				//获取输出句柄
		String msg = "";
	
		String answer = request.getParameter("answer"); 		//获取输入的值

		for (int f = 0; f < 1; f++) {

			HttpSession session = request.getSession();			//获取或创建session
			
			Integer number1 = (Integer) session.getAttribute("number1");	//从session获取值
			Integer number2 = (Integer) session.getAttribute("number2");
			
			if (number1 == null || number2 == null || answer == null) {		//未生成随机数或无输入
				randomNumberToSession(request);					//****生成2个随机数并存入session
				break;
			}

			Integer answerInt = 0;
			
			try {
				answerInt = Integer.parseInt(answer);
			}catch(Exception e) {
				msg = "请输入一个整数!";
				break;
			}			//将answer转换为整数对象answerInt
			
			if (number1 + number2 != answerInt) {
				msg = "遗憾,计算错了,你上一次的输入是:" + number1 + "+" + number2 + "=" + answer;
				break;            
			}			                      
			
			msg = "恭喜,计算正确!请进行新一轮的计算。";	
			randomNumberToSession(request);						//*******生成2个随机数并存入session
		}

		request.setAttribute("msg", msg);				//在request中给消息msg赋值
		request.getRequestDispatcher("calculateByServlet.jsp").forward(request, response);				//转发给网页calculateByServlet.jsp
		return;
	}
	
	//----------生成2个随机数并存入session
	public void randomNumberToSession(HttpServletRequest request) {
		HttpSession session = request.getSession();				//获取或创建session
		Random random = new Random();				//创建随机对象
		
		int number1 = random.nextInt(51);				//生成0~50的随机数字1
		int number2 = random.nextInt(51);				//生成0~50的随机数字2
		session.setAttribute("number1",  number1);		//在session中给number1赋值
		session.setAttribute("number2", number2);		//在session中给number2赋值
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

calculateByServlet.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
  <head>
	<title>加法口算 - ByServlet</title>
  </head>

  <body>
	<div style="width:600px; margin:20px auto; line-height:40px;">
    	<h3>&emsp;&emsp; 加法口算 - ByServlet</h3>
		<form action="CalculateByServlet" method="post">
		   	${ number1 }
		   	+
		   	${ number2 }
			=
			<input type="text" name="answer" maxlength="4" style="width:50px; text-align:center;">
			<input type="submit" value="提交">
			&emsp;
	    	<span id="msg" style="color:red; font-size:small;">${ msg }</span>
		</form>
		&emsp;&emsp;&emsp;&emsp;<a href="index.jsp">首页</a>
	</div>
  </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值