2017-10-11 1 views
1

eclipseを使ってサーブレットで簡単なクッキープログラムを作成しようとしています。なぜ、Cookieの名前と値がそれぞれ 'http'と 'proxy'であるのですか?

これは、それがどのようにある: -

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

    Cookie[] cookies = request.getCookies(); 


    if(cookies == null) 
    { 
     out.print("<b> Hello Stranger </b><br>"); 

    } 
    else 
    { 
     for(Cookie cookie:cookies) 
     { 
      out.print("<b> Hello" + cookie.getValue() + "</b>"); 
     } 
    } 

    out.print("<form action = '' method = 'post'>"); 
    out.print("What is your name?"); 
    out.print("<input type = 'text' name = 'username'><br>"); 
    out.print("<br>"); 
    out.print("<input type = 'submit'>"); 
    out.print("</form>"); 


} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 

    PrintWriter out = response.getWriter(); 
    response.setContentType("text/html"); 

    String str = request.getParameter("username"); 

    Cookie[] cookies = request.getCookies(); 

    if (cookies == null) 
    { 
     Cookie c = new Cookie("username",str); 
     c.setMaxAge(-1); 
     response.addCookie(c); 
    } 

    for(Cookie cookie: cookies) 
    { 
     out.print("<b> Hello," + cookie.getName() + "</b>"); 
    } 
} 

私も提出をクリックした後にこんにちはHTTP を取得していますストレンジャーこんにちはとして日食 を使用しての代わりに、出力を取得Tomcatサーバーでそれを実行している場合 名前の代わりに同じものが表示されています。

答えて

0

インバウンドHttpServletRequestに含まれるクッキーのリストを繰り返し処理していますが、新しいクッキーをHttpServletResponseに追加しています。

HttpServletResponseにはaddCookie()メソッドがありますが、一致するgetCookies()メソッドがありません。したがって、レスポンスオブジェクトに追加したCookieを表示するには、この問題を回避する必要があります。たとえば、herehereのように、これをカバーする記事がいくつかあります。

+0

しかし、今はうまくいくようです!クッキーが一つのことになっているわけではありません。つまり、レスポンスオブジェクトにクッキーを追加した後、レスポンス(クッキーを含む)がクライアントに送信され、そこに格納されます。クライアント側からのそれぞれのさらなる要求は、その特定のウェブページに設定されたすべてのクッキーを含むべきである。 つまり、更新ページを表示すると、doGetメソッドが呼び出されましたが、Cookieは既に存在しています。 –

+0

Yup - クライアントからの同じサーブレットへの後続の要求には、以前の応答で設定されたCookieが含まれます。 –

関連する問題