JavaWeb学习----Cookie实现记住密码的功能

【声明】 

欢迎转载,但请保留文章原始出处→_→ 

生命壹号:http://www.cnblogs.com/smyhvae/

文章来源:http://www.cnblogs.com/smyhvae/p/4096807.html

 

【正文】

本文主要内容:

•1、什么是Cookie

•2、Cookie带来的好处

•3、Cookie的主要方法

 

一、什么是Cookie

cookie是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。Cookie的目的就是为用户带来方便,为网站带来增值。虽然有着许多误传,事实上Cookie并不会造成严重的安全威胁。Cookie永远不会以任何方式执行,因此也不会带来病毒或攻击你的系统。另外,由于浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB,因此Cookie不会塞满你的硬盘。

例如,当我们第一次访问网站输入用户名密码时,可以选择让系统记住用户名密码,下次就不用重新输入了,这就是典型的Cookie的应用。

 

二、Cookie带来的好处:

cookies给网站和用户带来的好处非常多:

  • 1. Cookie能使站点跟踪特定访问者的访问次数、最后访问时间等
  • 2. Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告
  • 3. Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点
  • 4. Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务在JSP中,我们也可以使用Cookie,来编写一些功能强大的应用程序。

有些浏览器可以禁用Cookie,所以不能使用Cookie来完成核心的业务。

 

三、Cookie类的主要方法:

int getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
int setMaxAge() 设置Cookie过期时间,以秒计算。 String getName() 返回Cookie的名字 String getValue() 返回Cookie的值。
void setValue(String newValue) cookie创建后设置一个新的值。 

注:名字和值是我们始终关心的两个部分。稍后会详细介绍getName/setNamegetValue/setValue。

 

四、代码举例:

【实例】实现记住密码、自动登录的功能

新建JavaWeb工程Test06.

login.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 
 9 <%
10     String username = "";
11     String password = "";
12     //获取当前站点的所有Cookie
13     Cookie[] cookies = request.getCookies();
14     for (int i = 0; i < cookies.length; i++) {//对cookies中的数据进行遍历,找到用户名、密码的数据
15         if ("username".equals(cookies[i].getName())) {
16             username = cookies[i].getValue();
17         } else if ("password".equals(cookies[i].getName())) {
18             password = cookies[i].getValue();
19         }
20     }
21 %>
22 
23 </head>
24 <body>
25     <form action="login_handler.jsp" method="post">
26         username:<input type="text" name="name" value="<%=username%>" /><br/>
27         password:<input type="password" name="pwd" value="<%=password%>" /><br/>
28         <input type="checkbox" value="y" name="isLogin">自动登录<br/> 
29         <input type="submit" value="登录" />
30     </form>
31 </body>
32 </html>

13行代码:获取当前站点所有的Cookie。注:这个Cookie类是在接下来的login_handler.jsp文件中定义的。

26行的 value="<%=username%>",以及27行的value="<%=password%>",是在16行、18行获取到的值。

login_handler.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%
 4     String name = request.getParameter("name");
 5     String pwd = request.getParameter("pwd");
 6     String flag = request.getParameter("isLogin");
 7 
 8     if (!"admin".equals(name) && !"123".equals(pwd)) {
 9         response.sendRedirect("error.jsp");
10     } else {
11         if ("y".equals(flag)) {
12             //创建两个Cookie对象
13             Cookie nameCookie = new Cookie("username", name);
14             //设置Cookie的有效期为3天
15             nameCookie.setMaxAge(60 * 60 * 24 * 3);
16             Cookie pwdCookie = new Cookie("password", pwd);
17             pwdCookie.setMaxAge(60 * 60 * 24 * 3);
18             response.addCookie(nameCookie);
19             response.addCookie(pwdCookie);
20         }
21         response.sendRedirect("success.jsp");
22     }
23 %>

核心代码是11行至20行。

11行:如果用户勾选了“自动登录”,就把用户名和密码的信息放到Cookie中。

第15、17行代码是设置Cookie的存储时间。如果不设置Cookie的存储时间,则默认的存储时间为0,此时Cookie保存的数据是存放在内存中的,当浏览器关闭,则Cookie消失失效。

