javaweb--session和cookie

Session

用户会话

服务器无法识别每一次HTTP请求的出处(不知道来自于哪个终端),它只会接收到一个请求信号,所以就存在一个问题:将用户的响应发送给其他人,必须有一种技术让服务器知道请求来自于哪里

会话:客户端和服务器之间发生的一系列连续的请求和响应的过程,打开浏览器进行操作到关闭浏览器的过程。

会话状态:指服务器和浏览器在会话过程中产生的状态信息,借助于会话状态,服务器能够把属于同一次会话的一系列请求和响应关联起来

实现会话有两种方式

  • session
  • cookie

属于同一次会话的请求都有一个相同的标识符,sessionID

session常用方法

String getId() 获取当前会话的sessionID
void setMaxInactiveInterval(int interval) 设置session失效时间,单位为秒
int getMaxInactiveInterval() 获取当前session失效时间
void invalidate() 设置session立即失效
void setAttribute(String key, Object value) 通过键值对的形式来存储数据
Object getAttribute(String key) 通过键获取对应的数据
void removeAttribute(String key) 通过键删除对应的数据

Cookie

Cookie是服务端在HTTP响应中附带传给浏览器的一个小文本文件,一旦浏览器保存了某个Cookie,在之后的请求和响应中,会将错Cookie来回传递,这样就可以通过Cookie这个载体完成客户端和服务端的数据交互

创建Cookie

<%
    Cookie cookie = new Cookie("name", "tom");
    response.addCookie(cookie);
%>

读取Cookie

  Cookie[] cookies = request.getCookies();
    for (Cookie c : cookies) {
        out.write(c.getName() + ": " + c.getValue() + "</br>");
    }

Cookie的常用方法

void setMaxAge(int age) 设置Cookie的有效时间,单位为妙
int getMaxAge() 获取Cookie的有效时间
String getName() 获取Cookie的name
String getValue() 获取Cookie的value

Session和Cookie的区别

session:

  • 保存在服务器
  • 保存的数据是Object类型
  • 会随着会话的结束而销毁
  • 保存重要信息

cookie:

  • 保存在浏览器(本地文件中)
  • 保存的数据是String类型
  • 可以长期保存在浏览器中,与会话无关
  • 保存不重要信息

存储用户信息:
session:

  • setAttribute(“name”, “admin”) 存
  • getAttribute(“name”) 取
  • 生命周期:服务端只要WEB应用重启就销毁,客户端只要关闭浏览器就销毁
  • 退出登录:session.invalidate()

cookie:

  • respond.add(new Cookie(“name”, “admin”)) 存
  • request.getCookies() 取 (需要遍历数组加判断)
  • 生命周期:不随服务端的重启而销毁,客户端默认关闭浏览器就销毁,我们可以通过setMaxAge方法()设置有效期,一旦设置了有效期,则不随浏览器关闭而销毁,而是由设置时间来决定
  • 退出登录:setMaxAge(0)

jsp内置对象作用域

注意考虑的是pageContext、request、session、application四个内置对象
它们都有setAttribute和getAttribute方法,即考虑它们的生效范围

page作用域:对应的内置对象pageContext
request作用域:对应的内置对象是request
session作用域:对应的内置对象是session
application作用于:对应的内置对象是application
page<request<session<application
page只在当前页面有效
request在一次请求有效
session在一次会话内有效
application对应整个web应用的,服务器不关一直有用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb中的CookieSession是用于在服务器和客户端之存储和传递数据的机制。 Cookie是在客户端(浏览器)保存少量数据的文本文件,它由服务器发送给浏览器,并在浏览器下一次向同一服务器发送请求时被浏览器携带过去。Cookie可以用于实现用户认证、记住登录状态、记录用户行为等功能。在JavaWeb中,可以使用`javax.servlet.http.Cookie`类来创建和设置CookieSession是在服务器端存储用户信息的一种机制。当用户第一次访问服务器时,服务器会为该用户创建一个唯一的会话标识(Session ID),并将该标识保存在Cookie中发送给客户端。客户端在后续的请求中会带上这个Session ID,服务器通过这个Session ID可以获取到对应的会话信息。在JavaWeb中,可以使用`javax.servlet.http.HttpSession`类来创建、获取和操作SessionCookieSession的区别主要有: 1. 存储位置:Cookie存储在客户端,Session存储在服务器端。 2. 容量限制:Cookie有大小限制,一般为4KB左右;Session可以存储较大量的数据。 3. 安全性:Cookie数据存储在客户端,容易被恶意篡改;Session数据存储在服务器端,相对较安全。 4. 生命周期:Cookie可以设置过期时间,可以长期保存在客户端;Session默认情况下会在一段时间内保持活跃,超过时间会被销毁。 在实际应用中,CookieSession常常结合使用,通过Cookie存储Session ID来实现用户的身份验证和状态管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值