我的表单提交按钮发送新参数而无法保留旧参数的原因是什么?

问题描述 投票:0回答:0

我目前正在努力开发利用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é");
        }
    }
}

我得到的错误:

1

单击我的表单的提交按钮后,需要将输入的数字与服务器选择的数字进行比较。

随后,将返回一个字符串,指示输入的数字是否大于

"You are above the number guessed"
,等于
"Bravo, you guessed the number correctly"
,或小于
"You are under the number guessed by the server"
服务器的数字。

jsp model-view-controller servlets model nullpointerexception
© www.soinside.com 2019 - 2024. All rights reserved.