Java Web实现自动登陆功能

Java对自动登陆功能的简单实现,仅用到了servlet和一个filter。第一次写博文,如有不足的地方,敬请指正,谢谢。

登陆界面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
 <title>登陆页面</title>
  </head>
  <body>
     <form action="<%=request.getContextPath()%>/LoginAction" method="post">
      用户名:<input type=“text” name="name" > <br>
      密    码:<input type=“password” name="passwd" > <br>
     保存时间<select name="savetime">
      <option value="7">一    周</option>
      <option value="30">一个月</option>
     </select><br>
      <input type="submit" value="登陆">
    </form>
  </body>
</html>

填写完用户名和密码后选择保存时间。这里就没有设置不保存选项,默认保存时间是一周。

LoginBiz类,负责校验用户输入的用户名和密码是否正确。

package com.autologin;

public class LoginBiz  {
  static  boolean isValid(String name,String passwd){
  if(name.equals("admin")&&passwd.equals("1234")){
   return true;
  }else{
   return false;
  }
 }
}

本类为LoginAction提供服务,相当于Biz层。

LoginAction类,负责页面跳转。

package com.autologin;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginAction extends HttpServlet {
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String name=request.getParameter("name");
  String passwd=request.getParameter("passwd");
  String savetimeString=request.getParameter("savetime");

  if(new LoginBiz().isValid(name, passwd)){
   int savetime=Integer.parseInt(savetimeString)*24*3600;
   Cookie loginInfo=new Cookie("loginInfo",name+","+passwd);
   loginInfo.setMaxAge(savetime);
   response.addCookie(loginInfo);
   response.sendRedirect("/TestWeb/success.jsp");
  }else{
   response.sendRedirect("/TestWeb/error.jsp");
  }
 }

}

用户第一次登陆时会调用此servlet来验证用户信息和设置cookie。根据登陆时的设置的时间计算出秒数,然后把保存有用户名和密码的Cookie(loginInfo)add到客户端。为了方便用户名和密码设置在了一个cookie中,用","隔开。(真正项目中,当然要给密码做加密处理。)

如果第一次成功登陆,再次请求login.jsp时即可直接跳转到success页面,无需再次输入用户名和密码,这里就用到了下面这个Filter。

CheckFilter类

package com.autologin;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CheckFilter implements Filter {

 public void destroy() {

 }

 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
  HttpServletRequest request=(HttpServletRequest)arg0;
  HttpServletResponse response=(HttpServletResponse)arg1;
  Cookie[] cookies=request.getCookies();
  String name = "";
  String passwd = "";
  if(cookies!=null){
   for(Cookie coo:cookies){
    if(coo.getName().equals("loginInfo")){
     String[] info=coo.getValue().split(",");
     name=info[0];
     passwd=info[1];
    }
   }
  }
  //如果在cookie中得到保存的用户名和密码,验证正确后,直接转到success页
  if(new LoginBiz().isValid(name, passwd)){
   response.sendRedirect("/TestWeb/success.jsp");
  }else{
   arg2.doFilter(request, response);
  }

 }
 public void init(FilterConfig arg0) throws ServletException {

 } 

}

当用户请求login.jsp页面时,首先会通过此Filter,这时会尝试从请求信息的Cookie中得到用户名和密码,如果是第一次登陆没有设置过Cookie,那么会把登陆请求交给LoginAction处理。如果之前成功登陆过,就已保存有Cookie,获取到正确的用户名和密码并验证成功(安全起见,这里再次验证)后直接跳转到success页面,此时就不经过LoginAction了。
配置文件如下:

<servlet>
    <servlet-name>LoginAction</servlet-name>
    <servlet-class>com.autologin.LoginAction</servlet-class>
  </servlet>
  <filter>
   <filter-name>CheckFilter</filter-name>
   <filter-class>com.autologin.CheckFilter</filter-class>
  </filter>

  <servlet-mapping>
    <servlet-name>LoginAction</servlet-name>
    <url-pattern>/LoginAction</url-pattern>
  </servlet-mapping>
  <filter-mapping>
   <filter-name>CheckFilter</filter-name>
   <url-pattern>/login.jsp</url-pattern>
</filter-mapping>

第一次登陆成功后,chrome保存的Cookie信息

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

(0)

