了解cookie
我们在浏览器进行操作的时候,有时候会在我们的浏览器中留下cookie数据,他不同于session域对象,cookie对象有这自己的生命周期,只要生命周期还在,那么cookie就不会消失,具体session和cookie的不同:
1)存储的位置不同
Cookie存储在浏览器端
Session存储在服务器端:session携带cookie名称jsessionid存在浏览器端存的
2)存储数据类型不一样
Cooike的构造方法:
public Cooike(String name,String value):cookie只能存储String类型
HttpSession.setAttribute(String name,Object value):可以存储任意类型
3)存储的数据大小是否有限制
Cookie在浏览器端是有限制的,一个站点下的cookie数据有限制的;
HttSession可以不断的设置数据,没有限制

这张图就可以看到cookie的创建时间和到期时间,生命周期是一个月.
自动登录
在了解完cookie后,可以开始进行自动登录的操作了,我们可以通过获取到浏览器中的cookie,来获取到自动登录的账户的密码账户,然后让他进行自动登录,不需要进行账户密码的输入.
那么首先要在前端,当我们勾选了自动登录后,让我们的后端java吧此次登录的账户密码添加到浏览器中的cookie中:

<input type="checkbox" name="autolog" value="auto"> 自动登录

勾选后,autolog的值就为auto了,那么后端读取到名字为autolog的值,如果为auto就代表了自己勾选了账户密码.接下来进行后端的操作:

    public void log(HttpServletRequest request, HttpServletResponse response) throws IOException {HttpSession session1 = request.getSession();session1.invalidate();String username = request.getParameter( "username" );String password = request.getParameter( "password" );String autolog = request.getParameter( "autolog" );String rpassword = MD5Utils.md5( password );System.out.println( "前端输入的用户名是" + username );NewServiceDao newServiceDao = new NewServiceDaoImpl();User user = newServiceDao.logService( username, rpassword );System.out.println( user );if (user != null) {if (user.getState() == 1) {HttpSession session = request.getSession();session.setAttribute( "user", user );if (autolog.equals( "auto" )) { //读取数据是否为auto,判断是否要将数据添加String count = username + "=" + rpassword;//注意,cookie的数据只能存储字符串类型,不可以添加object,所以我们自己规定格式          //用等号来分割账户和密码count = URLEncoder.encode( count, "utf-8" );//为了防止被人看到账户密码,给他进行转换格式的添加,并且防止了中文乱码Cookie auto = new Cookie( "auto", count );//新建一个cookie对象,cookie对象的名字为auto,值为刚刚拼接的账户密码的字符串auto.setMaxAge( 60 * 60 * 24 * 30 );//设置cookie对象的生命周期response.addCookie( auto );//将此次cookie对象添加到浏览器中} else {Cookie auto = new Cookie( "auto", "" );auto.setMaxAge( 0 );//生命周期为0意思是删除cookieresponse.addCookie( auto );}response.sendRedirect( request.getContextPath() + "/jsp" );} else {HttpSession session = request.getSession();session.setAttribute( "user", user );String s = JiHuo.jiHuo();MailUtils.sendMail( user.getEmail(), s, "激活码" );session.setAttribute( "codee", s );response.sendRedirect( request.getContextPath() + "/jsp/zhong.jsp" );}}}

这次操作后,我们的cookie对象已经添加到浏览器中了,我们可以去看看

可以看到名字为auto的cookie,他的生命周期还有内容,现在就要去让他去进行自动登录了.
首先写一个过滤器,当我们点击登录,或者网址输入登录界面的时候,直接让他进行自动登录.

@WebFilter(value = "/jsp/login.jsp",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})
//DispatcherType.REQUEST地址栏直接访问     DispatcherType.FORWARD 请求转发
public class AutoFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("初始化了");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest request1=(HttpServletRequest) request;HttpServletResponse response1=(HttpServletResponse)response;Cookie[] cookies = request1.getCookies();//获取网页中的全部cookie对象if (cookies!=null){//判断是否为空String value=null;for (Cookie cookie:cookies){    //遍历全部的cookie对象if (cookie.getName().equals( "auto" )){//找到名字为auto的cookie对象value = cookie.getValue();//读取到他的value值}}if (value!=null){//如果value值不为空,则代表有名字为这个的cookie值value= URLDecoder.decode( value,"utf-8" );//吧格式转换回来String[] split = value.split( "=" );//因为我们规定了用等号切割账户密码,所以获取切割后的数组String username = split[0];//账户String password = split[1];//密码NewServiceDao serviceDao = new NewServiceDaoImpl();User user = serviceDao.logService( username, password );//获取到user对象if (user!=null){HttpSession session = request1.getSession();session.setAttribute( "user",user );//吧user对象存储进域对象,并且跳转到登录后的界面response1.sendRedirect( request1.getContextPath()+"/jsp" );}}else{//如果不是,则放行chain.doFilter( request1,response1 );}}else{//如果不是,则放行chain.doFilter( request1,response1 );}}@Overridepublic void destroy() {System.out.println("自动登录器销毁");}
}

过滤器的原理:
头部的@WebFilter里,value值是在那个界面会进行过滤,比如现在过滤器中value = “/jsp/login.jsp”,则代表当在网页为/jsp/login.jsp的网页中的时候,会进入过滤器,进行操作,chain.doFilter(request,response)的意思是进行放行操作,让程序走自己该走的地方,写完这些后,当我们已经有了cookie对象名字为auto的时候,让他进行自动登录
退出账户
现在如果我想切换账户,但是因为cookie对象存在,所以我们现在除非手动删除cookie,否则不管咋样,进导登录界面后,都会自动登录了,那么为了不去手动删除,而是通过点击退出,来让账户退出,则我们需要写一个方法:

    public void change(HttpServletRequest request, HttpServletResponse response) throws IOException {Cookie[] cookies = request.getCookies();if (cookies != null) {for (Cookie cookie : cookies) {if (cookie.getName().equals( "auto" )) {//获取这个名字为auto的cookieSystem.out.println("进来了");cookie.setMaxAge(0);//生命周期给他赋为0则代表删除了他response.addCookie( cookie );HttpSession session = request.getSession();session.invalidate();//清空session域response.sendRedirect( request.getContextPath()+"/jsp/login.jsp" );}}}else{try {request.getRequestDispatcher( "/jsp/login.jsp" ).forward( request,response );} catch (ServletException e) {e.printStackTrace();}}}

这样,就吧cookie对象为auto的删除掉了

如何实现网页的自动登录相关推荐

  1. 校园网网页认证自动登录

    校园网网页认证自动登录 python+定时任务 实现校园网自动登录 一.总览 二.具体步骤 python+定时任务 实现校园网自动登录 说明:因为我们学校校园网登陆需要网页认证,且每天3点左右会自动断 ...

  2. Vue 微信网页授权自动登录

    项目需求:微信公众号(服务号)访问网页,第一次登录后,再次访问默认自动登录,执行退出后,可重新手动登录. 具体实现如下: 微信公众号 - 设置 - 公众号设置 - 功能设置 - 配置网页授权域名,用于 ...

  3. zju网页的自动登录和认证

    无线认证登录 学校无线采用的是认证登陆的方式,但是登录无线认证需要打开浏览器,有时候网页很难跳转,所以希望找到一种能够快速的登录的方式.最近自学python,发现requests模块可以达到这个目的, ...

  4. Android 实现网页账号自动登录

    我们希望实现这样的一个场景,当前账号已经在手机系统登录,然后我用手机自带的浏览器,登录手机的官网(比如华为手机的官网),这时候我不希望用户在浏览器里面再次登录. 要实现这个功能,需要服务端和客户端配合 ...

  5. uipath实现打开网页并自动登录扣扣邮箱并且跳转到写信页面

    一: 新建项目 1:右键项目[demo01]=>[add]=>[flowchart] 2:点击到Activities中 选择 [open browser]打开浏览器控件,根据提示输入相关信 ...

  6. 海康威视摄像头自带网页自动登录

    想要在自己开发的网站中,内嵌海康威视摄像头的网页,在求助官方之后实现了在后台自动登录的功能: 尝试使用iframe内嵌时,尝试了完美解决Chrome Cookie SameSite跨站限制中的各种方法 ...

  7. Python校园网定时自动登录-锐捷

    开始 搭了个树莓派连着校园网,但是校园网每天24点掉线,次日6点后才能连接,所以用Python写了个脚本,每天早上6点20执行一次,这样就不用每天手动登录了. 在写代码之前我们要先获取一些参数,而用这 ...

  8. vbs实现web自动登录网站

    背景:我们的电脑需要开机登录一个网址输入信息才能够上网,这样对远程的话,很不友好.因此查了查vbs可以进行开机在网页上自动登录,实现开机联网.(不同的网页使用的登录方法是不同的,下面的仅作参考) 环境 ...

  9. python网站自动答题_python自动登录网站答题-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 cookie实现 自动 登录 ...

  10. c#自动登录网页,浏览页面

    需求:客户的数据同时存在在另外一个不可控的系统中,需要和当前系统同步. 思路:自动登录另外一个系统,然后抓取数据,同步到本系统中. 技术点:模拟用户登录:保存登录状态:抓取数据 程序非常简单: /// ...

最新文章

  1. UIAlertAction的用法
  2. linux class device
  3. mysql 集群分区_mysql 集群与分区
  4. SQL Tuning Advisor使用实例
  5. markdown语法简明笔记
  6. php 去除重复的值,php数组怎么去除重复值?
  7. 福建省c语言上机题库,二级c语言上机题库
  8. Windows下快速删除大量文件
  9. 用CSS实现对话气泡框!
  10. 【降维打击】解决加密视频录屏问题
  11. Qt Lmms 优秀的开源软件学习
  12. MCU学习笔记_IO引脚复用和映射
  13. TOC和常识管理 读高德拉特《关键链》
  14. win10系统禁用笔记本自带键盘
  15. CS61A Lab 13
  16. 使用PMML部署机器学习模型
  17. [原创]浅谈我们应招聘应届毕业生做测试吗?
  18. 【田亮曝Cindy趣事】
  19. XYT-OTN2800-X
  20. 《AI算法工程师手册》

热门文章

  1. java实现生日提醒_生日提醒功能-SQL查询语句在Java中肿么运用?
  2. mysql表join和union_mysql – 使用JOIN和UNION组合来自不同表的记录
  3. 实现手机扫描二维码登录
  4. 韩信点兵问题(中国剩余定理)
  5. Learning Git Branching笔记总结
  6. 3、switch -项目7-定期存款利息计算器
  7. discuz 论坛配置 QQ/163 网易邮箱
  8. circos 可视化手册-plots 篇
  9. 已知从1970年1月1日0分0秒到目前的总秒数计算当前时间
  10. 微信小程序报错“对应的服务器证书无效”