loginCookie.jsp
<%@ page language="java" pageEncoding="UTF-8" isErrorPage="false" %>
<jsp:directive.page import="java.security.MessageDigest"/>
<%!
// 密钥
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));
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><%= loggin ? "欢迎您回来" : "请先登录" %></title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div align="center" style="margin:10px; ">
<fieldset>
<legend>当前有效的 Cookie</legend>
<script>document.write(document.cookie);</script>
</fieldset>
<fieldset>
<legend><%= loggin ? "欢迎您回来" : "请先登录" %></legend>
<% if(loggin){ %>
欢迎您, ${ cookie.account.value }.
<a href="${ pageContext.request.requestURI }?action=logout">注销</a>
<% } else { %>
<form action="${ pageContext.request.requestURI }?action=login" method="post">
<table>
<tr>
<td>
帐号:
</td>
<td>
<input type="text" name="account" style="width:200px; ">
</td>
</tr>
<tr>
<td>
密码:
</td>
<td>
<input type="password" name="password" style="width:200px; ">
</td>
</tr>
<tr>
<td>
有效期:
</td>
<td>
<input type="radio" name="timeout" value="-1" checked> 关闭浏览器即失效 <br/>
<input type="radio" name="timeout" value="<%= 30 * 24 * 60 * 60 %>"> 30天内有效 <br/>
<input type="radio" name="timeout" value="<%= Integer.MAX_VALUE %>"> 永久有效 <br/>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" value=" 登 录 " class="button">
</td>
</tr>
</table>
</form>
<% } %>
</fieldset>
</div>
</body>
</html>
分享到:
相关推荐
本文实例为大家分享了jsp cookie+session实现简易自动登录的具体代码,供大家参考,具体内容如下 关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。 如果设置了...
JSP之使用jsp:forward实现用户信息验证的页面跳转 参考博客地址:https://blog.csdn.net/qq_36631076/article/details/79709868
案例1:JSP+JavaBean实现数据库读取 案例2:JSP顺序输出查询结果 案例3:JSP逆序输出查询结果 案例4:JSP执行存储过程 案例5:J2EE访问Tomcat中的数据连接池 案例6:J2EE访问JBoss中数据连接池 案例7:J2EE访问...
登录功能jsp实现,登录功能jsp实现。
纯JSP演示Cookie自动登录(完整工程。主要实现勾选自动登录后, 哪怕服务器重启后session丢失,靠客户端COOKIE仍然正常登录并刷新COOKIE。点退出登录后COOKIE失效。 现为WEB,可改造为提供android 和ios下的...
jsp cookie实现登录名和密码记录功能的示例
不错的适合练手、课程设计、毕业设计的JSP项目源码:JSP实现的简单旅游管理系统的设计(源代码+论文).rar不错的适合练手、课程设计、毕业设计的JSP项目源码:JSP实现的简单旅游管理系统的设计(源代码+论文).rar不错的...
1.代码是完整的导入到 myEclipse 中就可以使用 2.实现struts cookie 记住两周 自动登录功能 3.访问地址:http://127.0.0.1:8080/cookie/index.jsp 4.系统默认有两个账户 在 UserDao 中可以查到
通过操作cookie来实现用户自动登录过程,使用的是jsp页面。由于是测试,所以用户信息是写死的,用户名admin密码123456,欢迎一起探讨和学习!
项目名称:Cookie版人员管理系统。 使用技术:servlet+jsp+mysql+Cookie技术
该资源主要利用Cookie是由服务器端生成并储存在浏览器客户端上的数据。浏览器接收到来自服务器的Cookie数据之后默认将其保存在浏览器缓存中(如果浏览器关闭,缓存消失,Cookie数据...所以可以用来实现十天免登录功能
1 使用pageContext设置属性,该属性默认在page范围内 2 使用request获取客户端ur1、客户提交信息的方式等信息,在登录后显示 3 通过Session实现页面传值 4 通过Cookie实现登录时,记住用户密码的功能。
jsp之Cookie自动登录类似于QQ自动登录一样,有助于用户在下载运行的时候更加方便,简洁
jsp操作cookie实例,jsp操作cookie实例,jsp操作cookie实例,jsp操作cookie实例
forward>,<jsp:param>,<jsp:setProperty>,<jsp:plugin>,<jsp:include>,<jsp:useBean>,<jsp:getProperty>)、JSP中使用数据库(JDBC常用API)、JSTL的配置步骤、核心标签库的使用、Servlet的实现、ServletAPI、...
利用<jsp:plugin>实现的一个 多人聊天系统哦
用jsp实现简单的cookie功能,登陆页面输入任意信息,在输出页面输出信息,若已输入则用cookie记录,直接跳转输出页面
JSP程序设计实训与案例教程源代码JSP程序设计实训与案例教程源代码JSP程序设计实训与案例教程源代码JSP程序设计实训与案例教程源代码JSP程序设计实训与案例教程源代码JSP程序设计实训与案例教程源代码JSP程序设计实...
Jsp+Servlet+Cookie实现记住密码,自动登录,防止表单提交,记录登录次数的新手例子。简单明了,大量注释,El表达式等。
JSP改造Cookie案例1