仿牛客网社区项目(五)会话管理
作者:互联网
会话管理
- HTTP的基本性质
- HTTP是简单的
- HTTP是可扩展的
- HTTP是无状态的,有会话的
- Cookie
- 是服务器发送到浏览器,并保存在浏览器端的一小块数据。
- 浏览器下次访问该服务器时,会自动携带块该数据,将其发送给服务器。
- Session
- 是JavaEE的标准,用于在服务端记录客户端信息。
- 数据存放在服务端更加安全,但是也会增加服务端的内存压力。
Http是无状态的,有会话的。简单来说即便是同一个浏览器向服务器发送多个请求,多个成功的请求之间是不存在练习的,这就带来了一个问题——用户没有办法在同一个网站中进行连续的交互。
用Cookies可以解决这个问题,是用Cookies可以创建有联系的会话。
浏览器访问服务器时,服务器会返回一个cookie给浏览器(在response header中可以找到),浏览器会自动保存cookie,下次访问服务器时,会将其带到request header中
//cookie 示例
@RequestMapping(path="/cookie/set",method= RequestMethod.GET)
@ResponseBody
public String setCookie(HttpServletResponse response){
//创建cookie
Cookie cookie = new Cookie("code", CommunityUtil.generateUUID());
//设置cookie的生效范围
cookie.setPath("/community/alpha");
//设置cookie的生存时间
cookie.setMaxAge(60*10);
response.addCookie(cookie);
return "set cookie";
}
获取cookie(值)的方法
@RequestMapping(path="/cookie/get",method= RequestMethod.GET)
@ResponseBody
public String getCookie(@CookieValue("code") String code){
System.out.println(code);
return "get cookie";
}
cookie的数据是存在客户端的,存在安全性隐患,切每次访问时都会将其发送给服务器,耗流量。因此就有了session
创建session并往里面存数据示例
//session示例
@RequestMapping(path="/session/set",method= RequestMethod.GET)
@ResponseBody
public String setSession(HttpSession session){
session.setAttribute("id",1);
session.setAttribute("name","Test");
return "set session";
}
从session中取值示例
@RequestMapping(path="/session/get",method= RequestMethod.GET)
@ResponseBody
public String getSession(HttpSession session){
System.out.println(session.getAttribute("id"));
System.out.println(session.getAttribute("name"));
return "get session";
}
标签:code,浏览器,String,示例,会话,session,cookie,客网,仿牛 来源: https://www.cnblogs.com/nevererror/p/16210289.html