企业服务平台网站建设h5 和手机网站
企业服务平台网站建设,h5 和手机网站,oss做网站迁移,wordpress图片本地化插件1、是什么#xff1f; 上次访问时间#xff1b;即用户最近一次登录时间#xff1b;
2、为什么#xff1f; 为了提示用户登录或访问记录#xff0c;提高安全性#xff0c;如qq登录提示#xff1b;
3、怎么做#xff1f; 通过cookie 实现#xff1b; 用户第1次登录 上次访问时间即用户最近一次登录时间
2、为什么 为了提示用户登录或访问记录提高安全性如qq登录提示
3、怎么做 通过cookie 实现 用户第1次登录 服务器把访问时间放入cookie 并作为响应报文返回浏览器浏览器将cookie 存入磁盘每次除第一次外访问都带上她
补充 本文在cookie中存储了访问时间若业务场景需要可以存储其他数据
【荔枝】转自张孝祥 // 跟踪上次客户访问时间
public class AccessTimeServlet extends HttpServlet
{public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{response.setContentType(text/html;charsetgb2312);PrintWriter out response.getWriter();//获取记录用户上次访问站点时间的CookieCookie [] cks request.getCookies();String lastAccessTime getCookie(cks,access_time);if(lastAccessTime null){out.println(没有您上次的访问记录);}else{BASE64Decoder decoder new BASE64Decoder();String decodedAccessTime new String(decoder.decodeBuffer(lastAccessTime),GB2312);out.println(您上次的访问时间为 decodedAccessTime);}//将用户开始本次访问的时间存储到客户端Cookie中HttpSession session request.getSession();if(session.isNew()){long createTime session.getCreationTime();Date dateCreateTime new Date(createTime);SimpleDateFormat sdf new SimpleDateFormat(yyyy年MM月dd HH点mm分ss秒);String formatedCreateTime sdf.format(dateCreateTime);BASE64Encoder encoder new sun.misc.BASE64Encoder();String base64CreateTime encoder.encode(formatedCreateTime.getBytes(GB2312));Cookie ckAccessTime new Cookie(access_time,base64CreateTime);ckAccessTime.setMaxAge(365*24*3600);out.println(formatedCreateTime);response.addCookie(ckAccessTime);}}private String getCookie(Cookie [] cks,String cookieName){String cookieValue null;for(int i0; cks!null icks.length; i){if(cookieName.equals(cks[i].getName())){cookieValue cks[i].getValue();break;} } return cookieValue;}
}
4、访问效果
第1次 cookie中没有储存 最近一次访问的记录 第2次访问及其以后 因为第1次服务器已经把 访问时间存入cookie 浏览器将cookie存入本地文件了所以后续的访问浏览器请求报文头都会带上服务器返回的cookie 数据 5、为什么 访问时间access_time 看起来不对劲呢。
因为 access_time 字段值包含中文如果不经过BASE64编码那经过网络传输可能会丢数据
所以 该字段经过 BASE64 编码过这里要注意 BASE64 不是加密算法而是编码格式如UTF-8 GBK 编码格式两者有本质区别
base64 是什么 Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。
base64 为什么
我们知道在计算机中任何数据都是按ascii码存储的而ascii码的128255之间的值是不可见字符。
而在网络上交换数据时比如说从A地传到B地往往要经过多个路由设备
由于不同的设备对字符的处理方式有一些不同这样那些不可见字符就有可能被处理错误这是不利于传输的。
所以就先把数据先做一个Base64编码统统变成可见字符这样出错的可能性就大降低了。
base64 怎么做
它的编码过程如下
步骤1将待转换的字符串每三个字节分为一组每个字节占 8 个二进制位那么共有 24 个二进制位。
步骤2将第1步得到的每 24 个二进制位分为每 6 个一组则每 3 个字节可分为 4 组。
步骤3在每组前面添加两个 0 每组由 6 个二进制位变为 8 个二进制位总共 32 个二进制位即四个字节。根据 Base64编码对照表见下表获得对应的值。 关于 base64 更多信息可以参考 https://blog.csdn.net/PacosonSWJTU/article/details/109955148
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91106.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!