当前位置: 代码迷 >> Java Web开发 >> 快!该怎么处理
  详细解决方案

快!该怎么处理

热度:1640   发布时间:2013-02-25 21:09:40.0
快!
下面代码什么地方错误,
第一次输入:
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
  相关解决方案