转
一、状态管理
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/**Cookie.jsp error
/web06_2/app1/**Cookie1.jsp ok
/web06_2/app1/sub/**Cookie2.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);
//转发根本不用考虑
假如客户端浏览器不支持 Cookie,Servlet 容器能够重写客户请求的 URL,把 Session ID 添加到 URL 信息中。
HttpServletResponse 接口提供了重写 URL 的方法:public java.lang.String encodeURL(java.lang.String url)
该方法的实现机制为:
● 先判断当前的 Web 组件是否启用 Session,假如没有启用 Session,直接返回参数 url。
● 再判断客户端浏览器是否支持 Cookie,假如支持 Cookie,直接返回参数 url;假如不支持 Cookie,就在参数 url 中加入 Session ID 信息,然后返回修改后的 url。
我们能够对网页中的链接稍作修改,解决以上问题:
修改前:
<a href=“maillogin.jsp“>
修改后:
<a href=“<%=response.encodeURL(“maillogin.jsp“)%>“>
相关推荐
总结来说,Cookie、Session和Cache是Web开发中处理用户状态和优化性能的关键工具。理解它们的工作原理和正确使用方法,对于构建高效、安全的Web应用至关重要。而"Cookie&Session&Cache"这个压缩包则为开发者提供了...
### Day09_cookie & Session:详解Cookie与Session的用法及生命周期 在现代Web开发中,维护用户状态是一项至关重要的任务。Cookie与Session是实现这一目标的两种主要机制。本文将深入探讨这两种技术的工作原理、...
总结,Cookie是Web开发中用于维持会话状态的重要工具,理解其工作原理和使用方式对于构建动态、交互性强的网站至关重要。正确地创建、读取和更新Cookie,以及结合Session使用,能够提升用户体验并保证数据安全。
总结一下,Cookie和Session是Web开发中不可或缺的身份认证和会话管理工具。Cookie存储在客户端,适用于简单的数据存储和用户跟踪;而Session存储在服务器端,适合存储敏感信息和大量数据。了解它们的工作原理和优...
### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...
在Web开发中,Cookie、...总结来说,Cookie、Session和JSP是构建Web应用的关键技术。理解并熟练运用它们,有助于提升Web开发的效率和质量。在实际项目中,应根据需求合理选择和组合使用,以实现高效、安全的用户交互。
总结,Cookie和Session都是Web开发中不可或缺的部分,理解它们的工作机制并合理使用,有助于构建更高效、安全的Web应用。在实际项目中,往往结合使用两者,例如,将Session ID通过Cookie发送,实现会话跟踪。学习和...
### Cookie与Session详解 在现代Web开发中,保持用户的会话状态是一项基本需求。通过Cookie与Session机制,服务器能够识别并处理用户的状态信息,从而实现更丰富的交互体验。本文将详细解析Cookie与Session的工作...
### 经典收藏:Cookie与Session机制详解 #### 一、Cookie机制与Session机制的区别 在Web开发中,为了维持用户的会话状态,通常有两种常用的技术:Cookie与Session。这两种技术各有特点,适用于不同的场景。 - **...
总结,理解并熟练运用Cookie和Session是Java Web开发中的必备技能。正确地管理和使用它们,能够提升用户体验,保证应用的安全性和效率。在实际项目中,还需要结合其他技术,如Token、Cache等,以实现更高效和安全的...
总结来说,这个实验旨在帮助开发者理解如何在ASP.NET+C#环境中利用Cookie和Session进行用户状态管理,这对于构建具有用户登录功能的Web应用至关重要。通过实践,开发者可以更好地掌握这两种技术的使用,以及它们在...
- **创建**:当用户第一次访问服务器时,如果没有提供有效的 Session ID,则服务器会为该用户创建一个新的 Session,并将 Session ID 存储在 Cookie 中返回给客户端。 - **销毁**:Session 的销毁可以由服务器自动...
### Session与Cookie关系详解 #### 一、会话管理概览 在Web开发中,会话管理是一项重要的技术,它负责维护用户与服务器之间交互的数据。通常,这种交互包括用户的登录状态、购物车中的商品信息等。为了实现这些...
总结来说,Cookie和Session各有优缺点,Cookie适合存储少量、不敏感的数据,并且不需要服务器资源,而Session则适合存储更多、敏感的数据,但会消耗服务器资源。在实际应用中,开发者应根据需求和安全性考虑选择合适...
### Cookie机制与Session机制的区别及关系 在现代网络应用中,服务器端与客户端之间的状态保持是至关重要的,尤其是在无状态的HTTP协议下。Cookie机制与Session机制是两种常用的状态管理方式,它们各自拥有独特的...
### Cookie与Session机制详解 #### 一、Cookie与Session的概念及区别 在Web开发中,为了保持用户的状态信息,通常会用到两种技术:Cookie和Session。这两种技术都是用来跟踪用户的浏览活动,但它们的工作原理有所...
总结起来,Cookie和Session是JavaWeb开发中重要的用户会话管理工具,理解它们的工作原理和应用场景,对于构建高效、安全的Web应用至关重要。通过实际的登录案例,我们可以直观地看到如何在项目中运用这两种技术,以...
总结,Servlet通过Cookie和Session提供强大的会话管理能力。理解并熟练运用这些技术,可以构建更加健壮、安全的Web应用程序。在实际项目中,应根据需求选择合适的会话跟踪策略,并合理配置过滤器和监听器,以实现...
总结,本案例旨在帮助你理解Cookie和Session如何协同工作来实现单点登录,以及如何与第三方社交平台集成,实现便捷的登录体验。通过学习和实践,你将能够构建自己的SSO系统,并具备处理复杂登录场景的能力。