首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SEVERE: servlet [ProfileServlet]的Servlet.service()在路径为[/Homework]的上下文中引发异常java.lang.NumberFormatException:空

SEVERE: servlet [ProfileServlet]的Servlet.service()在路径为[/Homework]的上下文中引发异常java.lang.NumberFormatException:空
EN

Stack Overflow用户
提问于 2020-03-06 12:16:27
回答 2查看 1K关注 0票数 1

我得到了这个异常,但我不知道为什么。它说它的一个数字格式异常为空。我看过其他关于这个问题的帖子,但是他们都没有解决我的问题。我的配置文件类是一个简单的类,它有id、用户名、姓氏、年龄和带有setter和getter的favTeam,以及一个构造函数。有人知道为什么会这样吗?

我的Servlet

代码语言:javascript
复制
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

代码语言:javascript
复制
 <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-06 12:20:40

错误似乎出现在您的下面一行中。

代码语言:javascript
复制
Integer.parseInt(request.getParameter("ID"))

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

您可以尝试在此行之前打印request.getParameter("ID")的值吗?您将看到它不是一个数字值。

票数 1
EN

Stack Overflow用户

发布于 2020-03-06 12:28:05

我为解决这个问题所做的就是我在doPost中所做的事情。我不得不在我的doGet中对request.getParameter做同样的事情

代码语言:javascript
复制
 String id = request.getParameter("id");

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

    }

    test = team.get(x);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60557496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档