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. JSP的getRequestDispatcher()与sendRedirect()的区别

    getRequestDispatcher()与sendRedirect()的区别   1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; r ...

  2. java内存区域分析及java对象的创建

    java虚拟机在执行java程序的过程中会将它管理的内存区域加分为若干个的不同的数据区域. 主要包括以下几个运行时数据区域,这里就只介绍经常会用到的 1:java虚拟机栈:我们常说的堆栈,栈就是指的j ...

  3. Java Integer封装类的IntegerCache内部类

    个人理解,不喜勿喷,欢迎指正. 首先看下面这段代码,猜一下输出结果是什么 Integer a = 10; Integer b = 10; System.out.println(a == b); a = ...

  4. dispatch emit broadcast

    1.broadcast 事件广播 遍历寻找所有子孙组件,假如子孙组件和componentName组件名称相同的话,则触发$emit的事件方法,数据为 params. 如果没有找到 则使用递归的方式 继 ...

  5. [ASP.NET MVC]笔记(三) 成员资格、授权和安全性

    阻止CSRF(跨站请求伪造) ASP.NET MVC提供了一个阻止CSRF攻击的好方法 在每个提交的表单中包含 @using (Html.BeginForm("Index", &q ...

  6. Entity Framework Core 2.0 数据库迁移

    看见过几篇其他大神写的关于EFCore2.0的文章.本人有点小白,一开始看文档的时候除了一些基本操作外其他部分几乎没有读懂,我估计会有一部分人跟我一样,因为人家读懂了的早就懂了. 在这里我写一下我自己 ...

  7. 改造百度ueditor字体为rem及相关体会

    提到富文本,可能大家都用到过百度的ueditor,作为一个重量级的插件,总结起来一句话,功能很强大,使用很费心.不知道是不是太久没有维护了,ueditor的文档可读性还真是差也可能是悟性不够吧.本文也 ...

  8. 团队作业8——第二次项目冲刺(Beta阶段)5.22

    1.当天站立式会议照片 会议内容: ①:检查总结上次任务完成情况 ②:安排本次任务的分工 ③:反思前三次自己的不足 ④:协商解决代码进度.成员投入时间等问题 2.每个人的工作 工作中遇到的困难: 代码 ...

  9. 201521123112《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 在做PTA5.3的时候一段看起来比较复杂的代码: List<En ...

  10. 201521044091《java程序设计》第四次总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.11.2 使用常规方法总结其他上课内容 Object是所有对象类的父类,而toString方法只有可以转换为字符串的类型对象才可 ...