如何通过servlet解决Tomcat上的HTTP Status 500 Internal Server Error

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

我正在读取2个数字作为输入,并尝试使用Servlet动态地将它们打印在输出中。接收到Http状态码500内部服务器错误。

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

消息为空

描述服务器遇到意外状况,阻止其满足请求。

异常

java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:542)
java.lang.Integer.parseInt(Integer.java:615)
com.telusko.AddServlet.service(AddServlet.java:11)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

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

Apache Tomcat / 9.0.26

Index.html

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="ISO-8859-1">
        <title>Insert title here</title>
      </head>
      <body>
         <form action="add">
            Enter 1st number: <input type="text' name="num1"><br>
            Enter 2nd number: <input type="text' name="num2"><br>
            <input type="submit">
         </form>
      </body>
    </html>

AddServlet.java

  package com.telusko;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;

  public class AddServlet extends HttpServlet
 {
public void service(HttpServletRequest req, HttpServletResponse res)
{
    int i =Integer.parseInt(req.getParameter("num1"));
    int j =Integer.parseInt(req.getParameter("num2"));
    int k = i + j;
    System.out.println("result is"+k);
}
  }

Web.xml中

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
       http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" 
       version="3.1">
 <servlet>
     <servlet-name>abc</servlet-name>
    <servlet-class>com.telusko.AddServlet</servlet-class>
</servlet>

<servlet-mapping>
     <servlet-name>abc</servlet-name>
     <url-pattern>/add</url-pattern>
</servlet-mapping>

我知道我的结果将在我的Eclipse控制台中打印。

java tomcat servlets
1个回答
0
投票

您的请求中需要2个参数num1和num2。在这些行中,未在请求中发送它们失败。

    int i =Integer.parseInt(req.getParameter("num1"));
    int j =Integer.parseInt(req.getParameter("num2"));
© www.soinside.com 2019 - 2024. All rights reserved.