一、状态管理
1)什么是状态管理?
将浏览器与web服务器之间多次交互过程当做一个整体来处理,并且将多次交互所涉及的数据进行管理。
2)状态管理技术
cookie:
a,什么是cookie?
是一种客户端(浏览器)的状态管理技术。
浏览器在访问web服务器的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这结数据保存下来;当浏览器再次访问服务器的时候,会将这些数据以cookie消息头的方式发送给服务器。
b,创建cookie
Cookie c = new Cookie(String name,String value);
response.addCookie(c);
c, 查询cookie
//如果没有cookie,返回null
Cookie[] request.getCookies();
String cookie.getName();
String cookie.getValue();
d, 编码问题
cookie的值只能是ascii字符,对于中文,需要将中文转换成相应的ascii字符串的表示形式。
String URLEncoder.encode(String,String enc)
//创建 new Cookie(String name,URLEncoder.encode(String,"utf-8"))
String URLDecoder.decode(String,String)//取
URLDecoder.decode(cookie.getValue(),"utf-8")
e, cookie的生存问题
默认情况下,浏览器会将cookie保存在内存里,除非浏览器关闭,cookie一直存在。
用setMaxAge(int seconds)设置cookie保存时间
该方法需要注意:
(1) 单位是秒
(2) seconds >0 : cookie会保存在硬盘上,超过指定的时间,浏览器会删除该cookie。
seconds <0 : 缺省值(保存在内存里)
seconds =0: 删除cookie,
比如,要删除一个名叫addr的cookie:
Cookie c = new Cookie("addr","");
c.setMaxAge(0);
response.addCookie(c);
f,cookie的路径问题
f1:浏览器在向服务器的某个地址发请求时,会先比较cookie的路径与要访问的这个地址是否匹配,只有匹配的cookie才会发送。
f2:cookie会有一个路径(是一个字符串),该路径默认情况下等于创建该cookie的组件的路径。
比如,/web06_2/app1/addCookie.jsp创建的cookie,其路径就等于"/web06_2/app1"。
/web06_2/findCookie.jsp error
/web06_2/app1/findCookie1.jsp ok
/web06_2/app1/sub/findCookie2.jsp ok
f3: 只有要访问的地址是cookie的路径或者其子路径时,浏览器才会发送该cookie。
f4:可以用setPath(String path);方法设置cookie的路径
常见的使用是: setPath("/appname");访问该应用的所有资源都会带cookie过去了
g,cookie的限制
(1), cookie可以被用户禁止。
(2), cookie能够保存的数据大小有限制(大约4k)。
(3), cookie的个数有限制(浏览器在本地最大能够保存约300个左右的cookie)。
(4), cookie不安全
session:
(1)什么是session?
是一种服务器端的状态管理技术。
浏览器访问服务器的时候,服务器会创建一个session对象(每一个session对象都有唯一的一个id号,一般称之为sessionId),默认情况下,服务器会使用cookie技术将sessionId发送给浏览器,浏览器会将sessionId保存下来。当浏览器再次访问服务器的时候,会将sessionId发送给服务器,服务器依据sessionId,就可以找到之前创建的session对象。
(2)如何获得session对象?
a, 方式一:
HttpSession s = request.getSession();
等价于request.getSession(true)。
b, 方式二:
HttpSession s = request.getSession(boolean flag);
当flag=true时:
服务器会查看请求当中是否有sessionId,如果没有,则创建一个session对象;如果有sessionId,则依据sessionId查找对应的session对象,如果找到了,则返回;找不到,再创建一个新的session对象。
当flag=false时:
服务器会查看请求当中是否有sessionId,如果没有,会返回null;如果有sessionId,则依据sessionId查找对应的session对象,如果找到了,则返回;找不到,返回null。
(3)HttpSession中声明的几个常用方法
setAttribute(String name,Object obj);
//如果绑订名称对应的值不存在,返回null。
Object getAttribute(String name);
removeAttribute(String name);
(4)session的超时
1)服务器会将空闲时间过长的session对象从内存空间当中删除。服务器一般会有一个缺省的超时时间限制(30分钟)。
2)可以修改超时限制
对于tomcat,可以修改conf\web.xml,修改完成需要重新启动服务器。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
3)编程的方式
setMaxInactiveInterval(int seconds);
(5) 删除session
invalidate();
二、session与cookie的区别
(1)cookie是一种客户端的状态管理技术,将状态写在浏览器端,
而session是一种服务器端的状态管理技术,将状态写在web服务器上面。
(2) cookie有很多限制:
a,可以被用户禁止
b,cookie能够保存的数据比较小(大约4k),而且保存的个数也有限制(300个左右)。
c,cookie不安全
d,cookie只能保存字符串
而session能够保存更多的数据,相对更安全,保存的数据类型更丰富。
session会将所有的状态写在服务器端,所以服务器的压力比较大,而cookie没有这个问题。
小知识:如果用户禁止cookie,如何继续使用session(了解)
(1)url重写
在请求地址后面添加sessionId,一般由服务器来生成这个地址。
(2)编程:
//链接地址,表单提交地址
a, response.encodeURL(String url);
//重定向
b, response.encodeRedirectURL(String url);
//转发根本不用考虑
分享到:
相关推荐
【Session与Cookie原理简述】 Session和Cookie是两种在Web开发中常见的用户状态管理机制,它们主要用于在HTTP协议无状态的特性下跟踪用户状态。理解它们的原理对于编写高效的Web应用至关重要。 **Cookie原理** ...
### Session与Cookie的区别和联系 #### 一、概念解析 - **Cookie**:Cookie是一种小型的数据文件,由服务器端生成并发送给用户浏览器,浏览器在本地(如用户的硬盘)保存该文件,然后每一次请求同一网站时都会把该...
#### 二、Cookie与Session简介及区别 **Cookie** 是一种简单的文本文件,用于在客户端存储少量数据。它允许网站保存用户的信息以便后续访问时能够快速获取。例如,网站可以通过Cookie来记住用户的登录状态。 **...
session与cookie区别精选,session与cookie区别精选,session与cookie区别精选,session与cookie区别精选session与cookie区别精选session与cookie区别精选session与cookie区别精选session与cookie区别精选session与...
**Session与Cookie** Session和Cookie是Web开发中用于管理用户状态的两种常见技术。它们的主要区别在于数据存储的位置和安全性。 - **Session**: Session将用户的相关信息存储在服务器端,通常是一个键值对的集合...
SESSION与COOKIE的主要区别在于数据存储位置和安全性。SESSION数据存储在服务器,相对更安全,不会被客户端直接访问;而COOKIE存储在用户端,容易受到篡改或盗窃。此外,SESSION在服务器端消耗资源,当并发用户多时...
session与cookie相同点和不同点
session与cookie的区别?
【第六章 Application、Session与Cookie对象】 在ASP.NET开发中,Application、Session和Cookie对象是三个重要的概念,它们主要用于在用户交互过程中管理数据和状态。本章将详细讲解这三个对象的功能、使用方法以及...
总结,理解Session与Cookie的区别、部署Memcached实现Session共享,以及如何在Linux环境中配置LNMP服务器是Web开发和运维中的重要技能。在实际应用中,需要根据业务需求选择合适的技术,并优化配置,确保系统的稳定...
session与cookie区别课件,可以下载根据自己的需求改动,节省整理的时间
关于session和cookie的详细解释 <br>所有疑问通吃
Session和Cookie是两种常见的Web应用程序中用于管理用户会话的技术,它们主要的区别在于存储位置、生命周期和安全性。 **Session** 1. **存储位置**:Session是服务器端存储机制,它在服务器上为每个用户开辟一块...
TOMCAT中SESSION与COOKIE的深度探索.pdf
上JSP老师的代码,关于回话session与cookie的比较代码
与Session不同,Cookie存储在客户端,这意味着它们可以在用户关闭和重新打开浏览器后仍然存在,但容量有限,一般不超过4KB。Cookie通常用于存储登录状态、用户首选项等不敏感信息。 创建Cookie也很直观,比如`...