博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP:Cookie实现永久登录(书本案例)
阅读量:5102 次
发布时间:2019-06-13

本文共 2896 字,大约阅读时间需要 9 分钟。

loginCookie.jsp

<%@ page language="java" pageEncoding="UTF-8" isErrorPage="false" %>
<%! // 密钥 private static final String KEY = ":cookie@helloweenvsfei.com"; // MD5 加密算法 public final static String calcMD5(String ss) { String s = ss==null ? "" : ss; char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] strTemp = s.getBytes(); MessageDigest mdTemp = MessageDigest.getInstance("MD5"); mdTemp.update(strTemp); byte[] md = mdTemp.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } catch (Exception e) { return null; } }%><% request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String action = request.getParameter("action"); if("login".equals(action)){ String account = request.getParameter("account"); String password = request.getParameter("password"); int timeout = new Integer(request.getParameter("timeout")); // 把帐号连同密钥使用MD5后加密后保存 String ssid = calcMD5(account + KEY); // 把帐号保存到Cookie中 并控制有效期 Cookie accountCookie = new Cookie("account", account); accountCookie.setMaxAge(timeout); // 把加密结果保存到Cookie中 并控制有效期 Cookie ssidCookie = new Cookie("ssid", ssid); ssidCookie.setMaxAge(timeout); response.addCookie(accountCookie); response.addCookie(ssidCookie); // 重新请求本页面 response.sendRedirect(request.getRequestURI() + "?" + System.currentTimeMillis()); return; } else if("logout".equals(action)){ // 删除Cookie中的帐号 Cookie accountCookie = new Cookie("account", ""); accountCookie.setMaxAge(0); // 删除Cookie中的加密结果 Cookie ssidCookie = new Cookie("ssid", ""); ssidCookie.setMaxAge(0); response.addCookie(accountCookie); response.addCookie(ssidCookie); // 重新请求本页面 response.sendRedirect(request.getRequestURI() + "?" + System.currentTimeMillis()); return; } boolean loggin = false; String account = null; String ssid = null; // 获取Cookie中的account与ssid if(request.getCookies() != null){ for(Cookie cookie : request.getCookies()){ if(cookie.getName().equals("account")) account = cookie.getValue(); if(cookie.getName().equals("ssid")) ssid = cookie.getValue(); } } if(account != null && ssid != null){ // 如果加密规则正确, 则视为已经登录 loggin = ssid.equals(calcMD5(account + KEY)); } %><%= loggin ? "欢迎您回来" : "请先登录" %>
当前有效的 Cookie
<%= loggin ? "欢迎您回来" : "请先登录" %> <% if(loggin){ %> 欢迎您, ${ cookie.account.value }.   
注销 <% } else { %>
帐号:
密码:
有效期: 关闭浏览器即失效
30天内有效
永久有效
<% } %>

转载于:https://www.cnblogs.com/xieyuan/p/3787368.html

你可能感兴趣的文章
绘图库:Matplotlib
查看>>
0906第一次作业
查看>>
Ceph Monitor基础架构与模块详解
查看>>
dbca:Exception in thread "main" java.lang.UnsatisfiedLinkError: get
查看>>
hdu 1232 畅通工程(并查集)
查看>>
移动开发平台-应用之星app制作教程
查看>>
jquery validate使用笔记
查看>>
主要的几个脑网络——整理自eegfmri的博客
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
CABasicAnimation animationWithKeyPath Types
查看>>
JavaScript--eval
查看>>
iOS6与iOS7屏幕适配技巧
查看>>
获取视图尺寸大小方法
查看>>
mysql 历史记录查询
查看>>
sqoop连接Oracle数据库错误异常
查看>>
伪类与超链接
查看>>
HTML语言的一些元素(二)
查看>>
一段js代码的分析
查看>>
centos 7 redis-4.0.11 主从
查看>>
Java的基本数据类型与转换
查看>>