session和cookie使用(Spring)

1.session和cookie定义

1.1什么是Cookie

Cookie在浏览器端存储数据,并以此跟踪和识别用户的机制,浏览器通过HTTP协议和服务器端进行交互。因此,Cookie是由浏览器实现和管理的。

Cookie通常用来存储一些不是很敏感的信息,或者进行登录控制等。

每个域名下允许的Cookie是有限制的。Cookie不是越多越好,它会增加宽带,增加流量消耗;不要把Cookie当作客户端的存储器来用。一个域名的每个Cookie限制以4千字节(KB)键值对的形式存储。

Cookie中存放的信息包含本身属性和用户自定义属性.

  • 用户自定义属性:一个cookie只能包含一个自定义键/值对(key=value)。
  • 本身属性:Path,Domain,Max-Age ,Comment,Max-Age,Secure,Version。

      Path: 网站上可以访问cookie的页面的路径;可以将Path设置为/,使cookie可以被网站下所有页面访问。

      Domain:可访问该cookie的域名;对于多二级域名的cookie,可以是设置为*.example.com,同时Path设置为/。

      Max-Age:cookie的有效时间,用秒计数。失效后,cookie的信息不会从客户端附加在HTTP消息头中发送到服务端。

      Comment :cookie的描述。

      Secure :cookie的安全性。Secure缺省为false,在HTTP状态下传递cookie。当为true时,在HTTP状态下传递cookie,HTTP时不传递cookie。

      Version:cookie的版

1.2什么是session

Session是服务器端使用的一种记录客户端状态的机制,Session对象存储特定用户会话所需的属性及配置信息

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式,如(sessionId)记录在服务器上。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

 

2.基于sprig登录&登出操作

 public class TestCtrl {

private static final String SESSION_KEY = "sessionId";

@Autowired

protected HttpServletRequest request;

@Autowired

protected HttpServletResponse response;

 

// 用户登录时,服务端保存用户信息在session中,获取SessionId

String createNewSessionId(String userName) {

HttpSession session = request.getSession();

session.setAttribute(SESSION_KEY, userName);

session.setMaxInactiveInterval(36000); // Session保存失效时长

return session.getId();

}

// 用户登录时,客户端创建cookie保存失效时长

void createNewCookie(String sessionId) {

Cookie cookie = new Cookie(SESSION_KEY, sessionId);

cookie.setMaxAge(3600);

cookie.setPath("/");

response.addCookie(cookie);

}

 

// 登出时,删除sessionId

void removeSessionId() {

HttpSession session = request.getSession();

session.removeAttribute(SESSION_KEY);

session.invalidate();

}

 

// 清空Cookie操作 

void cleanCookie() {

Cookie cookie = new Cookie(SESSION_KEY, null);

cookie.setMaxAge(0);

cookie.setPath("/");// 根据你创建cookie的路径进行填写

response.addCookie(cookie);

}

3.如何从cookie 获取sessionId 

public class TestCtrl { 

private static final String SESSION_KEY = "sessionId"; 

@Autowired 

protected HttpServletRequest request;

 

// 1.获取sessionId 

String getSessionId() {

Cookie[] cookies = request.getCookies(); 

if (cookies != null) {

for (Cookie cookie : cookies) {

if (SESSION_KEY.equals(cookie.getName())) {

return cookie.getValue();

}

}

}

return null;

}

}

 

 

转载于:https://www.cnblogs.com/feng123/p/9358293.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值