在Java中比较String参数时出现NullPointerException

时间:2012-12-13 02:46:11

标签: java servlets nullpointerexception

我正在使用servlet作为重定向页面的控制器。所以,我有以下链接:

<li><a href="actionController?key=contact">Contact</a></li>
<li><a href="actionController?key=support">Request support</a></li>

我希望在我的控制器中接收此参数,并将页面中的请求重定向到Contact.jsp页面。

因此,我认为那将是:

    contact = request.getParameter("contact");

    support = request.getParameter("support");

    if (contact.equals("contato"))
    {
        RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Contact.jsp");
        view.forward(request, response);        
    }
    else if (support.equals("support"))
    {
        RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Support.jsp");
        view.forward(request, response);
    }

然而,无法正常工作,是java.lang.NullPointerException。

由于

5 个答案:

答案 0 :(得分:5)

您的servlet代码似乎与您的HTML代码段不匹配。我想你需要写:

    String key = request.getParameter("key");

    if (key != null && key.equals("contact"))
    {
        RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Contact.jsp");
        view.forward(request, response);        
    }
    else if (key != null && key.equals("support"))
    {
        RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/center/Support.jsp");
        view.forward(request, response);
    }

答案 1 :(得分:1)

首先使用param名称key获取key值(这是您问题的根本原因)然后只需将字符串文字作为第一个参数进行比较避免任何NullPointerExceotion

String key = request.getParameter("key");
if ("contact".equals(key)){
    RequestDispatcher view = 
                       request.getRequestDispatcher("/WEB-INF/center/Contact.jsp");
    view.forward(request, response);        
}else if ("support".equals(key)){
    RequestDispatcher view = 
                       request.getRequestDispatcher("/WEB-INF/center/Support.jsp");
    view.forward(request, response);
}

如果需要,也可以添加默认处理,即处理key既不是contact也不是support的方案。

答案 2 :(得分:0)

这意味着,找不到“联系”或“支持”参数。在使用它们之前检查它们是否为空。

答案 3 :(得分:0)

请尝试以下代码:

    String key = request.getParameter("key");

    if(null == key){
    // do something

    } else if(key.equals("contact")){
    // do something else

    } else if(key.equals("support")){
    // do something else

    } else {
    // etc

    }

答案 4 :(得分:0)

您的请求不会包含任何“联系人”或“支持”参数,而是包含“密钥”参数。

我建议您查看RFC 3986 - 解释URI语法,包括查询参数。