相关推荐

  • Java 使用Filter实现用户自动登陆

    前言 安全,是如今互联网行业特别注重的一个话题.在大家学习了JavaWeb之后呢,发现一个网站应该有安全限制,例如:如果用户未登录,则不允许相关CRUD操作,而如果我们在后台的每一个Servlet都进行判断,将降低系统效率,也会出现大量代码冗余.因此,就有了Filter过滤器. 1.什么是Filter Filter,过滤器,是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修

  • Java使用OCR技术识别验证码实现自动化登陆方法

    如论实施敏捷的团队,或者实施 DevOps 的团队,通过自动化测试提高测试效率和软件质量都是其共同的选择.UI 自动化测试是自动化化测试当中的重要环节,在 UI 自动化测试中验证码识别一直是令自动化测试人员头疼的问题.今年来随着 OCR 技术.人工智能计算机视觉(AI Computer Vision)技术的成熟与使用大大提高了验证码的识别成功率.从而使得自动识别验证码自动化登陆目标系统成为可能. 本Chat 主要内容包括: OCR 技术与人工智能计算机视觉(AI Computer Vision)

  • Java Web实现session过期后自动跳转到登陆页功能【基于过滤器】

    本文实例讲述了Java Web实现session过期后自动跳转到登陆页功能.分享给大家供大家参考,具体如下: 通过过滤器的方式实现 session过期后自动跳转到登陆页 过滤器只在与servlet规范2.3版兼容的服务器上有作用.如果你的Web应用需要支持旧版服务器,就不能使用过滤器. 一.建立基本过滤器 建立一个过滤器涉及下列五个步骤: 1)建立一个实现Filter接口的类SessionFilter .这个类需要三个方法,分别是:doFilter.init和destroy.doFilter方法

  • Java Web实现自动登陆功能

    Java对自动登陆功能的简单实现,仅用到了servlet和一个filter.第一次写博文,如有不足的地方,敬请指正,谢谢. 登陆界面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>登陆页面</title> </head> <body>

  • java web实现自动登录功能

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

  • java web实现自动登录

    本文实例为大家分享了java web实现自动登录的具体代码,供大家参考,具体内容如下 实现思路 1.在登录的 api 或 servlet中验证用户名密码 2.如果验证成功,则把该用户信息存在 服务器 的 session 缓存中,并把 可以表示该用户的 信息存在 cookie中返回.例如: //存储 session request.getSession().setAttribute("userBean", queryUser); Cookie cookie = new Cookie(&q

  • Spring Security实现自动登陆功能示例

    当我们在登录像QQ邮箱这种大多数的网站,往往在登录按键上会有下次自动登录这个选项,勾选后登录成功,在一段时间内,即便退出浏览器或者服务器重启,再次访问不需要用户输入账号密码进行登录,这也解决了用户每次输入账号密码的麻烦. 接下来实现自动登陆. applicatio.properties配置用户名密码 spring.security.user.name=java spring.security.user.password=java controller层实现 @RestController pub

  • java web中图片验证码功能的简单实现方法

    用户在注册网站信息的时候基本上都要数据验证码验证.那么图片验证码功能该如何实现呢? 大概步骤是: 1.在内存中创建缓存图片 2.设置背景色 3.画边框 4.写字母 5.绘制干扰信息 6.图片输出 废话不多说,直接上代码 package com.lsgjzhuwei.servlet.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Buffer

  • Java Web 实现QQ登录功能一个帐号同一时间只能一个人登录

    对于一个帐号在同一时间只能一个人登录,可以通过下面的方法实现: 1 .在用户登录时,把用户添加到一个ArrayList中 2 .再次登录时查看ArrayList中有没有该用户,如果ArrayList中已经存在该用户,则阻止其登录 3 .当用户退出时,需要从该ArrayList中删除该用户,这又分为三种情况 ① 使用注销按钮正常退出 ② 点击浏览器关闭按钮或者用Alt+F4退出,可以用JavaScript捕捉该页面关闭事件, 执行一段Java方法删除ArrayList中的用户 ③ 非正常退出,比如

  • java web response提供文件下载功能的实例讲解

    webapp项目的结构如下图: download.html文件的内容如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>资源下载:</h1> <p> 单纯地使用a标签时,只有浏览器不能解析的文

  • java web实现邮箱发送功能

    本文实例为大家分享了java web实现邮箱发送功能的具体代码,供大家参考,具体内容如下 1.邮箱协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMTP协议.SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议. 2.需要使用的jar包 下载地址 3.代码实现 package com.bhkj.ShoppingMall

  • Servlet+JavaBean+JSP打造Java Web注册与登录功能

    采用Java Web所实现的MVC结构图如下,其中控制器部分采用Servlet来实现,模型部分采用JavaBean来实现,而大部分的视图采用Jsp页面来实现. 思想基础 JSP+JavaBean两层结构工作原理应该是比较熟悉的,也比较好理解. 但是有一点必须要清楚就是用户通过浏览器来发送网页的请求,此请求到达服务器后在服务器端查找对应的网页,如果是首次请求(第二次就不用解释执行了),对于JSP来说要生成Servlet,然后通过Servlet引擎来执行 Servlet,把调用JavaBean的结果

  • Java web实现简单注册功能

    今天写了一个注册功能,没有用任何框架!发现不会写了,中间查了好几次百度.不过还是顺利的写完并且跑起来了.在这里记录一下.我认为有时候写这些代码还是对我们理解框架很有帮助的,因为框架也是按照这些,对基础进行封装后得到的. 首先是环境的搭建 1.环境的搭建:我用的jdk1.8 tomcat 7.0 eclipse neno 数据库用的是mysql. 2.创建一个动态的web工程(这个应该都会的,这里就不再截图说明了) 3.数据库的创建 我这里创了一个名为t_t_user 的表,里面的字段也很简单,就

随机推荐