Cookie模拟记住密码

news/2024/5/18 12:26:44 标签: cookie

Cookie模拟记住密码

记住密码登录成功后把用户名和密码存到cookie中,当第二次的时候用户名和密码会显示到登录框中

login.jsp页面

<%@page import="java.net.URLDecoder"%>
<%@page import="com.lanou3g.utils.CookieUtis"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
	<%
		String username = CookieUtis.getCookieValue("username", request);
		if(username != null) {
			username = URLDecoder.decode(username, "UTF-8");	
		} else {
			username = "";
		}
		
		pageContext.setAttribute("username", username);
		
		
		String password = CookieUtis.getCookieValue("password", request);
		if(password != null) {
			//解码用decode
			password = URLDecoder.decode(password, "UTF-8");	
		} else {
			password = "";
		}
		pageContext.setAttribute("password", password);
		
	%>
	<form action="login" method="post">
		<p>真实姓名:<input type="text" name="realname" /></p>
		<p>账号:<input type="text" name="username" value="${username }" /></p>
		<p>密码:<input type="password" name="password" value="${password }" /></p>
		<p>
			<input type="checkbox" name="rememberMe" />记住密码
			<input type="submit" value="登录" />
		</p>
	</form>
</body>
</html>

后台页面代码实现


import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lanou3g.utils.CookieUtis;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		String realname = req.getParameter("realname");
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		
		String rememberMe = req.getParameter("rememberMe");
		if(rememberMe != null && "on".equals(rememberMe)) {
			// 勾上了记住密码
			// 记住密码
			// {key:xx , val: xx}
			// 存储方式一:
			// {key: 'user-' + username, val: password}
			// 存储方式二:
			// {key: 'username', val: username}
			// {key: 'password', val: password}
			
			//编码用encode
			String encodeUsername = URLEncoder.encode(username, "UTF-8");
			String encodePassword = URLEncoder.encode(password, "UTF-8");
			Cookie userNameCookie = new Cookie("username", encodeUsername);
			userNameCookie.setMaxAge(60 * 60 * 24 * 7); // 设置过期时间为一周 
			
			Cookie passwordCookie = new Cookie("password", encodePassword);
			passwordCookie.setMaxAge(60 * 60 * 24 * 7); // 设置过期时间为一周
			
			resp.addCookie(userNameCookie);
			resp.addCookie(passwordCookie);
		}else {
			Cookie userCookie = CookieUtis.getCookie("username", req);
			Cookie pwdCookie = CookieUtis.getCookie("password", req);
			if(userCookie != null) {
				userCookie.setMaxAge(0);
				resp.addCookie(userCookie);
			}
			if(pwdCookie != null) {
				pwdCookie.setMaxAge(0);
				resp.addCookie(pwdCookie);
			}
		}
		resp.setContentType("text/html;charset=UTF-8");
		
		PrintWriter out = resp.getWriter();
		
		out.println("<h1>登录成功,"+realname+"欢迎您</h1>");
		
		out.println("<a href='login.jsp'>退出</a>");
		
	}
}

cookieUtils_126">cookieUtils中代码实现

package com.lanou3g.utils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

public class CookieUtis {

	/**
	 * 按照cookie的key获取对应的value
	 * @param key
	 * @param req
	 * @return
	 */
	public static String getCookieValue(String key, HttpServletRequest req) {
		Cookie cookie = getCookie(key, req);
		return cookie != null ? cookie.getValue() : null;
	}
	
	/**
	 * 按照cookie的key获取对应的cookie对象
	 * @param key
	 * @param req
	 * turn
	 */
	public static Cookie getCookie(String key, HttpServletRequest req) {
		Cookie[] cookies = req.getCookies();
		if (cookies == null) {
			return null;
		}
		for (Cookie cookie : cookies) {
			if (cookie.getName().equals(key)) {
				return cookie;
			}
		}
		return null;
	}
}

运行项目在浏览器中运行输入
在这里插入图片描述
点击登录可以看到登录成功,点退出返回到登录页面
在这里插入图片描述
可以看到已经把用户名和密码存到cookie中了
在这里插入图片描述


http://www.niftyadmin.cn/n/899441.html

相关文章

缺省参数的函数

缺省参数的函数 在编写python代码时&#xff0c;会遇到缺省参数函数的定义和使用&#xff0c;那么什么叫缺省参数呢&#xff1f;一句话来讲就是传递的实参数目可以小于接受形参的数目。 def demo(name,genderTrue):if gender:print("%s is 男生" % name)else:print…

session登录和退出

session登录和退出 用户登录存到session中整个会话都可以访问到&#xff0c;退出清楚session域中的值 页面代码 在WebContent下创建一个login文件夹在login文件夹中创建login.jsp、main.jsp、other.jsp。 login.jsp <% page language"java" contentType"t…

元组和字典的拆包(多值参数函数)

元组和字典的拆包 在定义函数的时候&#xff0c;之前传递的参数都是单值的&#xff08;数字&#xff0c;字符串等&#xff09;&#xff0c;现在来学习多值参数&#xff08;元组和字典&#xff09;的传递&#xff1a; *args&#xff0c;用来接收元组 *kwargs&#xff0c;用来…

ajax实现用户登录校验和注册校验用户名是否存在

案例一&#xff1a;实现用户登录用ajax校验 如果是使用ajax异步提交表单&#xff0c;action属性可以不写&#xff0c;或者值为空 需求&#xff1a; 登录时用ajax判断名字和密码是否出错&#xff0c;如果出错并给出提示。出错的状况有&#xff1a; 没有输入用户名和密码用户名密…

面向对象编程的三个特征

面向对象编程有三个特征&#xff0c;即&#xff1a;封装&#xff0c;继承和多态 1、封装 类把方法和属性封装在类中&#xff0c;可以供给对象来调用。 2、继承 子类可以继承父类的所有方法和属性&#xff0c;也可以引用super().对父类的方法进行重写&#xff0c;继承给我们…

过滤器Filter学习

过滤器fliter Filter 过滤器 &#xff0c; 其实就是对客户端发出来的请求进行过滤。 浏览器发出&#xff0c; 然后服务器派servlet处理。 在中间就可以过滤&#xff0c; 其实过滤器起到的是拦截的作用。 作用 对一些敏感词汇进行过滤统一设置编码自动登录 … 过滤器原理示意…

监听器Liistener学习

监听器Liistener学习 能做什么事&#xff1f; 监听某一个事件的发生。 状态的改变。 监听器的内部机制 其实就是接口回调. 接口回调 需求&#xff1a; A在执行循环&#xff0c;当循环到5的时候&#xff0c; 通知B。 事先先把一个对象传递给 A &#xff0c; 当A 执行到5的时候…

__name__函数

__name__函数 __name__存放的是"__main__"字符串&#xff0c;在python代码的编写是&#xff0c;常用到这个函数。因为这样写的代码可以作为一个模块被其他文件导入而不出现歧义&#xff0c;否则没有缩进的代码行&#xff0c;在导入(import)后将被直接执行。python的…