【问题标题】:How to resolve req.getParameter() returning null in servlet?如何解决在 servlet 中返回 null 的 req.getParameter()?
【发布时间】:2020-01-28 13:35:35
【问题描述】:

我正在读取 2 个数字作为输入,并尝试使用 Servlet 在输出中动态打印它们,req.getParameter() 返回 null:

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

索引.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 控制台中。

【问题讨论】:

  • 这里有一个错字:&lt;input type="text' name="num1"&gt;。看见?下一行?这可能意味着您的表单没有正确发送num1num2 参数。
  • @Stephen C 在回答之前无法注意到您的评论。我认为解决方案应该是答案,而不是 cmets。由于大多数用户不会像我和其他两个回答者那样注意到 cmets。 :)
  • @PraveenKumarLalasangi - 实际上,如果我的评论是正确的,那么这个问题应该被关闭为“离题 - 不可重现或由简单的错字引起”。这就是为什么我没有发布答案!
  • FWIW:我在其他两个人发布答案后发表了评论。我记得。所以你是唯一有证据表明他们没有注意到评论的人:-)

标签: html servlets http-request-parameters


【解决方案1】:

您正在尝试解析 null 因此 NumberFormatException 或 500 错误。
您的请求没有参数 num1 和 num2。因为您的表单没有发送那些参数。
由于拼写错误,您的表单没有发送这些参数。您为属性值混合了双引号和单引号。 确保两者都是双引号 "text" 或单引号 'text'

始终建议在浏览器控制台中查找错误(如果是 javascript),如果是 html,则查看页面源代码。

这个拼写错误的结果。

在这种错误情况下。如果您尝试获取typename

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 2011-07-25
    • 2021-12-10
    • 2023-03-30
    • 1970-01-01
    • 2021-01-27
    • 2017-01-05
    • 2015-04-09
    相关资源
    最近更新 更多