猿问

关于jsp+servlet的cookie保存失败问题?

第一种情况:在jsp-1建立一个表单,将数据提交到servlet里边,然后在dopost用response.addcookie()不能成功将该cookie保存在浏览器,
第二种情况:直接将数据提交给jsp-2,在jsp-2页面直接就可以成功保存cookie;
第三种情况:在jsp-1提交到jsp-2,利用请求转发到servlet,然后再在dopost用response.addcookie()就能成功添加cookie;
请问这问题是出在哪,不能直接将数据提交给servlet后直接存储cookie么,
(ps:在第一种情况下,在addcookie()后,请求转发到jsp-3页面,并遍历cookie可以找到在servlet添加的cookie,但是在jsp-1还是找不到;我认为servlet的添加cookie的方法应该是跟jsp的不能共享,但确实是执行了,但情况三又很奇怪,有哪位大神可以解释下原因么,servlet的response不能直接跟jsp共享么)

```

<form action="servlet/Dologin" method="post">
        <br>
            是否记住密码:<input type="checkbox" name="isUseCookie" checked="checked"/>
            <p class="main">
                <label>用户名: </label>
                <input name="username" value="<%=name %>" /> 
                <label>密码: </label>
                <input name="password" value="<%=password %>"/>
            </p>
            <p class="space">
                <input type="submit" value="登录" class="login" style="cursor: pointer;"/>
            </p>
            </form>


```

```

  --------servletDopost()
        String name=request.getParameter("username");
    String password=request.getParameter("password");

    String[] isUseCookies = request.getParameterValues("isUseCookie");
     if(isUseCookies!=null&&isUseCookies.length>0){
        Cookie uc= new Cookie("name",name);
        Cookie pw = new Cookie("pw",password);
        uc.setMaxAge(864000);
        pw.setMaxAge(864000);
        response.addCookie(uc);
        response.addCookie(pw);
        }
     else{
            Cookie[] cookies=request.getCookies();
            if(cookies!=null&&cookies.length>0){
                for(Cookie c:cookies){
                    System.out.println(c.getName());
                    if(c.getName().equals("name")||c.getName().equals("pw")){
                        c.setMaxAge(0);
                        response.addCookie(c);
                    }
                }
            }
        }

```


IOldCat
浏览 1741回答 1
1回答
随时随地看视频慕课网APP

相关分类

Java
我要回答