1. 功能介绍

    Session做为服务器端,保留用户会话数据,一般用户存储员工登录信息,权限等,Cookie在做为客户端保留客户端会话数据,用来存储用户个性化设置,以及用户操作轨迹等。

  2. 主要特性

    1. 封装了Java和JavaScript方式操作Session对象功能。
    2. 封装了Java和JavaScript方式操作Cookie对象功能。
    3. 保证Java和JavaScript方式操作Session和Cookie的一致性。
  3. 方法说明

    类路径 com.linkage.webframework.util.cookie.CookieManager
    类描述 Java端Cookie操作类
    方法名称 public CookieManager(BaseData bd, String cookieName)
    方法描述 构造CookieManager对象,pd:上下文对象,cookieName:会话名称
    方法名称 public CookieManager(BaseData bd, String cookieName, int hours)
    方法描述 构造CookieManager对象,pd:上下文对象,cookieName:会话名称,hous:会话有效期(小时),默认为1年
    方法名称 public void store()
    方法描述 存储cookie对象,setAttribute,remoteAttribute等必须store才能生效
    方法名称 public void remove()
    方法描述 删除cookie对象
    方法名称 public void setAttribute(String key, String value)
    方法描述 给会话对象设置值,key:元素名,value:元素值
    方法名称 public String getAttribute(String key)
    方法描述 获取cookie中某个元素的值
    方法名称 public void removeAttribute(String key)
    方法描述 删除cookie对象中指定的值
    方法名称 public void setAttributes(Map attrs)
    方法描述 给sessionmanager设置一组对象
    方法名称 public String[] getAttributeNames()
    方法描述 获取sessionmanager对象key的数组
    类路径 CookieManager
    类描述 JavaScript端操作Cookie类
    方法名称 CookieManager(document, cookieName, hour, path)
    方法描述 CookieManager构造对象,document:文档对象,cookieName:会话名称,hour:有效期(小时),path:路径(一般为"/")
    方法名称 function CookieManager(document, cookieName, hour, path)
    方法描述 CookieManager构造对象,document:文档对象,cookieName:会话名称,hour:有效期(小时),path:路径(一般为"/")
    方法名称 function load()
    方法描述 载入cookiemanager对象,载入后即能从cookiemanager获取相应的数据
    方法名称 function store()
    方法描述 保存cookiemanager对象,对cookiemanager的数据修改后,需要存储后才能生效
    方法名称 function remove()
    方法描述 删除cookiemanager对象
    类路径 com.linkage.component.AppContext
    类描述 Java端Session操作类
    方法名称 public String getStaffId()
    方法描述 获取当前登陆员工号
    方法名称 public String getStaffName()
    方法描述 获取当前登陆员工名称
    方法名称 public String getDeptId()
    方法描述 获取当前登陆员工所在部门标识
    方法名称 public String getDeptCode()
    方法描述 获取当前登陆员工所在部门编码象
    方法名称 public String getDeptName()
    方法描述 获取当前登陆员工所在部门名称
    方法名称 public String getCityId()
    方法描述 获取当前登陆员工所在业务区编码
    方法名称 public String getCityName()
    方法描述 获取当前登陆员工所在业务区名称
    方法名称 public String getEpachyId()
    方法描述 获取当前登陆员工所在地州编码
    方法名称 public String getLoginEpachyId()
    方法描述 获取当前登陆地州编码
    方法名称 public String getVersion()
    方法描述 获取系统版本号,在application.xml配置
    方法名称 public String getProvinceId(
    方法描述 获取省代码,在application.xml配置
    方法名称 public String getSubSysCode()
    方法描述 获取子系统编码,在application.xml配置
    方法名称 public boolean isProductMode()
    方法描述 判断是否是产品模式,在application.xml配置
    方法名称 public boolean hasPriv(String privCode)
    方法描述 判断是否有privCode权限
    方法名称 public boolean isProv(String provinceId)
    方法描述 判断是否是provinceId省代码
    方法名称 public Object getAttribute(String attribute)
    方法描述 获取会话对象中指定名称的值
    方法名称 public void setAttribute(String attribute, Object value)
    方法描述 设置会话对象中指定名称和值
    方法名称 public void removeAttribute(String attribute)
    方法描述 删除会话对象中指定名称的值
    方法名称 public String[] getAttributeNames()
    方法描述 获取会话对象中所有的属性名称
    类路径 pagevisit
    类描述 JavaScript端操作Session类
    方法名称 staffId
    方法描述 获取会话对象中的值,如pagevisit.staffId,pagevisit.dpetId,相关的方法和数据获取和AppContext中的一致
  4. 注意事项

    1. Cookie存储的数据,当客户端将Cookie清空后,数据将被清除。
    2. Session中不能存放业务数据,否则会导致程序的不稳定性。
    3. Session获取数据必须通过pd.getContext()方式,不允许直接操作session对象,AppContext已经实例了一些常用的方法,如取员工,判权限等
  5. 代码片段

    1. Java端CookieManager操作

      //构造cookiemanager对象,并设置名称,默认为1年有效期,可以设置
      CookieManager manager = new CookieManager(pd, "LOGIN_COOKIE");
      
      //获取cookiemanager某个key的值
      String cookieSubsysCode = manager.getAttribute("SUBSYS_CODE");
      
      //设置cookiemanager某个key的值
      manager.setAttribute("STAFF_ID", staff_id);
      manager.setAttribute("EPARCHY_ID", eparchy_id);
      
      //删除cookiemanager某个key
      manager.remoteAttribute("EPARCHY_XXX");
      //存储cookiemanager的值
      manager.store();
      
      //删除cookiemanager对象
      manager.remove();
      
    2. JavaScript端CookieManager操作

      //如果没有引入cookiemanger.js,需要手工引入
      if(typeof(System.CookieManager)=='undefined'){ Include('support/cookiemanager.js');} 
      
      //构造CookieManager对象
      var cookiemgr = new System.CookieManager(document, "NGBOSS_COOKIE_" + context.getPageVisit().staffId, 24*365, "/");
      //载入cookiemanager对象,如果要获取cookie中的数据,必须先load
      if (cookiemgr.load()) {
      	//获取cookiemanager中的某个key对应的值
      	var selected_layout =  cookiemgr["SELECTED_LAYOUT"];
      }
      
      //给cookiemanager的某个key赋值
      cookiemgr["SELECTED_LAYOUT"] = laytype;
      //赋值后必须存储才能生效
      cookiemgr.store();
      
    3. Java端Session操作

      //获取session对象
      AppContext ctx = pd.getContext();
      
      //获取工号
      ctx.getStaffId();
      
      //从session中设置自定义值
      ctx.setAttribute("XXX", "abc");
      //从session中获取自定义值
      String xxx = (String) ctx.getAttribute("XXX")
      //从session中删除自定义值
      ctx.remoteAttribute("XXX");
      
    4. JavaScript端Session操作

      //获取工号
      pagevisit.staffId;