提示:session是内置对象,但是cookie不是内置对象,使用需要new
基础介绍
cookie 是由服务端产生的,发给客户端保存,它就是我们理解的本地缓存(http是无状态协议),cookie不是JSP的内置对象,它是由javax.servlet.http.Cookie提供。
一、Cookie
-
常用方法
构造方法 | public Cookie(String name ,String value); |
获取名字 | String getName() |
获取值 | String getValue() |
设置最大有效期 | void setMaxAge(int s) ; //单位是秒 |
response 内置对象中有 void addCookie(Cookie cookie); 方法,表示服务器向客户端响应返回(给客户端)一个 Cookie。(产生 Cookie 通过Cookie 的构造方法即可生成)。客户端获取cookie使用 request.getCookies(); 获取cookie不能只能拿一个单独的cookie对象,而是一次性拿到全部
-
应用案例
客户端向服务端发送请求后,服务端读取到请求后写入到cookie中,通过response响应(addCookie(Cookie cookie))后跳转,到新页面中含有cookie,初始页面要拿到该cookie,
需要获取所有的cookie后遍历寻找对应的cookie的name和value。类似谷歌浏览器记住账号密码的功能。
二、session
1.session执行机制
session是内置对象,中文 会话 的意思。浏览网页从打开到关闭就是一次会话。既 一次开始到一次结束就是一次会话。
每一个 SESSIONID 和 JSESSIONID 都是一一对应的 。既客户端的SESSIONID的值和服务端JSESSIONID的值是相同的。客户端下次再访问服务端,就可以通过查询 SESSIONID 的方式验证该客户端的JSESSIONID 是否能匹配成功从而判断客户端是否是第一次登录,从而实现许多网站的自动登录功能。
服务端产生的cookie会自带一个 JSESSIONID ,发送给客户端后,与服务端本身的 SESSIONID 相同。
2.session
代码如下(示例):
session.setMaxInactiveInterval(interval) //设置session存活周期(秒)
session.invalidate() //销毁session
session.setAttribute("sessionPwd", pwdCheck);
(String)session.getAttribute("sessionPwd")
session保留的值是object对象,需要强转为String。
三、内置对象-application
目前仅需掌握 application 的
String getContextPath() 获取虚拟路径
String getRealPath(String name) 通过虚拟路径获取绝对路径
cookie 同一次请求有效 [ request.getRequestDispatcher("sucess.jsp").forward(request,response); 请求转发有效;
response.sendRedirect("sucess.jsp"); 重定向 无效 ]
session 本次会话有效 , 无论请求转发 还是 重定向 跳转都有效,关闭浏览器无效
application 全局(切换浏览器)有效 ,关闭服务器重启后无效。
想要实现其他项目或者重启服务器 有效 ,需要使用 JNDI 技术