当传递值时,HttpServlet的getParameter(“param”)返回null

时间:2011-08-12 18:19:39

标签: java servlets

我看到一个奇怪的问题,request.getParameter("pg")在URL中返回null,我可以看到它与其他参数一起传递。除了这一个参数外,所有其他参数都正确打印。可能出现什么问题?

Map<String,String[]> paramMap = (Map<String,String[]>)request.getParameterMap();
        for (Map.Entry<String, String[]> paramPair : paramMap.entrySet()) {
            LOGGER.info("key - " + paramPair.getKey() + " value =" + paramPair.getValue()[0]);
        }

示例网址 -

http://myserver?searchfor=History+of+Photography&cb=XQ&n=77de88ca&ptnrS=XQyyyyyyYYus&qid=812753692c6536fb529f5ca7ac5aca9b&action=pick&ss=sub&pn=1&st=hp&ptb=447E5AED-F162-40B4-9EE5-A81299D0223D&plp=1&pg=PRshop&redirect=mPWsrdz9heamc8iHEhldEeSc%2FVOw6SzSGaNI5V3YDA%2F2aJhytHNs8w96Bn6LLIZVUIhPwV62vOCzTXhqJvTnW5g66rsz%2FnxYxdLMAYgDRrDL0jeKlXJQ1pFUFFVXHSrvxvGE971vUn5%2F0m7v9vrFJGEoo6nckfQS9o9CGCHUWndDqD0rhA8TW%2Bfa%2Fpxz8JafQQ3ID%2Fsw6GdCvt65%2FomhgEvEX4xv%2B8XQkfNLNvl6%2BpZdZJshoyUfDw5LZBwzFpw52x0Em9ZDVu1sHm4WxLPt9rDUBHj5Wn0eVf5HNoVYGyCa%2FfufPwfQy8OYiLdgvskMPxUTd3YQOJiiO%2F%2ByMdF4Ew%3D%3D&hlc=YWotbWVnYXx4cS1ocA..&pr=PR&ct=GG&tpr=sbt&tp=top

1 个答案:

答案 0 :(得分:4)

对于ServletRequest的Java EE 6 API,如果参数不存在,getParameter(String)将返回null。如果您收到null,则该参数不存在。

此外,您包含的网址示例未显示此错误。

以下是我用来测试的代码:


public final class BlueServlet extends HttpServlet
{
    private static final long serialVersionUID = 6055351295950796407L;

    private static final Logger logger = LoggerFactory.getLogger(BlueServlet.class);

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        PrintWriter responseWriter;
        @SuppressWarnings("unchecked")
        Map<String, String[]> parameterMap = request.getParameterMap();

        if ((parameterMap != null) && !parameterMap.isEmpty())
        {
            Map.Entry<String, String[]> entry;
            int index;
            Iterator<Map.Entry<String, String[]>> iterator = parameterMap.entrySet().iterator();
            StrBuilder valueBuffer = new StrBuilder();
            String[] values;

            while (iterator.hasNext())
            {
                entry = iterator.next();
                values = entry.getValue();

                valueBuffer.setLength(0);

                if (values != null)
                {
                    for (index = 0; index < values.length; ++index)
                    {
                        valueBuffer.appendSeparator(", ");
                        valueBuffer.append(values[index]);
                    }
                }
                else
                {
                    valueBuffer.append("[none]");
                }

                logger.info("Key: {}; Value(s): {}", entry.getKey(), valueBuffer);
            }
        }
        else
        {
            logger.info("parameterMap is empty.");
        }

        responseWriter = response.getWriter();
        responseWriter.println("<html><head><title>Blue</title></head><body>");
        responseWriter.println("<h1>Blue</h1></body>");
    }