我目前正在努力开发利用JSP/Servlet 的流行游戏“猜随机数”。但是,我遇到了表单参数提交过程的问题,因为似乎没有保留输入值。每次提交表单时,以前输入的值都会被新值覆盖,因此无法猜测随机选择的数字。
这是 JSP 文件:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="metier.Jeu" %>
<% Jeu jeu=(Jeu)request.getAttribute("resultat"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
<form action="/TP3ex2/servlet" method="GET">
<h2>Le serveur à choisi un nombre secret entre 0 et 100</h2>
Devinez ce nombre: <input type="text" name="nombre">
<input type="submit" value="essai">
<input type="reset" value="Rejouer">
</form>
</div>
<div>
<%=jeu.getRes() %>
</div>
</body>
</html>
Servlet:
package web;
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 metier.Jeu;
@WebServlet(name="ser", urlPatterns="/servlet")
public class Servlet extends HttpServlet{
public void init() throws ServletException{
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
int nbr=Integer.parseInt(req.getParameter("nombre"));
Jeu jeu=new Jeu();
String res=jeu.calcul(nbr);
jeu.setRes(res);
req.setAttribute("resultat", jeu);
req.getRequestDispatcher("tt.jsp").forward(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
}
}
模型(计算):
package metier;
import java.io.*;
import java.util.*;
import java.math.*;
public class Jeu {
int Nbr;
String res;
public String getRes() {
return res;
}
public void setRes(String res) {
this.res = res;
}
public Jeu() {
Nbr=(int)(Math.random()*100);
}
public String calcul(int n) {
if(n>Nbr) {
return("Nombre: "+n+" Indication: Votre nombre est plus grand");
}
else if(n<Nbr) {
return("Nombre: "+n+" Indication: Votre nombre est plus petit");
}
else {
return("Nombre: "+n+" Indication: Bravo vous avez gagné");
}
}
}
我得到的错误:
单击我的表单的提交按钮后,需要将输入的数字与服务器选择的数字进行比较。
随后,将返回一个字符串,指示输入的数字是否大于
"You are above the number guessed"
,等于"Bravo, you guessed the number correctly"
,或小于"You are under the number guessed by the server"
服务器的数字。