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中了