JavaWeb实现简单的自动登录功能

本文实例为大家分享了JavaWeb实现简单的自动登录功能的具体代码,供大家参考,具体内容如下

用最近所学的知识点实现自动登录,主要有:

1、Filter过滤器

2、session & cookie

一、需求分析

二、准备工作

1. 项目目录

2. 导入相应的jar包

三、代码实现

1. 搭建环境

1.1 搭建数据库、数据库表

数据库【user】,数据库表【t_user】

1.2 搭建页面

登录页面【login.jsp】

<body>

 <form action="LoginServlet" method="post">
  账号:<input type="text" name="username"><br>
  密码:<input type="password" name="password"><br>
  <input type="checkbox" name="auto_login">自动登录<br>
  <input type="submit" value="登录">
 </form>

</body>

首页【index.jsp】
注意:导入<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<body>
 这是首页,
 <c:if test="${not empty userBean }">
  欢迎你,${userBean.username }
 </c:if>
 <c:if test="${empty userBean }">
  你好,请登录!
 </c:if>

</body>

2. 登录servlet代码【LoginServlet.java】

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  try {
   String userName = request.getParameter("username");
   String password = request.getParameter("password");
   String autoLogin = request.getParameter("auto_login");

   UserBean user = new UserBean();
   user.setUsername(userName);
   user.setPassword(password);

   UserDao dao = new UserDaoImpl();
   UserBean userBean = dao.login(user);

   if(userBean != null) {
    //成功了,进入首页

    request.getSession().setAttribute("userBean", userBean);
    response.sendRedirect("index.jsp");
   }else {
    //不成功
    request.getRequestDispatcher("login.jsp").forward(request, response);
   }
  } catch (SQLException e) {

   e.printStackTrace();
}

3. 过滤器filter代码【AutoLoginFilter.java】

实现思路:

1、先判断session是否有效,如果有效,就不用取cookie了,直接放行;
2、如果session失效了,那么就取cookie。

a. 取出cookie的值,然后完成登录;
b. 把这个用户的值存储到session中;
c. 放行。

public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {

  try {
   HttpServletRequest request = (HttpServletRequest) req;

   //先判断,session中还有没有userBean
   UserBean userBean = (UserBean) request.getSession().getAttribute("userBean");
   //有---session有效
   if(userBean != null) {
     chain.doFilter(request, response);
   }else {//session失效了----看cookie

    //1.来请求的时候,先从请求里面取出cookie,但是cookie里有很多的key-value
    Cookie[] cookies = request.getCookies();
    //2.从一堆的cookie里面找出以前给浏览器发的那个cookie
    Cookie cookie = CookieUtil.findCookie(cookies, "auto_login");

    //第一次登录
    if(cookie == null) {
     chain.doFilter(request, response);
    }else {//不是第一次登录
     String value = cookie.getValue();
     String username = value.split("#")[0];
     String password = value.split("#")[1];

     //完成登录
     UserBean user = new UserBean();
     user.setUsername(username);
     user.setPassword(password);

     UserDao dao = new UserDaoImpl();
     userBean = dao.login(user);

     //将session值存到域中,方便下一次未过期前还可以用
     request.getSession().setAttribute("userBean", userBean);

     chain.doFilter(request, response);
    }    

   }

  } catch (Exception e) {
   e.printStackTrace();
   chain.doFilter(req, response);
  }
 }

4. 其他代码

4.1 方法findCookie()

作用:从一堆的cookie里面找出以前给浏览器发的那个cookie
【CookieUtil.java】

public class CookieUtil {

 public static Cookie findCookie(Cookie[] cookies,String name) {
  if(cookies != null) {
   for(Cookie cookie: cookies) {
    if(name.equals(cookie.getName())) {
     return cookie;
    }
   }
  }
  return null;
 }
}

4.2 Bean类

【UserBean.java】

public class UserBean {

 private int id;
 private String username;
 private String 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;
 }

}

4.3 UserDao & UserDaoImpl

UserDao.java

public interface UserDao {
 /**
  * 执行登录,并且返回该用户所有的信息
  * @param user  执行登录的用户信息
  * @return
  */
 UserBean login(UserBean user) throws SQLException;
}

UserDaoImpl.java

public class UserDaoImpl implements UserDao {

