3

我正在使用 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。

谢谢

4

5 回答 5

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);
    }
于 2012-12-13T02:49:52.040 回答
1

首先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

于 2012-12-13T03:17:27.073 回答
0

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

于 2012-12-13T02:49:33.110 回答
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

    }
于 2012-12-13T02:53:00.833 回答
0

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

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

于 2012-12-13T02:55:41.823 回答