1.现在项目中,涌现出了很多优秀的MVC框架,但是控制相关功能底层还是离不开我们的servlet技术,下面让我们共同探讨一下与servlet相关的cookie与session相关技术
1.客户端(浏览器端)保存信息的技术.
2.服务器要求客户端保存一些键值对.浏览器在适当的时机就会发送给服务器.
3.HTTP请求中的体现.
服务器要求浏览器记住: set-cookie:name=tom
浏览器带给服务器: Cookie:name=tom
4.Cookie的细节问题
1>设置最长有效时间(setMaxAge)
-1 ==> 浏览器一旦关闭,cookie失效.(cookie保存在浏览器内存中)
0 ==> 发送到浏览器立即失效,通常用于删除已有cookie.(把之前的cookie覆盖.覆盖要保证cookie的 路径和键相同)
正数 ==> 单位是秒. 表示最长有效时间(保存到硬盘中);
2>设置cookie的路径
1>cookie不设置路径,默认路径 取当前路径. 例如: http://localhost:8080/Day10/AServlet ==> http://localhost:8080/Day10
2>cookie 会把键值对带给 自己路径下的所有子路径.
3>设置cookie的域(了解)
1>跨主机共享cookie的应用
music.baidu.com
zhidao.baidu.com
map.baidu.com
以上主机,想要共享cookie,该cookie如何设置?
1.设置cookie的domain为".baidu.com"
2.设置cookie的path为"/"
服务器要求浏览器记住: set-cookie:name=tom
浏览器带给服务器: Cookie:name=tom
4.Cookie的细节问题
1>设置最长有效时间(setMaxAge)
-1 ==> 浏览器一旦关闭,cookie失效.(cookie保存在浏览器内存中)
0 ==> 发送到浏览器立即失效,通常用于删除已有cookie.(把之前的cookie覆盖.覆盖要保证cookie的 路径和键相同)
正数 ==> 单位是秒. 表示最长有效时间(保存到硬盘中);
2>设置cookie的路径
1>cookie不设置路径,默认路径 取当前路径. 例如: http://localhost:8080/Day10/AServlet ==> http://localhost:8080/Day10
2>cookie 会把键值对带给 自己路径下的所有子路径.
3>设置cookie的域(了解)
1>跨主机共享cookie的应用
music.baidu.com
zhidao.baidu.com
map.baidu.com
以上主机,想要共享cookie,该cookie如何设置?
1.设置cookie的domain为".baidu.com"
2.设置cookie的path为"/"
2.session相关技术
1.服务器端保存数据的技术.
2.当浏览器连接到服务器的时候, 如果发现浏览器没有携带sessionID过来.服务器会在内存中开辟一个空间(session),并把sessionID(session的唯一标示)以cookie
的方式发送给浏览器.下次浏览器再来访问的时候,会携带sessionID, 服务器发现 有sessionID 就可以找到在内存中对应的session.
的方式发送给浏览器.下次浏览器再来访问的时候,会携带sessionID, 服务器发现 有sessionID 就可以找到在内存中对应的session.
3.如何操作?
1>获得session, request.getSession();
2>session中的常见操作
4个常用方法
setAttribute
getAttribute
removeAttribute
getAttributeNames
3>其他方法
inValidate() 立即让session失效.
4.常见问题.
1>session标示一次会话. 会话的范围?
1.session的开始 ==> 第一次访问服务器.
2.结束 第一: 浏览器关闭.(保存sessionID的cookie默认有效时间是-1)
第二: 超过session设置的有效时间.默认30分钟. web.xml => <session-config><sessiont-timeout>
2>session能不能跨项目?
不能跨项目.
3>session在一个项目中可以对项目中的任意路径共享数据吗?
保存sessionID的cookie的路径是 项目==> /Day10
1>获得session, request.getSession();
2>session中的常见操作
4个常用方法
setAttribute
getAttribute
removeAttribute
getAttributeNames
3>其他方法
inValidate() 立即让session失效.
4.常见问题.
1>session标示一次会话. 会话的范围?
1.session的开始 ==> 第一次访问服务器.
2.结束 第一: 浏览器关闭.(保存sessionID的cookie默认有效时间是-1)
第二: 超过session设置的有效时间.默认30分钟. web.xml => <session-config><sessiont-timeout>
2>session能不能跨项目?
不能跨项目.
3>session在一个项目中可以对项目中的任意路径共享数据吗?
保存sessionID的cookie的路径是 项目==> /Day10
servlet技术中的3大域.
application==>servletContext : 范围是整个项目,只有一个servletContext对象, 所有servlet的组件都能访问到.
应用: 保存全局的配置.
session ==> HttpSession : 范围是一次会话. 一个项目中存在几个Session呢? 一个没有保存sessionID的浏览器连接到服务器就会开启一个会话.有多少个浏览器访问就至少有多少个session.
应用:购物车,验证码,登录信息
request ==> HttpServletRequest : 范围是一次请求之内. 存在几个request域?当前正在处理的请求有多少个.
应用:转发中共享数据.
servlet技术3大组件
1.servlet
2.filter 过滤器 *.do *.action
3.listener 监听器
application==>servletContext : 范围是整个项目,只有一个servletContext对象, 所有servlet的组件都能访问到.
应用: 保存全局的配置.
session ==> HttpSession : 范围是一次会话. 一个项目中存在几个Session呢? 一个没有保存sessionID的浏览器连接到服务器就会开启一个会话.有多少个浏览器访问就至少有多少个session.
应用:购物车,验证码,登录信息
request ==> HttpServletRequest : 范围是一次请求之内. 存在几个request域?当前正在处理的请求有多少个.
应用:转发中共享数据.
servlet技术3大组件
1.servlet
2.filter 过滤器 *.do *.action
3.listener 监听器