日期:2014-05-17  浏览次数:20689 次

快!
下面代码什么地方错误,
第一次输入:
admin
1234
结果:都是空白
第二次输入:
asd
adf
结果:admin 1234
第三次输入:
www
123
结果:asd adf

以后每次以此类推
我现在是在同一页面出现这种问题,如果cookie在servlet中处理貌似没有这回事。求解
Java code

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%!
    String username="";
    String password="";
    boolean point=false;
 %>

<%

    if (point) {
        String name = request.getParameter("name");
        String word = request.getParameter("word");

        Cookie c = new Cookie("name", name);
        c.setMaxAge(24 * 3600);
        response.addCookie(c);

        Cookie k = new Cookie("word", word);
        k.setMaxAge(24 * 3600);
        response.addCookie(k);

        Cookie[] cookies = request.getCookies();
        if (cookies!= null) {
            for (int i = 0; i < cookies.length; i++) {
System.out.println(cookies[i].getValue());

                if (cookies[i].getName().equals("name")) {
                    username = cookies[i].getValue().trim();
System.out.println(username);
                }
                if (cookies[i].getName().equals("word")) {
                    password = cookies[i].getValue().trim();
System.out.println(password);
                }
            }
        }

    }
    
                point = true;
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
    </head>

    <body>
        <form method="get" action="cookielogin.jsp">
            用户名:
            <input type="text" name="name" value="<%=username%>" />
            <br>
            密&nbsp;&nbsp;&nbsp;&nbsp;码:
            <input type="password" name="word" value="<%=password%>" />
            <br>    
            <input type="submit" value="登陆" />
        </form>

    </body>
</html>




------解决方案--------------------
你把name和word写入了response的Cookie;

然后立即从request的Cookie中读取Cookie,那么显然只能是读取到上一次的结果;
因为response的那份要等浏览器接收完毕后,下次发起请求时才能反映到request中。
------解决方案--------------------
浏览器发起一个请求,走到你这个页面,你往response中写东西,让浏览器去写入cookie中(还没写)。同时你还从浏览器中去读request中的东西,当前请求中当然是上一次你写入cookie中的东西啊。
------解决方案--------------------
探讨
应该怎么改

------解决方案--------------------
都很牛!
------解决方案--------------------
探讨
引用:
应该怎么改


常规模式是:
首先,检查request参数中是否有目标量;
如有,则直接往response中写Cookie,因为即便request中有,也是要被覆盖掉才合理;
没有,则尝试从Cookie中读取。


最后,说一个你程序中最大的问题:
<%!
String username="";
String password="";
……

------解决方案--------------------
6楼 +1
------解决方案--------------------
6楼 +1