 @Override
 public UserBean login(UserBean user) throws SQLException {

  QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
  String sql = "select * from t_user where username = ? and password = ?";
  return runner.query(sql, new BeanHandler<UserBean>(UserBean.class),user.getUsername(),user.getPassword());

 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JavaWeb使用Cookie模拟实现自动登录功能(不需用户名和密码)

    其中包含两个jsp文件,分别为login.jsp和index.jsp 代码如下: login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

  • JavaWeb实现自动登录功能

    本文实例为大家分享了JavaWeb实现自动登录功能的具体代码,供大家参考,具体内容如下 自动登录是通过存储cookie值来实现的. 工程目录如下: login.jsp: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML

  • JavaWeb开发使用Cookie创建-获取-持久化、自动登录、购物记录、作用路径

    1.cookie是啥?随手百度了网友的说说 简单的说,Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,当下次你再光临同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你. 2.cookie在哪里? 3.cookie可以删除吗? 4.cookie实现原理 第一次请求浏览器,在浏览器的cookie存储区,没有co

  • JavaWeb实现简单的自动登录功能

    本文实例为大家分享了JavaWeb实现简单的自动登录功能的具体代码,供大家参考,具体内容如下 用最近所学的知识点实现自动登录,主要有: 1.Filter过滤器 2.session & cookie 一.需求分析 二.准备工作 1. 项目目录 2. 导入相应的jar包 三.代码实现 1. 搭建环境 1.1 搭建数据库.数据库表 数据库[user],数据库表[t_user] 1.2 搭建页面 登录页面[login.jsp] <body> <form action="Logi

  • Yii2框架实现登录、退出及自动登录功能的方法详解

    本文实例讲述了Yii2框架实现登录.退出及自动登录功能的方法.分享给大家供大家参考,具体如下: 自动登录的原理很简单.主要就是利用cookie来实现的 在第一次登录的时候,如果登录成功并且选中了下次自动登录,那么就会把用户的认证信息保存到cookie中,cookie的有效期为1年或者几个月. 在下次登录的时候先判断cookie中是否存储了用户的信息,如果有则用cookie中存储的用户信息来登录, 配置User组件 首先在配置文件的components中设置user组件 'user' => [ '

  • 详解java实现简单扫码登录功能(模仿微信网页版扫码)

    java实现简单扫码登录功能 模仿微信pc网页版扫码登录 使用js代码生成qrcode二维码减轻服务器压力 js循环请求服务端,判断是否qrcode被扫 二维码超时失效功能 二维码被扫成功登录,服务端产生sessionId,传到页面使用js保存cookie 多线程 生成qrcode相关js jquery.qrcode.js 代码 页面div <div class="pc_qr_code"> <input type="hidden" id="

  • Python使用selenium实现网页用户名 密码 验证码自动登录功能

    好久没有学python了,反正各种理由吧(懒惰总会有千千万万的理由),最近网上学习了一下selenium,实现了一个简单的自动登录网页,具体如下. 1.安装selenium: 如果你已经安装好anaconda3,直接在windows的dos窗口输入命令安装selenium: python -m pip install --upgrade pip 查看版本pip show selenium 2.接着去http://chromedriver.storage.googleapis.com/index.

  • spring security实现下次自动登录功能过程解析

    这篇文章主要介绍了spring security实现记住我下次自动登录功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.原理分析 第一次登陆时,如果用户勾选了readme选项,登陆成功后springsecurity会生成一个cookie返回给浏览器端,浏览器下次访问时如果携带了这个cookie,springsecurity就会放行这次访问. 二.实现方式 2.1 简单实现方式 (1) 在springsecurity的配置文件中,http节

  • SpringBoot 配合 SpringSecurity 实现自动登录功能的代码

    自动登录是我们在软件开发时一个非常常见的功能,例如我们登录 QQ 邮箱: 很多网站我们在登录的时候都会看到类似的选项,毕竟总让用户输入用户名密码是一件很麻烦的事. 自动登录功能就是,用户在登录成功后,在某一段时间内,如果用户关闭了浏览器并重新打开,或者服务器重启了,都不需要用户重新登录了,用户依然可以直接访问接口数据 作为一个常见的功能,我们的 Spring Security 肯定也提供了相应的支持,本文我们就来看下 Spring Security 中如何实现这个功能. 一.加入 remembe

  • Spring Security基于散列加密方案实现自动登录功能

    目录 前言 一. 自动登录简介 1. 为什么要自动登录 2. 自动登录的实现方案 二. 基于散列加密方案实现自动登录 1. 配置加密令牌的key 2. 配置SecurityConfig类 3. 添加测试接口 4. 启动项目测试 三. 散列加密方案实现原理 1. cookie的加密原理分析 2. cookie的解码原理分析 3. 自动登录的源码分析 3.1 令牌生成的源码分析 3.2 令牌解析的源码分析 前言 在前面的2个章节中,一一哥 带大家实现了在Spring Security中添加图形验证码

  • java web实现自动登录功能

    本文实例为大家分享了java web实现自动登录功能的具体代码,供大家参考,具体内容如下 主要思路就是:当用户访问网站的首页时,浏览器端会先检擦浏览器中存在的cookie中是否又登录的用户的用户名,如果有,则直接跳转至用户登录好的界面,如果没有,则重定向至登录界面,在服务器端创建该用户登录的cookie,响应时,将创建的cookie返回至浏览器端保存. 一.用户访问首页时检查cookie是否存在. package ahpudong.com; import java.io.IOException;

随机推荐