JavaWeb实现简单的自动登录功能
程序员文章站
2023-02-20 08:02:11
本文实例为大家分享了javaweb实现简单的自动登录功能的具体代码,供大家参考,具体内容如下用最近所学的知识点实现自动登录,主要有:1、filter过滤器2、session & cookie一...
本文实例为大家分享了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()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。