效果图
登录界面
核心页
未点击登录
点击登录之后
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存取值