严重:Servlet.service() for servlet [ProfileServlet] 在路径 [/Homework] 的上下文中抛出异常 java.lang.NumberFormatException:null

SEVERE: Servlet.service() for servlet [ProfileServlet] in context with path [/Homework] threw exception java.lang.NumberFormatException: null

我遇到了这个异常,我不知道为什么。它说它的数字格式异常为空。我查看了有关此的其他帖子,但其中 none 解决了我的问题。我的个人资料 class 是一个简单的 class,它具有 id username lastname age 和 favTeam,带有 setter 和 getter 以及一个构造函数。有人知道为什么会这样吗?

我的 Servlet

public ProfileServlet() {
    super();
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
HashMap<Integer, Profile> team = new HashMap<Integer, Profile>();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    response.setContentType("application/json; charset=UTF-8");
    //String requestUrl = request.getRequestURI();
    PrintWriter out = response.getWriter(); 

    Profile test = new Profile();
    int id;

    test = team.get(id = Integer.parseInt(request.getParameter("ID")));

    if(test != null)
    {
        out.println("ID: " + test.getId());
        out.println("name: " + test.getUsername());
        out.println("lastname: " + test.getLastname());
        out.println("age: " + test.getAge());
        out.println("favTeam: " + test.getFavTeam());
    }
    else
    {
        //ERROR

    }
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    String id = request.getParameter("id");
    String age  = request.getParameter("id");

    int x = 0;
    if(id!=null){
      try{
        x = Integer.parseInt(id);
       }catch(Exception e){
       }

    }

    String username = request.getParameter("username");
    String lastname = request.getParameter("lastname");
    String favTeam = request.getParameter("favTeam");

    int numage = 0;
    if(id!=null){
      try{
        numage = Integer.parseInt(age);
       }catch(Exception e){
       }

    }

    Profile profile = new Profile(x,username,lastname,favTeam,numage);

    team.put(profile.getId(),profile);

}

}

我的.xml

 <display-name>Homework</display-name>

  <servlet>
    <servlet-name>ProfileServlet</servlet-name>
    <servlet-class>ntrut.ProfileServlet</servlet-class>
  </servlet>

  <servlet-mapping>
      <servlet-name>ProfileServlet</servlet-name>
      <url-pattern>/profile</url-pattern>
  </servlet-mapping>

  </web-app>

您的下一行似乎有错误。

Integer.parseInt(request.getParameter("ID"))

确保从 request.getParameter("ID") 返回的值是一个数字,

你能试着在这行之前打印 request.getParameter("ID") 的值吗?你会看到它不是一个数字值。

我在 doPost 中所做的就是解决我的问题。我必须在我的 doGet 中使用 request.getParameter

做同样的事情
 String id = request.getParameter("id");

    int x = 0;
    if(id!=null){
      try{
        x = Integer.parseInt(id);
       }catch(Exception e){
       }

    }

    test = team.get(x);