【问题标题】:Using Cookies for Session Maintenance gives output Hello72EB80AEBFB7831A35879408414F9ABA使用 Cookie 进行会话维护提供输出 Hello72EB80AEBFB7831A35879408414F9ABA
【发布时间】:2015-11-05 15:32:49
【问题描述】:

我正在制作一个小程序,用户名将在他导航的所有页面中使用。我写了以下代码。

JSP 文件:

<form action="CookieServletOne" method="post">
User Name:<input type="text" name="username">
<input type="submit" value="Go">
</form>

Servlet 一(post 方法下):

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

        String username=request.getParameter("username");
        pw.println("Welcome " +username);

        Cookie ck=new Cookie("un",username);
        response.addCookie(ck);

        pw.print("<form action='CookieServletTwo'>"); 
        pw.print("<input type='submit' value='go'>"); 
        pw.print("</form>"); 

        pw.close();  

Servlet2:

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

    Cookie[] ck=request.getCookies();
    pw.write("Hello" +ck[0].getValue());

我想通过使用 cookie 将文本框中写入的值带到 Servlet2。但是,

最后打印的值是这样的:

你好5BD0268F522455DA719130360F74A969

我在这里做错了什么???

服务器:Apache Tomcat。 京东:1.7 操作系统:lubuntu。

谢谢。

【问题讨论】:

  • 是什么让你认为请求只有一个cookie,或者第一个cookie是你设置的名为“un”的cookie?找到你的饼干。不要盲目地假设只有一个。

标签: java jsp servlets cookies


【解决方案1】:

您应该将以下代码添加到您的servlet2 以获得您想要的结果。您得到的输出是 JSESSIONID。

Cookie[] ck=request.getCookies();
for(int i=0; i<ck.length; i++) {
    if("un".equals(ck[i].getName())) {
        pw.write("Hello" +ck[i].getValue());
    }
}

【讨论】:

    猜你喜欢
    • 2014-12-08
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多