java-自动登录 与 记住用户名

java-自动登录 与 记住用户名 标签:mode equals ble nal 商品 char

java-自动登录 与 记住用户名

标签:modeequalsblenal商品charresource指定null

步骤分析:

步骤分析:
1.数据库和表
create database day16;
use day16;
create table user(
id int primary key auto_increment,
username varchar(20),
password varchar(20)
);
insert into user values(null,‘tom‘,‘123‘);
2.web项目
jar包 工具类 配置文件
3.新建一个登录页面 表单
4.表单提交 loginservlet
接受用户名和密码
调用service完成登录操作,返回值User
判断user是否为空
若不为空,将user放入session中
判断是否勾选了自动登录
若勾选了:
需要将用户名和密码写回浏览器
5.下次访问网站的时候
过滤器拦截任意请求
判断有无指定的cookie
有cookie,获取用户名和密码
调用service完成登录操作,返回user
当user不为空的时候将user放入session中.

当我们换用jack登录的时候发现登录不了
自动登录只需要登录一次:当session中没有用户的时候
访问有些资源是不需要自动登录的(和登录还有注册相关的资源)

修改filter的逻辑:
首先判断session中是否有user
若没有 并且访问的路径不是和登录注册相关的时候
才去获取指定的cookie

项目结构:

项目展示:

数据库:

/*
SQLyog Ultimate v12.09 (64 bit)
MySQL – 5.5.53 : Database – autologin
*********************************************************************
*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=‘‘*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=‘NO_AUTO_VALUE_ON_ZERO‘ */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`autologin` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `autologin`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键‘,
`username` varchar(255) DEFAULT NULL COMMENT ‘用户名‘,
`password` varchar(255) DEFAULT NULL COMMENT ‘密码‘,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert into `user`(`id`,`username`,`password`) values (1,‘tom‘,‘123‘),(2,‘jack‘,‘123‘);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

项目代码:

com.gordon.constant:

package com.gordon.constant;

public class Constant {
/**
* 是否自动登录
*/
public static String IS_AUTO_LOGIN = \”ok\”;

/**
* 是否记住用户名
*/
public static String IS_REMEMBER_USER = \”ok\”;
}

com.gordon.dao:

–UserDao.java:

package com.gordon.dao;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.gordon.domain.User;
import com.gordon.utils.DataSourceUtil;

public class UserDao {

/**
* 用户登录
*
* @param username
* @param password
* @return
* @throws SQLException
*/
public User login(String username, String password) throws SQLException {
QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());
String sql = \”select * from user where username = ? and password = ? limit 1\”;
return qr.query(sql, new BeanHandler<User>(User.class), username, password);
}

}

com.gordon.domain:

–User.java:

package com.gordon.domain;

public class User {
private int id;
private String username;
private String password;

public User() {
}

public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

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;
}
}

作者: 鲁大师

为您推荐

返回顶部