对用户自动登录实现的代码
2012-12-03 20:06
691 查看
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<body>
<form action="" method="post">
用户名:<input type="text" name="username"/><br/>
密 码:<input type="password" name="password"/><br/>
有效期:<input type="radio" name="autoLoginTime" value="${3600 }"/>1小时
<input type="radio" name="autoLoginTime" value="${600}"/>10分钟
<input type="radio" name="autoLoginTime" value="${60 }"/>1分钟<br/>
<input type="submit" value="登录"/>
</form>
</body>
</body>
</html>
User.java:
package com.hbsi.csdn.domain;
public class User {
private String username;
private String password;
public User(String username,String password){
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDao.java:
package com.hbsi.csdn.Dao;
import java.util.Arrays;
import java.util.List;
import com.hbsi.csdn.domain.User;
public class UserDao {
List<User> db = Arrays.asList(new User("aa", "11"), new User("bb", "22"),
new User("cc", "33"));//设置几个用户名和密码
public List<User> getAll(){//查找所有用户
return db;
}
public User find(String username){ //根据用户名查找用户
for(User user:db){
if(user.getUsername().equals(username)){
return user;
}
}
return null;
}
public User find(String username,String password){ //核实用户名和密码
for(User user:db){
if(user.getUsername().equals(username)&&user.getPassword().equals(password)){
return user;
}
}
return null;
}
}
LoginServlet.java:
package com.hbsi.csdn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Encoder;
import com.hbsi.csdn.Dao.UserDao;
import com.hbsi.csdn.domain.User;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");//获取用户名
String password = request.getParameter("password");
String autoLoginTime1 = request.getParameter("autoLoginTime");
if (autoLoginTime1 != null) {//判断时间,不为空时将时间传到cookie
int autoLoginTime = Integer.parseInt(autoLoginTime1);
UserDao dao = new UserDao();
User user = dao.find(username, password);//在dao中找到用户名和密码
if (user != null) {
request.getSession().setAttribute("user", user);
sendCookie(response, user, autoLoginTime);
}
}
}
private void sendCookie(HttpServletResponse response, User user,
int autoLoginTime) {
long time = System.currentTimeMillis() + autoLoginTime;
String md5value = md5(user.getUsername() + ":" + time + ":"
+ user.getPassword());
String cookievalue=user.getUsername()+":"+time+":"+md5value;
Cookie cookie=new Cookie("autoLogin",cookievalue);//new一个cookie对象
cookie.setMaxAge(autoLoginTime); //设置cookie的有效时间
cookie.setPath("/FilterAutoLogin"); //设置cookie的有效范围
response.addCookie(cookie); //发送cookie
}
private String md5(String input) {//设置md5加密
try {
MessageDigest md = MessageDigest.getInstance("md5");
byte result[] = md.digest(input.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(result);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<body>
<form action="" method="post">
用户名:<input type="text" name="username"/><br/>
密 码:<input type="password" name="password"/><br/>
有效期:<input type="radio" name="autoLoginTime" value="${3600 }"/>1小时
<input type="radio" name="autoLoginTime" value="${600}"/>10分钟
<input type="radio" name="autoLoginTime" value="${60 }"/>1分钟<br/>
<input type="submit" value="登录"/>
</form>
</body>
</body>
</html>
User.java:
package com.hbsi.csdn.domain;
public class User {
private String username;
private String password;
public User(String username,String password){
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDao.java:
package com.hbsi.csdn.Dao;
import java.util.Arrays;
import java.util.List;
import com.hbsi.csdn.domain.User;
public class UserDao {
List<User> db = Arrays.asList(new User("aa", "11"), new User("bb", "22"),
new User("cc", "33"));//设置几个用户名和密码
public List<User> getAll(){//查找所有用户
return db;
}
public User find(String username){ //根据用户名查找用户
for(User user:db){
if(user.getUsername().equals(username)){
return user;
}
}
return null;
}
public User find(String username,String password){ //核实用户名和密码
for(User user:db){
if(user.getUsername().equals(username)&&user.getPassword().equals(password)){
return user;
}
}
return null;
}
}
LoginServlet.java:
package com.hbsi.csdn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Encoder;
import com.hbsi.csdn.Dao.UserDao;
import com.hbsi.csdn.domain.User;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");//获取用户名
String password = request.getParameter("password");
String autoLoginTime1 = request.getParameter("autoLoginTime");
if (autoLoginTime1 != null) {//判断时间,不为空时将时间传到cookie
int autoLoginTime = Integer.parseInt(autoLoginTime1);
UserDao dao = new UserDao();
User user = dao.find(username, password);//在dao中找到用户名和密码
if (user != null) {
request.getSession().setAttribute("user", user);
sendCookie(response, user, autoLoginTime);
}
}
}
private void sendCookie(HttpServletResponse response, User user,
int autoLoginTime) {
long time = System.currentTimeMillis() + autoLoginTime;
String md5value = md5(user.getUsername() + ":" + time + ":"
+ user.getPassword());
String cookievalue=user.getUsername()+":"+time+":"+md5value;
Cookie cookie=new Cookie("autoLogin",cookievalue);//new一个cookie对象
cookie.setMaxAge(autoLoginTime); //设置cookie的有效时间
cookie.setPath("/FilterAutoLogin"); //设置cookie的有效范围
response.addCookie(cookie); //发送cookie
}
private String md5(String input) {//设置md5加密
try {
MessageDigest md = MessageDigest.getInstance("md5");
byte result[] = md.digest(input.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(result);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
相关文章推荐
- 利用cookie实现用户自动登录的代码
- java实现用户自动登录
- 实现shell终端代码分享(可用户登录 实现系统命令)
- java模拟用户登录(实现自动签到)-aspx
- JavaScriptCookie&PHPCookie实现用户登录信息自动填入
- Html5实现用户注册自动校验功能实例代码
- Java传入用户名和密码并自动提交表单实现登录到其他系统的实例代码
- 详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)
- 使用Jquery打造最佳用户体验的登录页面的实现代码
- HttpWebRequest 发送 POST实现自动用户登录
- 两种方法实现Linux不活动用户登录超时后自动登出
- c# 实现网页上用户自动登陆|asp.net 模拟网站登录
- 利用Filter实现用户自动登录
- application作用域实现用户登录挤掉之前登录用户代码
- C# 脚本代码自动登录淘宝获取用户信息
- 编写代码实现,模拟用户登录情景,并且只能登录三次,只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。
- XP如何实现用户自动登录
- javaweb用户的自动登录模块的实现
- HttpWebRequest 发送 POST实现自动用户登录