会话Session和cookie

会话
用户打开一个浏览器,点击多个超链接,访问服务器多个Web资源,然后关闭浏览器,整个过程称之为一个会话
服务器管理客户端的状态称为会话状态的管理。
管理Http协议会话状态保存会话数据的两种技术
Cookie和Session
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用于使用浏览器再去访问服务器中的web资源时,就会带着各自额数据去。这样web资源处理的就是用户各自的数据了
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象,由于session为用户浏览器独享,具有独立编号所以用户在访问服务器的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务。
cookie存在客户端,存在安全问题,session将数据保存在服务器端,安全但是占用服务器内存资源。

案例;返回上次访问时间
1.第一次访问时向客户端写入cookie
Cookie cookie =new Cookie("name","value");
response.addCookie(cookie);
2.当客户端存在cookie滞后,以后每次请求自动携带HTTP协议请求自动头信息Cookie:name=value,服务器获取需要的cookie数据
Cookie [] cookies=request.getCookies();//获取所有cookie
for(Cookie cookie:cookies){
if(cookie.getName().equals("name")){
进行value值处理
}
}

常用API方法
cookie
request.getCookies();获得请求中所有的cookie信息返回的而是一个Cookie[]数组//在请求头信息中Cookie:
response.addCookie(new Cooke("",""));向客户端写回cookie,在响应头信息中为set-Cookie:
cookie.getName();获得cookie名称
cookie.getValue();获得cookie值。
cookie.setValue("value");更改cookie值
setMaxAge(time)//设置cookie过期时间,使其成为持久性cookie,time单位是秒
getMaxAge()
setPath()//设置有效路径。
getPath()
setDomain(".baidu.com")设置有效域名
getDomain()
要注意cookie的name值是不允许被修改的,所以没有setName()方法。
cookie信息默认情况下是保存在浏览器内存中的,是会话cookie,会话cookie会在浏览器关闭,会话结束的时候会自动清除,持久cookie是指cookie数据保存在本地硬盘上,通过setMaxAge方法设置,会话关闭不会清除cookie,请求头信息中为Expires:,如果将setMaxAge值改为0,会命令浏览器删除该cookie,要注意删除cookie时要保证是有效路径,否则不会删除。一般再删除的同时会重新设置有效路径,以保证路径一致。
默认情况下载生成cookie时,产生默认的访问路径,默认是生成cookie的路径(servlet路径的上一级),如果下次访问服务器的路径与默认的有效路不一致的话是不会携带对应的cookie信息 的。
http//localhost/test/servlet/path
http//localhost/test/servlet2
对于上面的路径如果cookie路径为/test,访问两条路径有效路径一致会携带cookie信息
如果cookie路径为/test/servlet,访问第一条路径会携带信息,访问第二条路径不回携带cookie信息
设置有效域名的话,访问该域名会携带cookie信息,这种cookie如果域名不是产生cookie的域名的话是第三方cookie是不安全的浏览器一般也是禁用的,如果是产生cookie的域名是第一方cookie不过一般也很少使用

Session(会话)
常用API方法
request.getSession();获取一个HttpSession对象
Session.setAttribute(name,value);添加session信息
Session.getAttribute(name);获取session信息

Session原理
Session浏览器独享的原因是,浏览器访问服务器serlvet程序时,服务器产生一个session对象并分配sessionid编号,将session 的id信息以cookie的形式写入浏览器,浏览器通过cookie查询id直接访问对应编号session对象,而其他浏览器没有具有此cookie就不能访问session对象。

Session同个浏览器共享的原理
将写回给浏览器的cookie值JSESSIONID持久化存储

禁用cookie后的session处理
解决方案URL重写添加sessionid信息,而不通过cookie信息。
response.encodeRedirectURL(java.lang.String url)用于对sendRedirect方法后的url地址进行重写
response.encodeURL(url)用于对表单action和超链接的url地址进行重写。

Session的失效时间
web.xml可以配置session的失效时间
<session-config>
<session-timeout>30</session-timeout>默认是30分钟,30分钟之内没有再次使用session对象时会被销毁
</session-config>

cookie的生命周期
创建与销毁
创建Cookie cookie=new Cookie(name,value);response.addCookie(cookie);
销毁;对于会话cookie浏览器一关闭就会被销毁,对于持久cookie会在cookie过期时被销毁

session的生命周期
创建;request.getSession()
销毁;服务器关闭时会销毁,session过期时销毁,手动调用session.invaliadte()方法销毁

