Session服务器会话技术

package com.foreknow.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 1.什么是会话
 * 它是指客户端与服务器端之间数据的传输(登录,购物车)。
 * 2.会话管理:管理数据。
 * 常用的会话技术:
 * 1.Cookie 数据会保存在客户端
 * 2.Session 数据会保存在服务器端
 * 
 * 
 * 什么是Cookie:它是客户端的技术,程序会把每个用户的数据以cookie的形式写给用户各自的浏览器,
 * 当用户使用浏览器再去访问Web服务器的资源的时候,它会有它各自的数据。
 * 
 * Cookie类:主要用于存储会话数据。
 * 1.构造Cookie对象
 *       Cookie(name,value);
 * 
 * 2.设置Cookie
 *      setPath(url) 设置Cookie的有效路径
 *      setMaxAge(int exp)  设置Cookie的有效时间(秒为单位的)例如:一天  24*60*60
 *      setValue(value)     设置Cookie的值
 * 3.发送cookie到浏览器端保存
 *      response.addCookie(cookie);
 * 
 * 4.服务器端接收cookie
 *      返回值类型Cookie[]   request.getCookies(cookie);
 * 
 * 
 * Cookie的原理
 * 1.要在服务器端创建Cookie对象,要把会话的数据存储到会话中
 * 
 * 2.服务器会发送Cookie的信息给浏览器,之后会把cookie保存到浏览器端
 * 
 * 3.浏览器会在下次访问服务的时候,会携带cookie信息(这些信息会包含在http请求头中)
 * 
 * 4.服务器会接收到浏览器携带的cookie信息
 * 
 * 后期如果解决客户端与服务器端的多次请求(解决的方案就是用H5中的本地存储)
 * 
 * 注意:
 * 1.setPath(uri):设置路径保存在哪里,浏览器在有效的路径下访问服务器的时候会携带cookie信息
 * 
 * 2.setMaxaAge(int exp)
     * 1.正数:表示cookie数据保存浏览器的缓存到硬盘中,数值表示要保存的时间
     * 
     * 2.负数:表示cookie数据会保存在浏览器的内存中,如果浏览器关闭,cookie就失效了。
     * 
     * 3. 0:表示会删除同名的cookie数据
 * 
 * cookie的数据类型只能保存非中文字符串类型。可以保存多个cookie,一个浏览器只能保存300个
 * cookie,每个站点最多可以存入20个cookie,每个cookie的大小限制为4KB
 * @author ttc
 *
 */
public class CookieDemo extends HttpServlet {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
//      Cookie cookie = new Cookie("name","tom");
//      cookie.setPath("/hello");//如果没有设置有效路径,默认的是Web的项目地址
//      cookie.setMaxAge(1*30*24*60*60);//设置cookie的存活时间为20秒
//      response.addCookie(cookie);
        
        Cookie[] cookies = request.getCookies();
        if(cookies!=null) {
            for(Cookie c:cookies) {
                String name = c.getName();
                String value = c.getValue();
                System.out.println(name+"----"+value);
                
            }
        }else {
            System.out.println("否则没有接收到cookie数据......");
        }
    }
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);
    
    }

}





你可能感兴趣的:(Session服务器会话技术)