• Java操作Session与Cookie


    1,Java操作Session

    Java操作Session非常简单,步骤如下

    1.1,在servlet中通过request获取session

     HttpSession session = request.getSession(true);

    true代表当前没有建立session则创建一个session,并返回这个session

    false代表当前没有session,不做操作,返回null

    默认为true

    1.2,利用session对象设置属性或删除属性

    添加

    session.setAttribute("username", username);
    session.setMaxInactiveInterval(60 * 30);  //默认为秒

    删除

    session.removeAttribute("username")

    2,Java操作Cookie

    Java操作Cookie就有些需要注意的地方了

    为此,建立一个操作cookie的工具类

    CookieUtil.java

     1 package org.guangsoft.util;
     2 
     3 import javax.servlet.http.Cookie;
     4 import javax.servlet.http.HttpServletRequest;
     5 import javax.servlet.http.HttpServletResponse;
     6 
     7 /**
     8  *
     9  * @author guanghe
    10  */
    11 public class CookieUtil 
    12 {
    13     /**
    14      * 设置cookie
    15      *
    16      * @param response
    17      * @param key cookie名字
    18      * @param value cookie值
    19      * @param maxAge cookie生命周期 以秒为单位
    20      * @param path cookie传递路径
    21      * @param domain cookie域
    22      */
    23     public static void addCookie(HttpServletResponse response,
    24             String key, String value, int maxAge, String path, String domain)
    25     {
    26         Cookie cookie = new Cookie(key, value);
    27         cookie.setPath(path);
    28         cookie.setDomain(domain);
    29         if (maxAge > 0)
    30         {
    31             cookie.setMaxAge(maxAge);
    32         }
    33         response.addCookie(cookie);
    34     }
    35 
    36     /**
    37      * 根据名字获取cookie
    38      *
    39      * @param request
    40      * @param name cookie名字
    41      * @return
    42      */
    43     public static Cookie getCookieByName(HttpServletRequest request, String name)
    44     {
    45         Cookie cookies[] = request.getCookies();
    46         if (cookies != null)
    47         {
    48             for (int i = 0; i < cookies.length; i++)
    49             {
    50                 Cookie cookie = cookies[i];
    51                 if (name.equals(cookie.getName()))
    52                 {
    53                     return cookie;
    54                 }
    55             }
    56         }
    57         return null;
    58     }
    59 }

    调用代码:

    UserService.java

     1 public boolean setAutoLog(HttpServletRequest request,HttpServletResponse response, String username)
     2     {
     3         CookieUtil.addCookie(response, "username", username, 3600 * 24 * 3, "/manage/userServlet.action", "localhost");
     4         return true;
     5     }
     6     
     7     public boolean logout(HttpServletRequest request,HttpServletResponse response, String username)
     8     {
     9         CookieUtil.addCookie(response,"username","",0, "/manage/userServlet.action", "localhost");
    10         return true;
    11     }

    严重提醒:删除Cookie时,只设置maxAge=0将不能够从浏览器中删除cookie,
    * 因为一个Cookie应当属于一个path与domain,所以删除时,Cookie的这两个属性也必须设置。
    * 误区:没有重视客户端发送到服务器端的cookie的path与domain值为空这个问题。
    * 因为在登陆系统时,设置了Cookie的path与domain属性的值,就误认为每次客户端请求时,都会把Cookie的
    * 这两个属性也提交到服务器端,但系统并没有把path与domain提交到服务器端(提交过来的只有Cookie的key,value值)。




  • 相关阅读:
    Sql Server系列:分区表操作
    [bug]WCF 内存入口检查失败 Memory gates checking failed
    由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
    如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?
    IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案
    使用nginx搭建高可用,高并发的wcf集群
    NPOI读写Excel
    用 IIS 实现请求转发
    模型验证组件 FluentValidation
    C#中的 正则表达式
  • 原文地址:https://www.cnblogs.com/guanghe/p/6011065.html
Copyright © 2020-2023  润新知