Cookie,Session基础知识

//这部分主要是CookieSession的笔记部分
    
/*
 * //获取来访的客户端类型
        String clientTye=req.getHeader("User-Agent");
        
        //如果是火狐浏览器,那么使用以下代码
        if(clientTye.contains("Firefox")){
            fileName=DownLoadUtil.base64EncodeFileName(fileName);
        }else{
            //IE,或者是谷歌浏览器
            //对中文的名字进行编码处理
            fileName=URLEncoder.encode(fileName,"UTF-8");
        }
 */
    
    
    //DownLoadUtil部分是Base64的代码部分。如下
    /*
     * //Base4加密解密方式
    public class DownLoadUtil {
    public static String base64EncodeFileName(String fileName) {
        BASE64Encoder base64Encoder = new BASE64Encoder();
        try {
            return "=?UTF-8?B?"
                    + new String(base64Encoder.encode(fileName
                            .getBytes("UTF-8"))) + "?=";
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}
     */
    
    
    
    
    //重定向问题的两种写法
    //1.早期写法:
    /*设置状态码?重新定位状态码
    resp.setStatus(302);
    定位跳转的位置是哪一个页面
    resp.setHeader("location","sucess-login.html");
    
    2.直接跳转的写法
    跳转到成功的界面
    resp.sendRedirect("sucess-login.html");*/
    
    
    
/*######请求转发的问题
 * //请求转发的写法:
   //req.getRequestDispatcher("sucess-login.html").forward(req, resp);
 */
    
    
/*
 * ###Cookie学习笔记
 * 直译饼干的意思,其实是一份小数据,是服务器给客户端的,并且存在客户端上的一份小数据    
 * 
 * 应用场景:自动登录,浏览记录,购物车
 * 
 * ###为什么要有这个Cookie?
 * http的请求是无状态。客户端与服务器在通讯的时候,是无状态的,其实就是客户端在第二次来访的时候,服务器根本不知道
 * 这个客户端以前有没有来访问过。为了更好的用户体验,更好的交互。
 * 其实从公司层面讲,就是为了更好的收集客户信息
 * 
 * 
 * ###Cookie怎么用?
 * 创建CookieDemo01
 *         添加Cookie给客户
 *           1.在响应的时候,添加Cookie
 *             Cookie cookie=new Cookie("name", "zyz");
 *             给响应添加一个cookie
 *             resp.addCookie(cookie);
 *         
 *          2客户端收到的信息里面,响应头中多了一个字段Set-Cookie
 * 
 * 
 * 
 *###获取客户端带过来的Cookie
 *        //获取客户端带过来的cookie
            Cookie[] cookies=req.getCookies();
            if(cookies!=null){
                for(Cookie c:cookies){
                    String cookieName=c.getName();
                    String cookieValue=c.getValue();
                    System.out.println(cookieName+"=="+cookieValue);
                }
            }

###cookie的有效期,
默认情况下,关闭浏览器后,Cookie就没有了。

expiry:有效----------->有效值以秒计算
正值:表示在这个数字之后,cookie将会失效
负值,表示关闭浏览器,那么cookie就会失效,默认是值是-1



####常用方法
//设置Cookie的周期
            cookie.setMaxAge(60);
            
            //赋值新的值
            //cookie.setValue(newValue);
            
            //用于指定只有请求了指定的域名,才会带上该cookie
            //cookie.setDomain("");
            
            //只有访问该域名下的cookieDemo的这个路径地址才会带cookie
            //cookie.setPath("/cookieDemo");



###例子---->显示最近访问的时间
获取带过来的cookie
    1.没有cookie
         第一次登录
           1输出登录成功或者失败
           2给客户端添加cookie
                 new Cookie("last",时间)
     2有cookie
         第二次登录
           1.输出成功或者失败
           2获取以前的cookie


#####Cookie的安全问题
由于Cookie会保存在客户端上,所以有安全隐患问题,还有一个问题,Cookie的大小与个数有限制,
为了解决问题------->Session



####Session
会话,Session是给予Cookie的一种会话机制,Cookie是服务器返回一小份数据给客户端,并且
存放在客户端上,Session是,数据存放在服务器端。


####Session常用的API

    //获得会话
      HttpSession session=req.getSession();
      //得到会话的id
      String id=session.getId();
      //存值
      session.setAttribute("name","value");
      //取值
      session.getAttribute("name");
      //移除值
      session.removeAttribute("name");


###Session的创建和销毁

创建
如果有在Servlet里面调用了request.getSession()

销毁
Session是存放在服务器的内存中的一份数据,当然可以持久化,Redis.即使关了浏览器,Session也不会销毁

销毁方法
    1关闭服务器
     
    2 Session会话时间结束,默认有效期30分钟

 */
    

 

posted @ 2019-08-12 00:56  薄眠抛却陈年事。  阅读(145)  评论(0编辑  收藏  举报