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分钟 */
一纸高中万里风,寒窗读破华堂空。
莫道长安花看尽,由来枝叶几相同?