栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Cookie基本使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Cookie基本使用

cookie特点

cookie保存在客户端(浏览器端的)

第一次请求的时候, 没有cookie的, 先由服务器写给浏览器.

cookie里面只能保存字符串, 大小有限制

cookie的key默认不支持中文,解决中文办法 ,**以后都不用使用中文**

URLEncode.encode(value,"utf-8");//存入的时候(先通过utf-8编码)

URLDecode.decode(value,"utf-8");//取出 (通过utf-8解码)

cookie 封装工具类获取指定cookie

cookie 存活时间

默认情况下,cookie 存储在浏览器内存中,当浏览器关闭,内存释放,则cookie被销毁

setMaxAge(int seconds):设置cookie存活时间

正数:将 cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除

负数:默认值,cookie在当前浏览器内存中,当浏览器关闭,则 cookie被销毁

零:删除对应 cookie

setPath(String url) ;设置路径,如果不设置路径,就是默认路径

**默认路径**,例如:

- 访问http://localhost:8080/day25/ServletDemo5;  cookie默认路径 /day25

+ 访问http://localhost:8080/day25/aa/ServletDemo6;  cookie默认路径 /day25/aa

+ 访问http://localhost:8080/day25/aa/bb/ServletDemo7;  cookie默认路径 /day25/aa/bb

**随带cookie需要的条件**(设置有效路径): ==只有当访问资源的url包含此cookie的有效path的时候,才会携带这个cookie;==反之不会. 

- eg: 假设cookie路径是: /day25

- 访问http://localhost:8080/day25/ServletDemo8;  会携带该cookie过来

+ 访问http://localhost:8080/day25/aa/ServletDemo9; 会携带该cookie过来

+ 访问http://localhost:8080/day25/aa/bb/ServletDemo10;  会携带该cookie过来

+ ....

+ eg: 假设cookie路径是: /day25/aa

+ 访问http://localhost:8080/day25/ServletDemo11;  不会携带该cookie过来

+ 访问http://localhost:8080/day25/aa/ServletDemo12; 会携带该cookie过来

+ 访问http://localhost:8080/day25/aa/bb/ServletDemo13;  会携带该cookie过来

cookie小结

- 有效路径作用 :

  1. 保证不会携带别的网站/项目里面的cookie到我们自己的项目

  2. 保证自己的项目可以合理的利用自己项目的cookie,建议设置路径的时候,使用request.getContextPath()获取部署路径来设置

  3. 如果路径不一样, cookie的key可以相同

  4. 如果路径一样, cookie的key相同,那么后面的cookie会覆盖前面的cookie

- cookie的路径通常设置为项目的部署路径. 当前项目下的Servlet都可以使用该cookie. 一般这么设置: cookie.setPath(request.getContextPath());

  只要是当前项目里面的资源 路径必须包cookie路径的时候,才会携带该cookie过来.

session

服务端会话跟踪技术:将数据保存到服务端,服务器为每一个浏览器开辟一块内存空间,即session对象。由于session对象是每一个浏览器特有的,所以用户的记录可以存放在session对象中。同时**,每一个session对象都对应一个sessionId,服务器把sessionId写到cookie中,再次访问的时候,浏览器把sessionId带过来,找到对应的session对象**(session是基于cookie的)

#### cookie和Session的不同

cookie是保存在浏览器端的,大小和个数都有限制。session是保存在服务器端的, 原则上大小是没有限制(实际开发里面也不会存很大的数据), 安全一些。   

cookie不支持中文,并且只能存储字符串;session可以存储基本数据类型,集合,对象等

Session 作为域对象存取值

JavaEE 提供 HttpSession接口,来实现一次会话的多次请求间数据共享功能

使用:

获取Session对象:HttpSession session = request.getSession();

Session对象功能:

void setAttribute(String name, Object o):存储数据到 session 域中

Object getAttribute(String name):根据 key,获取值

void removeAttribute(String name):根据 key,删除该键值对

3.范围:  一次会话(多次请求多次响应)

关于Session对象的销毁

浏览器关闭了, session使用不了, 是session销毁了吗?

session没有销毁,只是浏览器端的含有sessionId的cookie没有了. 

session基于cookie, sessionId保存到cookie里面的, 默认情况下cookie是会话级别,浏览器关闭了cookie就是消失了,也就是说==sessionId消失了==, 从而找不到对应的session对象了, 就不能使用了.

分析: 

1.服务器响应的sessionId,是使用的默认级别的cookie,关闭浏览器,cookie销毁了,也就是sessionId没有了,但session对象还在服务器中

2.服务器响应的sessionId是持久级别的cookie,关闭浏览器,cookie还在,也就是sessionId还在,并且session对象也还在服务器中, 可以获取上一次会话保存在session中的数据

**实现: 自己获得sessionId, 自己写给浏览器 设置cookie的有效时长, 这个cookie的key必须: JSESSIONID**

Seesion 销毁:

默认情况下,无操作,30分钟自动销毁(Tomcat的web.xml查看)

调用 Session对象的 invalidate()方法

session.invalidate()

关于Session对象的钝化、活化

服务器重启后,Session中的数据是否还在?

钝化:在服务器正常关闭后, Tomcat会自动将 Session数据写入硬盘的文件中

活化:再次启动服务器后,从文件中数据到Session中

`C:UserspengzhilinAppDataLocalJetBrainsIntelliJIdea2020.1tomcat`目录查看

三个域对象比较(最好从最小的开始用【最下面】)

JSP快速入门

JSP执行流程

第一次访问的xxx.jsp时候,服务器收到请求,JspServlet会去查找对应的jsp文件

找到之后,服务器会将这个jsp文件转换成java文件(Servlet)

服务器编译java文件,生成class文件

服务器运行class文件,生成动态的内容

服务器收到内容之后,返回给浏览器

JSP 脚本语法

我们可以通过JSP脚本在JSP页面上编写Java代码. 一共有三种方式:

JSP 脚本分类:

    <%...%>:内容会直接放到_jspService()方法之中

    <%=…%>:内容会放到out.print()中,作为out.print()的参数

    <%!…%>:内容会放到_jspService()方法之外,被类直接包含

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号