设置了存储时间后,此时设置Cookie的数据将保存在硬盘中,不同的浏览器存放的具体位置是不一样的。

谷歌浏览器查看cookie的位置:

“菜单-设置-显示高级设置-内容设置”:

单击上图中的“内容设置”,弹出如下界面:

单击上图的红框部分,弹出如下界面:

success.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>success.
10 </body>
11 </html> 

如果登陆成功,就调到这个页面。

error.jsp:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>error.
10 </body>
11 </html>

运行程序,当输入正确的用户名密码进行登录,并勾选“记住密码”后,下次再回到登录界面,就是下面的这个样子:

 

转载于:https://www.cnblogs.com/qianguyihao/p/4096807.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】在storyboard中给TabViewController添加tab页面

正题&#xff1a;1、首页动态拖一个UIViewController到storyboard中2、然后右键UITabBarController在木manaul栏右侧的加号连线新的UITabViewController就成功添加完毕转载于:https://blog.51cto.com/3048821/1682420

使用matlab画半透明椭圆

先上最终效果图&#xff1a; 本来是想直接用scatter和alpha来画的&#xff0c;结果在尝试以下代码后&#xff0c;发现无法显示透明效果 scatter(rand(1000,1),rand(1000,1), filled); alpha(0.5) 具体原因可以参考stackoverflow&#xff08;http://stackoverflow.com/questions…

双y轴如何合并图例_如何对图表批量组合、对齐、画中画、合并图例、自动化加标签。。。...

关于图表的组合排版&#xff0c;在之前的微信文章中介绍过很多常规的方法&#xff0c;比如《绘制复杂组合图表的独家秘笈分享》、《如何用Graphpad Prism绘制超复杂组合图&#xff1f;》、《如何用Origin完成图表排版&#xff1f;》等。可是&#xff0c;有小伙伴就问了&#xf…

小米5s的位置服务器,小米手机NFC在哪里?告诉你小米手机NFC位置(包括小米5/5s/6/MIX2/Note3)...

NFC功能的普及为智能手机锦上添花&#xff0c;闪付、充值交通卡、模拟门卡、模拟交通卡...NFC的功能越来越强大了&#xff0c;日常生活中需要用到的地方也越来越多了。可问题往往会在这个时候被发现&#xff0c;许多人在使用NFC的时候总是失败。比如说充值交通卡吧&#xff0c;…

lastb

lastb命令系统安全lastb命令用于显示用户错误的登录列表&#xff0c;此指令可以发现系统的登录异常。单独执行lastb命令&#xff0c;它会读取位于/var/log目录下&#xff0c;名称为btmp的文件&#xff0c;并把该文件内容记录的登入失败的用户名单&#xff0c;全部显示出来。语法…

扫地机器人滤网顺序_1分钟小课堂:扫地机器人滤网多久换一次?

作为扫地机器人使用中的一大耗材&#xff0c;滤网的更换你了解吗&#xff1f;扫地机器人通常会在尘盒的排气位置安装滤网&#xff0c;这是为了保证排出的空气是洁净的&#xff0c;防止二次污染。滤网用一段时间就会沾满灰尘&#xff0c;但市面上绝大多数扫地机器人的滤网是不能…

微信转发的文件服务器留存吗,微信转发这种视频会感染病毒泄露隐私?网警的查证结果来了...

原标题&#xff1a;微信转发这种视频会感染病毒泄露隐私&#xff1f;网警的查证结果来了最近网上流传一条“紧急通知”&#xff0c;称微信上流传着一些必须转发后才能继续观看的视频&#xff0c;这些视频其实被内植病毒&#xff0c;一旦转发&#xff0c;机主隐私立马被泄露。真…

在Linux中创建静态库.a和动态库.so

转自&#xff1a;http://www.cnblogs.com/laojie4321/archive/2012/03/28/2421056.html 在Linux中创建静态库.a和动态库.so 我们通常把一些公用函数制作成函数库&#xff0c;供其它程序使用。 函数库分为静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a&#x…

带通滤波器作用和用途_带通滤波器作用

