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);
} }

Cookie实现登录记住密码的更多相关文章

  1. Android SharedPreferences登录记住密码

    SharedPreferences是Android中存储简单数据的一个工具类.可以想象它是一个小小的Cookie,它通过用键值对的方式把简单 数据类型(boolean.int.float.long和S ...

  2. vue 登录 + 记住密码 + 密码加密解密

    <template> <el-form :model="ruleForm"> <h3 class="title">系统登录& ...

  3. JavaScript登录记住密码操作

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  4. QT 登录记住密码方法之一:Qt QSettings读写配置文件

    不过本文写的是明文保存,最好还是加密一下,以防文件被非法读取 /**登录初始化的时候处理这部分操作*/ Settings cfg("user.ini",QSettings::Ini ...

  5. 设置Cookie,登录记住用户登录信息,获取用户登录过得信息

    function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Da ...

  6. ios用户登录记住密码

    登录 记录已登录用户步骤,存入偏好设置中存储放入一个数组. 具体存储 :存储用户到偏好设置中,其中用户是一个数组 向服务器响应客户端后的一些操作 (如果响应数据成功)其中用户和密码是一一对应的 .1先 ...

  7. 通过jquery.cookie.js实现记住用户名、密码登录功能

    Cookies 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.js基于jquery:先引入jquery,再引入:jq ...

  8. php实现记住密码下次自动登陆

    这篇博客里面还写到 实现“记住我的登录状态”的功能方法,简言之,就是对首先对session进行用户信息赋值,检测session,失效后,利用cookie对其赋值: 在实现过程中,根据网上一些代码贴,整 ...

  9. shiro 实现 网站登录记住我功能 学习记录(四)

    在很多网站都有在登录的时候,比如说记住我 几天之内  只要再此打开这个网站,都不需要再登录的情况: 1.前台JSP增加 单选框:记住我 如 2.在处理登录的 Controller 代码中增加接收这个参 ...

随机推荐

  1. Java中的标识符和关键字

    1.标识符 含义:标识符用于给程序中的类.变量.方法命名的符号. 组成:数字(0-9).字母(a-z)(A-Z).下划线(_).美元符号$. 命名规则:1.数字不能够作为命名符号的开头 2.不能够使用 ...

  2. python+selenium自动化软件测试(第16章):基础实战(3)

    #coding:utf-8 from time import sleep from selenium import webdriver class cloudedge_register(object) ...

  3. hr用法

    定义和用法 <hr> 标签在 HTML 页面中创建一条水平线. 水平分隔线(horizontal rule)可以在视觉上将文档分隔成各个部分. HTML 与 XHTML 之间的差异 在 H ...

  4. main方法和args参数

    第一次接触java常常奇怪main方法和其参数有什么用.我们只知道main方法是程序入口,其实main方法同时也是一个可以手动调用的静态方法. 我们可以利用main方法写简单的一个递归程序 publi ...

  5. Mac系统实现git命令自动补全

    当我第一次使用mac电脑的时候,由于我是从事软件开发的程序员,所以必须经常要使用到git,然而发现在mac系统下,git不能实现命令的自动补全,然后网上查找资料,找到了解决办法,终于可以实现了git命 ...

  6. PS小实验-去除水印

    PS小实验-去除水印 水印是一些品牌商覆盖在图片或视频上的一个商标logo或小文本,比如大家最讨厌的百度logo,作者本人也是比较讨厌水印的,让好端端的一张图片变得美中不足. 个人觉得用photosh ...

  7. 【2017集美大学1412软工实践_助教博客】个人作业3——个人总结(Alpha阶段)

    题目 个人作业3--个人总结(Aplha阶段) 成绩公示 评分项 alpha过程的总结 5个问题 自我评价表 评论区互动 总分 分值 4 2.5 2.5 1 10 201221123032 1 1 2 ...

  8. 201521123007《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 作业参考文件下载 1. 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.jav ...

  9. 201521123048 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态:使用单一接口操作多种类型的对象. 2.private修饰属性,public修饰方法 ...

  10. 201521123030《Java程序设计》第3周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...