会话技术session、cookie

会话技术概念:

会话技术:http是无状态的,不能区分客户端.帮助服务器区分客户端的

浏览器打开客户端访问服务器到浏览器关闭这是一次回话;

  • 存客户端数据
  1. 把客户端数据存到服务器上:session
  2. 把客户端数据存到客户端上:cookie
  • sessioncookie区别
  1. session是存到服务器的,cookie是存到客户端的
  2. 把密码存到cookie上相对于不安全(比如在网吧上网他是存在本地的),存在session上只有你自己可以看到相对于安全
  3. cookie会对于服务器压力小一些安全性不好,所以Session会存到服务器上安全性好,增加服务器的压力

cookie:

默认cookie是会话级别的;

cookie里面的五个属性:name,value,domin(域的限制,限制域名的请求)cookie,maxAge(过期时间) path(获取请求的路径,访问哪些会请求cookie) httpOnly(给true或false默认false) 给true 只能浏览器自己才能操作cookie.falsejs代码可以操作不安全有可能出现跨站攻击

  • 服务器将一个cookie写给客户端,他是以hppt头的方式传输的,服务端访问客户端默认会携带cookie

服务器创建cookie

API Cookie cookie= new Cookie(String cookieName,cookieValue);

服务器向客户端发送cookie

API response.addCookie(Cookie cookie);

  • 服务器获取客户端携带的cookie

设置cookie的持久时间(存到浏览器位置磁盘,不同浏览器存放的位置不同);

API  cookie.setMaxAge(int seconds)时间 秒

访问某个资源是携带cookie访问某个资源不携带(设置访问cookie的携带路径)

扫描二维码关注公众号,回复: 3350003 查看本文章

如果不设置携带路径,会在访问该cookie产生的路径下

cookie.setPath(String path)

删除cookie 

创建cookie覆盖要删除的cookie

将path设置成要删除的cookie的path一致

cookie.setMaxAge(int seconds)时间设置为0;

获取客户端携带的cookie;

获取所有cookie

Cookie[] cookie = request.getCookies();

通过cookie的名称去获得想要的cookie

 for(Cookie cookie : cookies){

  获得cookie名称
  String cookieName=  cookie.getName();
   if(cookieName!=null){

   if(cookieName.equals("xxx")){

     String cookieValue(外部变量) = cookie.getValue();

    }
   }
} 

session:session技术是基于cookie--cookie会存储session编号--JESSIONID

创建(获得)属于一该客户端的私有的session区域

//判断该客户端在我的服务器已经存在session了,不存在就会创建一个新的session对象,反之就会获取已经存在的session给用户返回

HttpSession sesion = request.getSession();这个代码保证sesion永远不为空,肯定有这个区域;

获取Sessionid

String sessionId= sesion.getId;

发送编号根据编号(JSESESSIONID)去寻找session区域的位置,是服务端和客户端自动完成的不需要手动编码

如果客户端将Cookie信息清除了,原先的session区域还存在,只是找不到了,它自己有根据新的JSESESSIONID重新创建一个区域;

操作session区域:和Cookie一致

session.setAttribute(String name,Object obj);

session.getAttribute(String name);

session.removeAttribute(String name)

  • session对象的生命周期

第一次执行request.getSession();创建

销毁:

1)服务器关闭;

2)session过期失效默认30分钟(他的计时默认是你最后一次操作该服务器开始);服务器默认配置的;

  • 1.tomcat中apache-tomcat-8.0.26\conf\web.xml中设置
<session-config>  
<!-- 时间单位为分钟   -->  
    <session-timeout>30</session-timeout>  
</session-config>  
  • 2.java代码
//以秒为单位
session.setMaxInactiveInterval(30*60);
  • 3.在项目工程的web.xml中设置
<session-config>
<!-- 时间单位为分钟   -->  
      <session-timeout>15</session-timeout>
</session-config>

3)手动销毁session.invalidate();

猜你喜欢

转载自blog.csdn.net/adminBfl/article/details/82748670