带通滤波器作用带通滤波器是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器&#xff0c;与带阻滤波器的概念相对。一个模拟带通滤波器…

服务器升级虚拟化,刀片服务器内置虚拟化 IBM升级服务器

IBM 宣布推出内置VMWare管理程序的新型&#xff0c;以使客户更加快捷、简便地实现。带有内置VMware ESX 3i管理程序的新型BladeCenter HS21 XM刀片服务器将帮助客户加快服务器虚拟化或者升级到更先进的虚拟功能&#xff0c;在提供高可靠性的同时&#xff0c;简化系统。HS21 XM刀…

WEB开发新人指南

写给母校UESTCweb开发方向的同学&#xff0c;也分享给大家&#xff0c;希望多提好的意见&#xff0c;沟通交流。 博客原文链接&#xff1a;http://leuisken.github.io/2015/07/17/web-dev/ 转载请注明出处 一、首先要知道的 如今我们使用的互联网&#xff0c;客户端与服务器端的…

skywalking服务端_skywalking部署

文件列表apache-skywalking-apm-7.0.0.tar.gz&#xff1a;服务端文件mysql-connector-java-5.1.30.jar&#xff1a;mysql jdbc驱动jar包需要条件Jdk1.8以上mysql5.7以上服务端部署把文件上传到服务器上/root目录下scp apache-skywalking-apm-7.0.0.tar.gz root192.168.3.211:/r…

微软Connect教程系列--自动生成增删改查页面工具介绍(二)

本章课程描述了vs2015的三个特点&#xff0c;其中主要将描述在vs2015下面&#xff0c;使用命令自动生成增删改查界面&#xff0c;具体如下&#xff1a; 1、web.config文件不在存在&#xff0c;用config.json替代&#xff0c;以适应支撑vs的插件化。 即config.json可以在项目中不…

新增成功到编制为空bug_36 个JS 面试题为你助力,让面试更有力(面试必读)

来源&#xff1a;javapoint译者&#xff1a;前端小智点赞再看&#xff0c;养成习惯本文 GitHub https://github.com/qq44924588... 上已经收录&#xff0c;更多往期高赞文章的分类&#xff0c;也整理了很多我的文档&#xff0c;和教程资料。欢迎Star和完善&#xff0c;大家面试…

Lua协程

协作例程 1、同一时刻仅一个例程在运行 2、执行权让渡和恢复【栈】转载于:https://www.cnblogs.com/freebird92/p/4713106.html

PI数据库的使用-PI System Management Tools

1、PI连接管理器 2、标记搜索 3、当前值 转载于:https://www.cnblogs.com/jumahe/p/4107790.html

在python中模块可以封装_python 制作python包,封装成可用模块教程

首先编写py程序:printtest.pydef test():print(print test)将以上.py文件做成python模块&#xff0c;需要在相同目录下创建setup.py文件&#xff0c;setup.py中输入配置信息:from setuptools import setupsetup(nameprinttest,version1.0,py_modules[printtest],)打开终端&…

F# 4.0于全平台发布

随着Visual Studio 2015的发布&#xff0c;由微软创建的函数式编程语言F#也迎来了它的第四个版本。新版本中的变动包括大量的新特性、bug修复、语言本身的一些增强&#xff0c;以及一些性能方面的改进。此外&#xff0c;新版本的F#还简化了在VS2015中进行调试与编辑的方式。\\微…

一种用css实现图片在父框中等比缩放并垂直居中的办法

一个网页中往往会有很多图片&#xff0c;而网站的编辑上传图片时可能并不一定按照为父框设定的那个宽高来传&#xff0c;这样图片往往会将父框撑开或者被父框截断。一种比较好的解决的办法是这样的&#xff1a; HTML代码结构&#xff1a; <div class"dimg"><…

CLR VIA

标题 状态 内容 什么是CLR? 什么是托管模块&#xff1f; 托管模块由什么组成&#xff1f; 。net代码的执行过程 http://www.cnblogs.com/aaa6818162/p/4726581.html http://www.cnblogs.com/kingmoon/archive/2012/07/16/2594459.html 为了执行程序&#xff0c;首…