吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1132|回复: 13
收起左侧

[求助] JavaWeb cookie 问题,求教大佬

  [复制链接]
苏哲哲哲 发表于 2021-11-12 02:25
实现功能就是 页面登录时,保存账号 密码 自动保存
问题:登录成功后 在页面上获取不到登录的账号 和密码代码:
这是servlet
package com.java.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* Created with IntelliJ IDEA.
*
* @Author:
* @Date: 2021/11/11/19:16
* @Des:
*/
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String  name = req.getParameter("userName");
        String pwd = req.getParameter("pwd");
        String mem = req.getParameter("m");
        System.out.println("名字:"+name+",密码:"+pwd+",是否记住密码:"+mem);
        if (name.equals("1") && pwd.equals("1") && name !="" && pwd != ""){
            System.out.println("账号密码都为admin,登录成功!");
            Cookie u = null;
            Cookie p = null;
            Cookie m = null;
            //记住密码 把数据存入cookie
            u = new Cookie("u",name);
            p = new Cookie("p",pwd);
            if ("1".equals(mem)){
                System.out.println("记住密码 把数据存入cookie");
                u = new Cookie("u",name);
                p = new Cookie("p",pwd);
                m = new Cookie("m",mem);
                System.out.println("loginservlet43mem"+mem);
                //设置保存时间 单位是秒
                u.setMaxAge(60);
                p.setMaxAge(60);
                m.setMaxAge(60);

                resp.addCookie(u);
                resp.addCookie(p);
                resp.addCookie(m);
                resp.sendRedirect("success.jsp");
                //req.getRequestDispatcher("success.jsp").forward(req,resp);

            }else {
                //不记住密码
                System.out.println("不记住密码!");
                //设置保存时间 单位是秒
                    u.setMaxAge(0);
                    p.setMaxAge(0);

                    //故意设置错 不让他保存
                m = new Cookie("m","2");
                if (m != null){
                    m.setMaxAge(0);
                }
                System.out.println(u.getName()+"-------------------"+u.getValue());
                resp.addCookie(u);
                resp.addCookie(p);
                resp.addCookie(m);

                //cookie传不到success页面值,用作用域传
//                req.setAttribute("userName",u.getValue());
//                req.setAttribute("pwd",p.getValue());
                //不可以用作用域传 作用域的作用是浏览器不关闭数据就一直存在
//                req.getSession().setAttribute("userName",u.getValue());
//                req.getSession().setAttribute("pwd",p.getValue());

                //虽然不记住密码但是密码正确,可以进入success页面
                resp.sendRedirect("success.jsp");
                //req.getRequestDispatcher("success.jsp").forward(req,resp);
            }
        }else {
            //账号密码不正确
            System.out.println("进入账号密码不正确else");
            resp.getWriter().print("登录失败,账号密码错误");
            resp.setHeader("refresh","3,url=index.jsp");
        }
    }
}


这是首页:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%--
  Created by IntelliJ IDEA.
  User:
  Date: 2021/11/11
  Time: 19:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
<c:set var="m" value="${cookie.m.value}" ></c:set>
  <form action="/login.do" method="post">
    账号:<input type="text" name="userName" value="${cookie.u.value}"><br>
    密码:<input type="password" name="pwd" value="${cookie.p.value}"><br>
    <input type="checkbox" value="1" name="m"
            <c:if test="${'1' eq m}">checked</c:if>  >保存密码
    <input type="submit" value="注册">
  </form>
  </body>
</html>



这是登录成功页面:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User:
  Date: 2021/11/11
  Time: 23:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<%--<h6>用户: ${cookie.u.value} 登录成功。</h6>--%>
<%--<h6>密码为:${cookie.p.value}</h6>--%>

<h6>用户: ${userName} 登录成功。</h6>
<h6>密码为:${pwd}</h6>

<%--<%--%>
<%--    String m = request.getParameter("m");--%>
<%--    String s = "";--%>
<%--    System.out.println("success页面是否保存密码"+m);--%>
<%--if (m != null && m.equals("1")){--%>
<%--    m = "你选择了保存密码!";--%>
<%--    s = "既然保存了密码,那就测试一下把!";--%>
<%--}else {--%>
<%--    m = "你没有选择保存密码。";--%>
<%--}--%>
<%--%>--%>
<c:set var="m" value="${cookie.m.value}" ></c:set>
m:
<c:out value="${m}"></c:out>
<br>
<c:if test="${'1' eq m}">
    <h6>你选择了保存密码!</h6>
    <h6><a href="index.jsp">既然保存了密码,那就测试一下把!</a></h6>

</c:if>
<c:if test="${'1' != m}">
    你没有选择保存密码。
</c:if>
<%--<h6><%=m%></h6>--%>


</body>
</html>

求大佬点拨一下。

没有保存密码的登录成功页面,本来就显示不出来账号密码

没有保存密码的登录成功页面,本来就显示不出来账号密码

登录页面,本来如果点击保存密码,账号和密码还可以显示,选择不知道为什么显示不出来了

登录页面,本来如果点击保存密码,账号和密码还可以显示,选择不知道为什么显示不出来了

免费评分

参与人数 1热心值 +1 收起 理由
54sb + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 苏哲哲哲 发表于 2021-11-12 02:26
是cookie问题??
hkfire 发表于 2021-11-12 09:27
我只能说好久不用cookie和jsp了 得多老的项目了 才会用 现在都是vue
小公主々 发表于 2021-11-12 09:42
1. cookie这样存不太合适
2. 去了解一下转发和重定向
3. 把cookie存到session里
 楼主| 苏哲哲哲 发表于 2021-11-12 10:03
小公主々 发表于 2021-11-12 09:42
1. cookie这样存不太合适
2. 去了解一下转发和重定向
3. 把cookie存到session里

session作用域不是浏览器不关闭 他就不会清楚数据嘛
 楼主| 苏哲哲哲 发表于 2021-11-12 10:04
hkfire 发表于 2021-11-12 09:27
我只能说好久不用cookie和jsp了 得多老的项目了 才会用 现在都是vue

学校老师教的jsp 还没有学vue
 楼主| 苏哲哲哲 发表于 2021-11-12 10:05
philonic 发表于 2021-11-12 07:55
页面上获取cookie有两种方式
1、jsp
2、js var x = document.cookie;  将以字符串的方式返回所有的 cook ...

我看老师之前是这样写的 获取cookie数组 然后遍历,但是老师这次让用c标签库和el表达式
我先试一下 获取cookie数组把
frankjoe 发表于 2021-11-12 10:08
这好像是简单的jsp
Yxlhsx 发表于 2021-11-12 10:15
js 里面取cookie看看有没有
smallmin 发表于 2021-11-12 10:17

人家是问问题,你感谢分享啥
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表