Cookie、Session

一、Cookie
1.为什么要使用Cookie?
    Cookie是将用户的数据以文本的形式保存在了本地。可以做到简化登录。但缺点在于无法保障数据的安全
2.如何使用Cookie?
    a.导入Cookie包。javax.servlet.http.Cookie
    b.创建Cookie:  Cookie cookie = new Cookie("","");
              参数说明:创建只有这一种形式,第一个参数为Cookie名称,第二个参数为Cookie的具体值。
              注意:Cookie值只能是String类型
    c.写入Cookie:response.addCookie(创建的Cookie对象);
    d.Cookie常用的方法:
            setMaxAge();设置Cookie的最大有效时间。以秒为单位。
            getName():用来获取Cookie的名称,
            getValue():获取Cookie中保存的数据值。
            setValue();设置Cookie要保存的数据值
            getMaxAge():获取Cookie的最大有效时间
3.Cookie在实战中用在哪?
     a.简化登录。在用户第一次登录成功以后,要用户的用户名放入Cookie,设置最大有效时间,这样就可以做到在有效时间
                内免登录的效果。
     b.在电商软件中,将用户访问过的商品信息,放入Cookie,可以方便用户回顾浏览的历史。
      c.在有效时间范围内,也可以做到用户倒链访问某个页面
 
二、Session:
1.为什么要使用session?
  Session:使用用来对用户访问的控制与回话跟踪。(回话:request,以及response)
2.如何使用Session?
    a.创建Session:HttpSession session = request.getSession();
    b.将需要在每个页面中要使用的数据放入到session作用域中。:session.setAttribute(key,value);
      参数解释:key是要获取session中数据的标识,只能是String类型
               value:是Object类型
       
     c.常用的方法:
       1.setAttribute()
       2.getAttribute("");返回Object类型。通过参数名称获取与其指向的数据
       3.getMaxInactiveInterval();设置Session的最大有效性,单位:秒
       4.invalidate():销毁当前的session。这个方法往往用在系统用户登出。(实战中写完此方法,还要将对象赋值为null)
       5.getId():获取当前session的Id编号。
3.在哪使用Session?
     因为session的作用在浏览器,所以不便于将大量的数据集合放入session。
     一般会在用户登录成功后,将用户的名放入session。
     在当前浏览器未关闭时,也可以做到防止用户倒链的情况发生,比建议用它实现免登录,无意义。

三、案例

 1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         //设置字符编码集
 3         request.setCharacterEncoding("UTF-8");
 4         response.setCharacterEncoding("UTF-8");
 5         //获取用户提交请求校验的信息
 6         String name=request.getParameter("name");
 7         String pwd=request.getParameter("pwd");
 8         
 9         //接收校验后返回的结果
10         String poname=petOwnerBiz.searchPetOwnerBynamepwd(name, pwd);
11         if(null!=poname) {
12             //创建Cookie
13             Cookie cookie = new Cookie("poname",poname);
14             //设置Cookie的最大有效性    秒
15             cookie.setMaxAge(300);
16             //写入Cookie
17             response.addCookie(cookie);
18             HttpSession session=request.getSession();
19             session.setAttribute("poname", poname);
20             response.sendRedirect("main.jsp");
21             
22         }
23     }
 1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         /*
 3          * 获取保存的Cookie,从该Cookie中获取保存的用户登录信息
 4          * 如果存在将信息保存在session/request作用域重定向或转发到某个servlet,或页面
 5          * 如果没有信息,则直接重定向到登录界面
 6          */
 7         //获取本地的Cookie
 8         Cookie[] cookies = request.getCookies();
 9         String poname=null;
10         //循环Cookie数组,找到需要的cookie对象,拿到用户保存的登录信息
11         for(int i=0;i<cookies.length;i++) {
12             Cookie cookie=cookies[i];
13             if("poname".equals(cookie.getName())) {
14                 poname=cookie.getValue();
15                 break;
16             }
17         }
18         if(null!=poname) {
19             HttpSession session=request.getSession();
20             session.setAttribute("poname", poname);
21             response.sendRedirect("main.jsp");
22             return;
23         }
24         response.sendRedirect("login.jsp");
25         
26     }
 1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         //设置字符编码集
 3                 request.setCharacterEncoding("UTF-8");
 4                 response.setCharacterEncoding("UTF-8");
 5                 //获取用户提交请求校验的信息
 6                 String name=request.getParameter("name");
 7                 String pwd=request.getParameter("pwd");
 8                 
 9                 //接收校验后返回的结果
10                 String poname=petOwnerBiz.searchPetOwnerBynamepwd(name, pwd);
11                 if(null!=poname) {
12                     
13                     HttpSession session=request.getSession();
14                     session.setAttribute("poname", poname);
15                     response.sendRedirect("main.jsp");
16                     //return;
17                  }else {
18                      response.sendRedirect("login2.jsp");
19                  }
20 
21          }
年轻人能为世界年轻人能为世界做些什么
原文地址:https://www.cnblogs.com/twinkle-star/p/9462932.html