Cookie实现登录记住密码

时间:2022-06-18 08:51:02

Cookie实现记住登录密码,用户可以*选择是否记住密码,或者用户之前选择记住了,但是某一次又不想记住了,需要将之前对应的Cookie删除掉

Cookie相当于map 也是键值对的形式,但是并不相同

response.addCookie(Cookie对象名)才会生效;

表单提交用的get 方便地址栏查看数据变化,

登录Servlet:

package ni.jun.yang.servlet;

import java.io.IOException;
import java.io.PrintWriter; 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; @WebServlet("/LoginServlet1")
public class LoginServlet1 extends HttpServlet {
private static final long serialVersionUID = 1L; public LoginServlet1() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
Cookie [] cookies = request.getCookies();
//声明用户名和密码为空字符串
String uName = "";
String uPsw = "";
//获取根据名字获取对应的cookie 的值
if(cookies!=null){
for(Cookie x : cookies){
if(x.getName().equals("userName")){
uName = x.getValue();
}else if(x.getName().equals("userPsw")){
uPsw = x.getValue();
}
}
} out.println("<html><head><meta charset='utf-8'><title>Cookie</title>");
out.println("</head>");
out.println("<body>");
// input 标签的value 为声明的字符串,没有cookie 就是空字符串,有cookie就是获取到的用户名和密码
out.println("<form action='ResultServlet' method='get'>");
out.println("用户名:<input type='text' name='userName' value=" + uName + ">");
out.println("密码:<input type='password' name='userPsw' value=" + uPsw + ">");
out.println("用户名:<input type='checkbox' name='remember' ");
//如果用户名和密码都获取到内容了,就将复选框默认选中记住密码,如果没有cookie,则不会默认选中,需要手动选择
if (uName != "" && uPsw != "") {
out.println("checked='checked'");
}
out.println(" >记住密码");
out.println("<input type='submit' value='登录'>");
out.println("</form"); out.println("</body>");
out.println("</html>"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);
} }

数据处理代码:

package ni.jun.yang.servlet;

import java.io.IOException;
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; @WebServlet("/ResultServlet")
public class ResultServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public ResultServlet() { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
//获取用户名和密码以及复选框是否选中
String userName = request.getParameter("userName");
String userPsw = request.getParameter("userPsw");
String remember = request.getParameter("remember");
// remember !=null 复选框被选中,需要设置cookie记住用户明和密码;
if(remember != null){
//没有连接数据库,给一个设定的用户和密码
if(userName.equals("lisi") && userPsw.equals("123")){
//成功匹配,说明登录成功,设置cookie
Cookie cName = new Cookie("userName", userName);
Cookie cPsw = new Cookie("userPsw", userPsw);
cName.setMaxAge(300);
cPsw.setMaxAge(300);
response.addCookie(cName);
response.addCookie(cPsw);
}
// remember =null 没有选中记住密码,或以前记住了密码,但是后来登录时取消了记住密码,则将对应的cookie清除
}else{
Cookie [] cookies = request.getCookies();
if(cookies != null){
for(Cookie x : cookies){
if(x.getName().equals("userName")){
//设置时间0 清除cookie
x.setMaxAge(0);
response.addCookie(x);
}else if(x.getName().equals("userPsw")){
x.setMaxAge(0);
response.addCookie(x);
}
}
} }
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);
} }