【问题标题】:java.lang.NumberFormatException: null with error status 500java.lang.NumberFormatException:null,错误状态为 500
【发布时间】:2021-07-25 15:22:00
【问题描述】:

我在将数据从 html 提交到 servlet 时遇到问题 不能

这是我的html文件

<form action="Maths" method="post">


<input type="radio" id="add" name="math" value="add">
  <label for="add">Addition</label><br>
  <input type="radio" id="sub" name="math" value="sub">
  <label for="sub">Subtraction</label><br>
  <input type="radio" id="multi" name="math" value="multi">
  <label for="multi">Multiplication</label><br>
  <input type="radio" id="div" name="math" value="div">
  <label for="div">Division</label><br><br>
  Enter first number : <input type="number" id="first" required><br>
  Enter second number : <input type="number" id="second" required><br>
  <input type="submit" value="Check Result">
  </form>

这是获取数据的servlet文件

 package com.mathematical;

import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;


public class Maths  extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException,NumberFormatException {
        
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        int num1 = Integer.parseInt(request.getParameter("first"));
        int num2 = Integer.parseInt(request.getParameter("second"));
        System.out.println("Hello");
        String str = request.getParameter("math");
        
        int result = 0;
        if(str.equals("add"))
            result = num1 + num2;
        else if(str.equals("sub"))
            result = num1 - num2;
        else if(str.equals("multi"))
            result = num1 * num2;
        else
            result = num1 / num2;
        pw.println(result);
        
    }
}

错误:

HTTP 状态 500 – 内部服务器错误 输入异常报告

消息为空

描述服务器遇到了一个意外情况,导致它无法完成请求。

例外

java.lang.NumberFormatException: null
    java.base/java.lang.Integer.parseInt(Integer.java:614)
    java.base/java.lang.Integer.parseInt(Integer.java:770)
    com.mathematical.Maths.doPost(Maths.java:19)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:689)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

注意根本原因的完整堆栈跟踪可在服务器日志中找到。

【问题讨论】:

  • 第一次/第二次你传递了什么值?
  • 解析前请打印 request.getParameter("first")
  • 由于可能的空指针异常,虚拟机无法创建完整输出。

标签: java html jsp servlets servlet-filters


【解决方案1】:

使用名称参数而不是 id。在您的代码中更改以下 2 行并检查它是否有效。

Enter first number : <input type="number" id="first" name="first" required><br>
Enter second number : <input type="number" id="second" name="second" required><br>

最好的问候, 哈里达斯。

【讨论】:

  • 你能告诉我为什么它不接受 id
  • getParameter() 方法接受属性“name”作为它的参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2018-12-28
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
相关资源
最近更新 更多