session和cookie的使用,使用session显示用户,使用cookie实现记住密码

效果图

登录界面

在这里插入图片描述

核心页
未点击登录

在这里插入图片描述

点击登录之后

在这里插入图片描述

cookie的效果

请添加图片描述

核心代码

创建Cookie工具类
package com.tmg.util;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

/**
 * Cookie工具箱
 */

public class CookieUtils {
    /**
     * 保存cookie
     * @param key
     * @param value
     * @param maxAge
     */
    public static void saveCookie(HttpServletResponse response, String key, String value, int maxAge) throws UnsupportedEncodingException {
//        对键 值进行编码
        key=URLEncoder.encode(key,"UTF-8");
        value=URLEncoder.encode(value,"UTF-8");
//        创建cookie
        Cookie cookie = new Cookie(key, value);
//        设置cookie
        cookie.setMaxAge(maxAge);
        cookie.setPath("/");
//        添加cookie
        response.addCookie(cookie);
    }

    public static String readCookie(HttpServletRequest request,String key) throws UnsupportedEncodingException {
        Cookie[] cookies = request.getCookies();
        for(Cookie cookie: cookies){
//            解码
            String name= URLDecoder.decode(cookie.getName(),"UTF-8");
            String value= URLDecoder.decode(cookie.getValue(),"UTF-8");
            if(key.equals(name)){
                return value;
            }
        }
        return null;
    }

    public static void deleteCookies(HttpServletResponse response,String key) throws UnsupportedEncodingException {
        saveCookie(response,key,"",0);
    }
}

后端登录后保存信息
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String numberme = req.getParameter("remberPassword");
        System.out.println("numberPassword="+numberme);
        List<User> list =userService.queryOne(username,password);
        if(list.size()==0){
            req.getRequestDispatcher("/denglu.jsp").forward(req,resp);
        }else {
            User user = list.get(0);
            //判断是否记住密码
            if("on".equals(numberme)){
                int age=7*24*60*60;
//                保存用户和密码
                CookieUtils.saveCookie(resp,"username",username,age);
                CookieUtils.saveCookie(resp,"password",password,age);
//              使用session保存
                req.getSession().setAttribute("user",user);
            }else {
                CookieUtils.deleteCookies(resp,"username");
                CookieUtils.deleteCookies(resp,"password");
            }
            req.getRequestDispatcher("/queryAll").forward(req,resp);
        }
    }
jsp实现代码
登录页面的cookie
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style type="text/css">
        input{
            font-size: 25px;
        }
    </style>
</head>
<body style="font-size: 25px">
<%
    String username= CookieUtils.readCookie(request,"username");
    String password= CookieUtils.readCookie(request,"password");
//    | 名称        | 类型               | 范围                                           |
//    | ----------- | ------------------ | ---------------------------------------------- |
//    | application | ServletContext     | 整个服务器共享                                 |
//    | session     | HttpSession        | 一个单独的会话,服务器会为每个用户创建一个会话 |
//    | request     | HttpServletRequest | 一次请求                                       |
//    | pageContext | PageContext        | 当前页面                                       |
    //     pageContext 域对象 当前页面有效
    pageContext.setAttribute("username",username);
    pageContext.setAttribute("password",password);
%>
<form method="post" action="/denglu">
    输入账号:<input type="text" name="username" placeholder="请输入你的账号" value="${username}"><br>
    输入密码:<input type="password" name="password" placeholder="输入你的密码" value="${password}"><br>
    <input type="checkbox" name="remberPassword">记住密码<br>
<%--    记住密码:<input type="checkbox" name="remberPassword">记住密码<br>--%>
    <input type="submit" value="登录"><br>
</form>

</body>
</html>

取session存取值

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值