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()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
相关文章
- 这篇文章主要介绍了JavaWeb实战之编写单元测试类测试数据库操作,文中有非常详细的代码示例,对正在学习javaweb的小伙伴们有很大的帮助,需要的朋友可以参考下...2021-04-22
- 这篇文章主要介绍了C#.NET实现网页自动登录的方法,以实例形式分析了C#实现点击自动登录的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 本文介绍了C#实现12306自动登录的方法,主要方法是捕获参数和url并补充参数,需要的朋友可以参考下...2020-06-25
基于localStorge开发登录模块的记住密码与自动登录实例
下面小编就为大家带来一篇基于localStorge开发登录模块的记住密码与自动登录实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
最近做项目遇到表单在输入后立即验证,而不是提交后再验证,在网上找了下资料,没有合适的,于是我自己动手写了一个,分享到脚本之家平台,供大家参考...2017-06-15- 这篇文章主要介绍了python3定位并识别图片验证码实现自动登录功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-29
- 这篇文章主要为大家详细介绍了JavaWeb实现学生信息管理系统第三篇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-15
- 这篇文章主要介绍了javaweb开发提高效率利器JRebel详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-18
- 这篇文章主要介绍了JavaWeb之会话技术案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-07-28
- 这篇文章主要给大家介绍了关于javaWeb如何实现随机图片验证码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
- 这篇文章主要为大家详细介绍了JavaWeb实现简单用户发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-15
- 这篇文章主要介绍了JavaWeb实现学生信息管理系统的第二篇,实现学生管理系统的查找和添加功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-15
利用Selenium添加cookie实现自动登录的示例代码(fofa)
这篇文章主要介绍了利用Selenium添加cookie实现自动登录的示例代码(fofa),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-08- 这篇文章主要为大家详细介绍了JavaWeb实现学生信息管理系统第一篇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-15
- 这篇文章主要为大家详细介绍了JavaWeb实现简单的自动登录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-16
- 今天带大家学习JavaWeb的相关知识,文章围绕着JavaWeb中请求转发和请求重定向的区别以及使用展开,文中有非常详细的介绍,需要的朋友可以参考下...2021-06-08
- 这篇文章主要为大家详细介绍了JavaWeb Servlet实现网页登录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-05
- 这篇文章主要为大家详细介绍了JavaWeb实现文件的上传与下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-07
Eclipse开发JavaWeb项目配置Tomcat的方法步骤
本文主要介绍了Eclipse开发JavaWeb项目配置Tomcat的方法步骤,首先介绍eclipse开发JavaWeb项目需要配置的相关环境,使用tomcat软件在本地搭建服务器,然后再在eclipse环境下配置tomcat,感兴趣的可以了解一下...2021-08-20- 这篇文章主要介绍了Servlet开发JavaWeb工程示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-07-17