session常用来完成系统权限和认证功能
权限;在用户身份认证后,根据session分配管理权限
认证;用户登录,认证身份

Servlet三种数据范围
ServletContext
HttpServletRequest
HttpSession
三种数据范围,每个对象各自维护一个类似map集合的数据结构,具备相同的几个方法
setAttribute存入一个属性
getAttribute取出一个属性
removeAttribute移除一个属性

三种数据范围对象的使用情况
servletcontext服务器启动时创建,服务器关闭时销毁,所有Servlet共享,保存一些全局数据
例如;数据库连接池,工程配置属性,配置文件内容,一般不建议随意使用,因为生命周期过长占用服务器资源
HttpSession,常用来保存一些与用户相关的数据,在request.getSession时创建,在三种情况下销毁
例如;系统登录信息,购物车数据
HttpServletRequest在客户端发起请求时,服务器创建对象,在响应结束时销毁,用来保存servlet向JSP传输数据信息
例如;执行某个操作将操作结果传递JSP
具体使用的规则是尽量使用生命周期较短,内存占用较小的对象进行保存

时间: 2024-08-03 12:22:48

会话Session和cookie的相关文章

{Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 xxx 八 xxx 一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请

Django中的session和cookie

session和cookie 一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,WEB 服务器会先送一些资料放在你的计算机上,类似于你打的文字,选的一些东西什么的,Cookie 会帮你都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内

多对多表的创建方式 forms组件 session与cookie

1.多对多表的创建方式 2.forms组件3.session 与 cookie 1.多对多表的创建方式 1.全自动(推荐使用*) class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=8,decimal_places=2) authors = models.ManyToManyField(to='Author') class Author(m

Django之Session与Cookie

目录 一.cookie Cookie与的session由来 什么是Cookie Cookie的原理 查看Cookie cookie与session的作用 二.Django中操作Cookie 获取Cookie 设置Cookie 删除Cookie 三.Session Session的由来 设置session 获取session 四.设置session与cookie的超时时间 删除当前的会话数据并删除会话的Cookie(推荐) 五.Django中Session相关方法 Session流程解析 Sess

JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解

Servlet的缺点 开发人员要十分熟悉JAVA 不利于页面调试和维护(修改,重新编译) 很难利用网页设计工具进行页面设计(HTML内容导入到servlet中,用PrintWriter的对象进行输出) JSP简介 JSP(Java Server Pages) 与Java Servlet一样,是在服务器端执行的,不同的是JSP先由服务器编译部署成Servlet执行. JSP技术的企业最佳实践(生成HTML内容) 新的JSP2.0规范版本包括新的功能(EL表达式,新增的Simple Tag和Tag

会话跟踪技术--cookie和session 小结

学习过servlet的都知道,servlet是单例多线访问的,所以我们不能设置servlet成员变量来存放浏览器的访问数据.怎么解决浏览器的访问数据,让不同访问者能够访问到自己的数据呢? 相信学习完了cookie和session技术之后,读者会明白这个问题. 我们在浏览器上使用http协议在网络上传输数据的时候,服务器对于http的状态处理有两个方式,cookie和session. 笔者对于cookie设session的理解是这样的:当我们想要记录浏览器与服务器之间的交互的时候,通常的方法就是

PHP处理会话函数session和cookie总结

本教程讲解PHP处理会话函数session和cookie总结 PHP处理会话函数包括:session_start.session_register.session_is_registered.session_unregister.Session_destroy等等.相信大家在学习php语言的时候多多少少都会对php的会话功能有所了解,下面小编给大家分享下php处理会话函数大总结. 当客户端的Cookie被禁用时,会自动通过Query_String来传递.PHP处理会话函数一共有10个,我们详细介

会话控制:cookie和session基础学习笔记

在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session) 我们可以简单理解为浏览器的开关. 其实对cookie和session也是主要为curd操作 cookie cookie 之前以字符串的形式保存在客户端 *.txt的格式.google等浏览器现在已经改为二进制存储,相对安全些,HTTP协议是无状态协议,cookie是服务器留在用户计算中的小文件,用来识别用户. 创建cookie setcookie() 函数用于设置cookie. setcooki

理解会话中的Cookie和Session对象

会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在java语言中,Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求,其中这个过程,保存会话中数据的两种重要技术: 1.Cookie技术: Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器,并保存在客户端浏览器的缓存中.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样,we