一、创建一个记住我的工具类
public class RememberMe {
public static void rememberMe(String phone, String password, HttpServletRequest request, HttpServletResponse response) {
//创建一个cookie,存放制定值
Cookie phoneCookie = new Cookie("phone", phone);
Cookie passwordCookie = new Cookie("password", password);
//设置Cookie的有效路径(制定当前目录)
phoneCookie.setPath("/");
passwordCookie.setPath("/");
//获取页面复选框的值(用作判断)
String rememberMe = request.getParameter("rememberMe");
//这是选中的情况, 设置Cookie的有效时间(1周)
if (rememberMe != null && rememberMe.equals("1")) {
phoneCookie.setMaxAge(7 * 24 * 60 * 60);
passwordCookie.setMaxAge(7 * 24 * 60 * 60);
}
//这是没有选中的情况
else{
phoneCookie.setMaxAge(0);
passwordCookie.setMaxAge(0);
}
//将Cookie存放到response中
response.addCookie(phoneCookie);
response.addCookie(passwordCookie);
}
}
二、登录之后调用工具类实现这个功能
package com.ys.servlet.user.crud;
import com.ys.model.User;
import com.ys.service.UserService;
import com.ys.service.impl.UserServiceImpl;
import com.ys.util.RememberMe;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/login")
public class UserLoginServler 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 {
String choose = req.getParameter("choose");
String phone = req.getParameter("phone");
String password = req.getParameter("password");
//普通用户
if (choose != null && choose.equals("1")){
UserService userService = new UserServiceImpl();
User user = userService.findUserByLogin(phone, password);
System.out.println(user);
//调用remeberme实现记住我
RememberMe rm = new RememberMe();
rm.rememberMe(phone,password,req,resp);
if(user!=null){
HttpSession session = req.getSession();
session.setAttribute("user",user);
//跳转至个人主页
req.getRequestDispatcher("mainpage.jsp").forward(req,resp);
}
}
//管理层
if (choose != null && choose.equals("2")){
MangerService mangerService = new MangerServiceImpl();
Manger manger = mangerService.findMangerByLogin(phone, password);
//调用remeberme实现记住我
RememberMe rm = new RememberMe();
rm.rememberMe(phone,password,req,resp);
if(manger!=null){
HttpSession session = req.getSession();
session.setAttribute("manger",manger);
//跳转至主页面
resp.sendRedirect(req.getContextPath()+"/manger/select");
}
}
}
}
三、前端页面设计
<script type="text/javascript" src="js/jquery-3.6.0.js"></script>
<script type="text/javascript">
$(function (){
var phonecookie = "";
var passwordcookie = "";
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
let strings = cookie.split("=");
let key = strings[0];
let value = strings[1];
if (key == " password") {
passwordcookie = cookie;
} else if (key == "phone") {
phonecookie = cookie;
}
}
}
let phone = phonecookie.split("=")[1];
let password = passwordcookie.split("=")[1];
if (phone != null && password != null) {
$("#phone-i1").val(phone);
$("#password-i2").val(password);
}
})
</script>
<input type="radio" id="user-login" name="choose" value="1"> 普通职员
<input type="radio" id="manger-login" name="choose" value="2"> 管理者
四、页面展示