Jessei
10/18/2017 - 2:04 AM

cookie问题

多项目session

跨项目访问问题:

cookie问题:

   1.第一次访问服务器的时候,会在响应头里面看到Set-Cookie信息(只有在首次访问服务器的时候才会在响应头中出现该信息)设置JSESSIONID(jsessionid ==request.getSession().getId())

   2.当同一用户再次请求的时候(非首次请求),浏览器会在请求头里将cookie(JSESSIONID等)发送给服务器(每次请求都是这样),JSESSIONID不变
	
   3.为什么除了首次请求之外每次请求都会发送这个cookie呢(在这里确切地说是发送这个jsessionid)?
事实上当用户访问服务器的时候会为每一个用户开启一个session,浏览器是怎么判断这个session到底是属于哪个用户呢?jsessionid的作用就体现出来了:jsessionid就是用来判断当前用户对应于哪个session。换句话说服务器识别session的方法是通过jsessionid来告诉服务器该客户端的session在内存的什么地方。
事实上jsessionid ==request.getSession().getId()

   4.同一tomcat下多项目的session默认是不同???(各系统获取的cookie是根据JSESSIONID来获取,是不同的),所以三个系统的cookie是互不影响的。


redis端:
	首次访问时,我们每一个系统都会为同一个用户,随机生成每个系统的唯一token(UUID.randomUUID()),然后执行RedisUtil.set(token, JacksonUtil.beanToJson(view)); 注意redis中的key不是“token”,而是token的值,token=UUID.randomUUID().toString

    前台将token的值放在cookie中,访问别的页面时从cookie中取得值(token的值)去redis中查询用户视图,由于三个系统中生成的token的值不同,所以三个系统共用一个redis互不影响。

结论:我们现在的三个项目是可以相互访问的,互不影响

cookie问题:

   1.第一次访问服务器的时候,会在响应头里面看到Set-Cookie信息(只有在首次访问服务器的时候才会在响应头中出现该信息)设置JSESSIONID(jsessionid ==request.getSession().getId())

   2.当同一用户再次请求的时候(非首次请求),浏览器会在请求头里将cookie(JSESSIONID等)发送给服务器(每次请求都是这样),JSESSIONID不变
	
   3.为什么除了首次请求之外每次请求都会发送这个cookie呢(在这里确切地说是发送这个jsessionid)?
   
    事实上当用户访问服务器的时候会为每一个用户开启一个session,浏览器是怎么判断这个session到底是属于哪个用户呢?jsessionid的作用就体现出来了:jsessionid就是用来判断当前用户对应于哪个session。换句话说服务器识别session的方法是通过jsessionid来告诉服务器该客户端的session在内存的什么地方。
    
    事实上jsessionid ==request.getSession().getId()

   4.同一tomcat下多项目的session默认是不同(各系统获取的cookie是根据JSESSIONID来获取,是不同的),可以建成共享session
   参考
   http://blog.csdn.net/chunqiuwei/article/details/23461995