慕课网《JAVA遇见HTML——JSP篇 第六章 JSP状态管理》学习笔记
慕课网课程网址:https://www.imooc.com/learn/166
备注:这篇博客中,截图中,我有个数字敲错了:10*24*60*60=864000,我写的是86400,少了个0。
第六章 JSP状态管理
6-1 http协议的无状态性,保存用户状态的两大机制:session和cookie
6-2 Cookie概述
6-3 JSP页面中创建与使用Cookie
6-4 案例:Cookie在登录中的应用
6-5 Session与Cookie的对比
6-1 http协议的无状态性
我们知道,我们进行Web应用程序开发,使用的传输协议叫做超文本传输协议,超文本传输协议存在一个先天不足,就是它是无状态的。
无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求。
但是当同一个浏览器再次发送请求给浏览器的时候,服务器并不知道它就是刚才那个浏览器。
简单来说,就是服务器不会记住你,所以就是无状态协议。
6-2 Cookie概述
JSP状态管理
保存用户的状态的两大机制
(1)Session(JSP九大内置对象之一)
(2)Cookie(这是一种客户端技术)
什么是Cookie:
Cookie:中文名称为“小甜饼”,是Web浏览器保存在客户端的一系列文本信息。
典型应用一:判定注册用户是否已经登录网站。
典型应用二:“购物车”的处理。(用户可能会在一段时间内访问同一家网站,访问不同的网页,选择不同的商品,我们可以把这些信息保存在客户端的cookie中,在最后结账付款时,把这些信息取出来。相当于我们使用cookie保存用户浏览商品的一些记录)
生活中Cookie的应用:(1)例如系统会自动记录已经浏览过的视频;(2)记住用户名和密码实现自动登录功能。
Cookie的作用:
(1)对特定对象的追踪
(2)保存用户网页浏览记录与习惯
(3)简化登录
安全风险:容易泄露用户信息。
6-3 JSP页面中创建与使用Cookie
(1)创建Cookie对象:(键是Cookie对象的一个字符串描述,值是要保存的Cookie对象。)
Cookie newCookie = new Cookie( String key, Object value );
写入Cookie对象:
response.addCookie( newCookie );
读取Cookie对象:
Cookie[] cookies = request.getCookies( );
(2)跟Cookie有关的常用方法:
方法名称 | 说明 |
void setMaxAge( int expiry ) | 设置cookie的有效期,以秒为单位 |
void setValue( String value ) | 在cookie创建后,对cookie进行赋值 |
String getName( ) | 获取cookie的名称 |
String getValue( ) | 获取cookie的值 |
int getMaxAge( ) | 获取cookie的有效时间,以秒为单位 |
6-4 案例:Cookie在登录中的应用
实现记录用户名和密码功能:
项目:
先看目前效果:
下面写代码:
部署后效果:
(1)
在地址栏中再次输入如下网址:
发现,登录页面上,已经显示了从cookie中读取的username和password。
(2)接上部继续,如果登录时,不勾选“十天内自动登录”:
则users.jsp页面中取不到uesrname和password:
再次访问login.jsp:
发现确实没有session中确实没有usernameCookie和passwordCookie。
(3)继续:
lisi,888888
再次访问login.jsp:
(4)如果登录时,用户名输入中文:
我们需要使用Java中url字符串编码与解码的一个工具类。这个工具类在java.net包里。
在访问login.jsp:
(5)为了验证到底是通过会话session来保存的还是通过cookie来保存的,我们关闭浏览器,再访问:
确实是通过cookie来保存的。
下面关闭tomcat服务器,重启:
发现还是有。
我把服务器删了,新建一个tomcat服务器,部署上CookieDemo1项目:
还是有。
这验证了cookie技术是客户端的技术。
6-5 Session和Cookie的对比
session | cookie |
在服务器端(服务器的内存里)保存用户信息 | 在客户端保存用户信息 |
session中保存的是Object类型 | cookie保存的是String类型 |
随会话的结束而将其存储的数据销毁 | cookie可以长期保存在客户端 |
保存重要的信息 | 保存不重要的客户信息 |
至此,第六章《JSP状态管理》学习结束。