Cookie&&Session&&jsp

  1. 会话技术:

1.1概念:

日常生活中的交流,一连串的你问我答的过程就是会话。

b/s架构中的会话:从浏览器第一给服务资源发送请求,建立会话,直到一方断开为止。

1.2功能:

在一次会话方位内的多次请求之间共享数据

1.3会话技术:

  1. 客户端会话技术:Cookie

  2. 服务器端会话技术:Session

在这里插入图片描述

2.Cookie

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

2.1快速入门

  1. 常见Cookie对象

    Cookie cookie=new Cookie(string name,string value);

  2. 发送Cookie对象

response.addCookie(Cookie cookie);

  1. 获取Cookie,拿到数据(服务器端接收客户端携带的Cookie)

Cookie [] cookies=request.getCookies();

```java

//创建Cookie对象
Cookie c = new Cookie(“msg”, “hello”);
//发送Cookie
response.addCookie©;

//获取Cookie
Cookie[] cs = request.getCookies();
//遍历
for (Cookie c : cs) {
if(cs!=null){
String name = c.getName();
String value = c.getValue();
System.out.println(name+":"+value);
}
}

```

原理:基于HTTP协议:请求头cookie和响应头set-cookie

浏览器具备自动存储,访问请求时自动携带cookie能力
在这里插入图片描述

  1. 细节

l 一次可不可以发送多个Cookie?

​ 可以,多创建几个Cookie对象,再多次调用response发送Cookie对象即可。

l Cookie在客户端(浏览器)中能存活多长时间?

1.默认情况下,当浏览器关闭后,Cookie数据被销毁(Cookie存储在浏览器内存中)

2.设置Cookie存活时间(持久存储)

Cookie.setMAxAge(int seconds);

​ * 正数:将cookie存储到客户端硬盘中,设置保存时间,到期后,cookie销毁

​ * 负数:浏览器关闭cookie销毁(默认值)

​ * 零:通知浏览器立即销毁cookie

l cookie能不能存中文?

* 1.在tomcat8之前,不支持中文

​ 需要手动编码

​ URLEncoder.encoder(); // 编码

​ URLDecoder.decoder(); // 解码

* 1.在tomcat8之后的版本,支持中文

​ 注意:不能使用特殊符号:分号、逗号、空格等等

l Cookie共享数据的范围?

跨域:判断ip和端口,ip&&端口一致就不是跨域。

​ 在同一个tomact服务器中,部署多个web项目,这些web项目的Cookie能否被共享?

* 默认情况下cookie不能共享

* setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录

* 如果要共享,则可以将path设置为"/"

在不同的tomcat服务器间,Cookie能否被共享?

* 同一个域名下的,不同tomcat服务器之间实现共享

cookie.setDomain(".jd.com");例如:channel.jd.comshouji.jd.com 实现 数据共享

setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享

* setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享

5. Cookie的特点和作用

\1. cookie在客户端存储数据

\2. cookie存储数据类型格式只能是字符串 不支持特殊符号(: ?

\3. 客户端单个cookie的大小是有限制(4kb)

\4. 同一个域名下cookie总数量也有限制(50个)

\5. cookie不安全

3.Session:

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

3.2快速入门:

  1. 获取HttpSession对象:

HttpSession session= request.getSession();

  1. 使用HttpSession对象:

Object getAttribute(String name);

Void setAttribute(String name,object value);

Void removeAttribute(String name);

  1. 原理:

Session的实现依赖于Cookie的。

img

  1. 细节

  2. 当客户端关闭,服务器不关闭,两次获取Session是否为同一个?

l 默认不是 session是基于cookie的

l 设置存活时间

​ Cookie cookie = new Cookie(“JSESSIONID”,session.getId()); cookie.setMaxAge(60*30);

​ response.addCookie(cookie);

  1. 客户端不关闭,服务器关闭,两次获取的session是同一个吗?

当服务器正常关闭时,重启后session是同一个

Session钝化

在服务器关闭之前,将session对象序列化到硬盘文件中

Session活化

在服务器启动后,将硬盘中的数据反序列化到session对象

  1. Session的生命周期?

何时创建

当客户端的JSESSIONID与服务器的JESSSIONID不同时

何时销毁

  1. 服务器的非正常关闭

  2. Session.invalidate(); 自杀式关闭

  3. Session默认失效时间 30分钟

30

作用范围

一次会话

  1. session的特点

  2. session在服务器端存放数据

  3. Session可以存储任意类型数据

  4. Session存储数据的大小没有限制(相对于内存)

  5. Session存储数据的数量没有限制

  6. Session相对安全

Session与Cookie区别:

Cookie存放在客户端,Session在服务器端存放数据

Cookie存放数据大小有限制,Session存放数据大小没写限制

Session数据安全,Cookie相对不安全

4.Jsp

\1. 概念:

* Java Server Pages: java服务器端页面

* 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以义java代码

* 用于简化书写!!!

\2. 原理

​ * JSP本质上就是一个Servlet

​ 1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。

​ 2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。

​ 3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。

\4. JSP的内置对象:

​ * 在jsp页面中不需要获取和创建,可以直接使用的对象

​ * jsp一共有9个内置对象。

​ * 今天学习3个:

​ * request

​ * response

​ * out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似

​ * response.getWriter()和out.write()的区别:

​ * 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,out对象也是现将数据写入到缓冲区中,再找out缓冲区数据。

​ * response.getWriter()数据输出永远在out.write()之前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值