Cookie&Session

会话

* 概念:浏览器给服务器资源发送请求时会话建立,直到一方断开会话结束。**会话建立一次会话中包含多次请求和响应**。
* 功能:在一次会话的范围内的多次请求间共享数据。
* 方式:
	1. 客户端会话技术:Cookie
	2. 服务器端会话技术:Session

Cookie

* 概念:客户端会话技术,将数据保存到客户端

* 入门步骤:
	1. 创建Cookie对象
		* new Cookie(String name, String value)
	2. 发送Cookie对象
		* reponse.addCookie(Cookie cookie)
	3. 获取Cookie,拿到数据
		* Cookie[] request.getCookie()

* 原理:
	基于响应头set-cookie和请求头cookie实现

* 细节:
	1. 可以创建多个Cookie对象,多次调用response的addCookie方法发送Cookie即可
	2. 默认情况下,浏览器关闭Cookie数据被销毁。可使用Cookie对象的setMaxAge方法进行设置:setMaxAge(int seconds)
		* 参数为正数:将Cookie数据写到硬盘的文件中,进行持久化的存储,正数的大小为cookie的有效时间
		* 参数为负数:默认值,浏览器关闭则销毁cookie
		* 参数为零:删除cookie
	3. 在Tomcat 8之前不能直接存储中文,需将中文数据转码,一般采用URL编码。特殊字符需要使用URL编码
	4. 同一个服务器不同项目共享cookie需要使用cookie的setPath(String path)方法,将path设置为"/";不同Tomcat服务器共享cookie使用setDomain()设置

* cookie的特点和作用
	* 特点:
		1. cookie不可跨域
		2. cookie存储在客户端浏览器
		3. cookie有数量和大小限制

	* 作用:
		1. 一般用与存储少量的不太敏感的数据
		2. 在不登录的情况下,完成服务器对客户端的身份识别

JSP:入门学习

* 概念
	* Java Server Page:Java服务器端页面

* 原理
	* JSP本质上就是一个Servlet

* JSP的脚本
	* <% code %>:定义的java代码,再service方法中。service方法中可以定义什么,该脚本就可以定义什么。
	* <%! code %>:定义的java代码,再jsp转换后的java类的成员位置。
	* <%= code %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本就可以定义什么。

* JSP的内置对象
	* 在jsp页面中不需要获取和创建,可以直接使用的对象
	* jsp一共有9个内置对象
		* request
		* response
		* out:字符输出流对象。可以将数据输出到页面上,类似于response.getWriter()
			* 在Tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据
			* response.getWriter()数据输出永远再out.write()之前

Session

* 概念
	* 服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。

* 快速入门
	1. 获取HttpServlet对象
		HttpSession request.getSession();
	2. 使用HttpServlet对象
		Object getAttribute(String name)
		void setAttribute(String name, Object value)
		void removeAttribute(String name)

* 原理
	* Session的实现是依赖于Cookie的,获取Session时如果没有Session会创建一个键为JSESSIONID的Cookie,并设置值为sessionid

* 细节
	1. 当客户端关闭后,服务器不关闭,两次获取的Session默认情况下不是同一个;如果需要相同,可以创建键为JSESSIONID的Cookie,使用其setMaxAge()方法设置存活时间
	2. 客户端不关闭,服务器关闭,两次获取的Session不是同一个,但是Tomcat正常关闭的情况下会自动完成session的钝化和活化,确保数据不会丢失
	3. 当服务器关闭时,session会销毁,也可以使用其invalidate()方法手动销毁;如果客户端不关闭,在默认时间后悔自动销毁,可以在web.xml中设置默认销毁时间

* 特点
	1. session用于存储一次会话的多次请求的数据,存在服务器端
	2. session可以存储任意类型,任意大小的数据

* Session和Cookie的区别
	1. session存储数据在服务器端,Cookie再客户端
	2. session没有数据大小限制,cookie有数据大小限制
	3. session数据安全,cookie相对不安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值