0

Tomcat に含まれている Cookie の例を実行しようとしていますが、問題が発生しています。Tomcat が表示するプログラムのソース コードは次のとおりです。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class CookieExample extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        // print out cookies

        Cookie[] cookies = request.getCookies();
        for (int i = 0; i < cookies.length; i++) {
            Cookie c = cookies[i];
            String name = c.getName();
            String value = c.getValue();
            out.println(name + " = " + value);
        }

        // set a cookie

        String name = request.getParameter("cookieName");
        if (name != null && name.length() > 0) {
            String value = request.getParameter("cookieValue");
            Cookie c = new Cookie(name, value);
            response.addCookie(c);
        }
    }
}

そして、私はjava.lang.NullPointerExceptionアットラインを取得していますfor (int i = 0; i < cookies.length; i++) {

cookieName と cookieValue を渡しています。最初にCookieを設定してから印刷しようとしましたが、同じ行で同じエラーが発生しています。問題は、このプログラムを数か月前に試したとき、Internet Explorer では問題なく動作していましたが、Chrome では動作しなかったことです。私が推測する値として名前とプロキシとしてhttpを与えていました。

4

1 に答える 1

2
Cookie[] cookies = request.getCookies()

null を返します。これは、送信された Cookie がゼロであることを示すサーブレット エンジンの方法です。それに対するチェックで for ループを保護する必要があります。

以前は「時々」機能していた可能性があります。これは、IE セッションに Cookie があり、送信されていたクロムではないため、ループが実行されたためです。

于 2013-09-03T02:16:42.887 に答える