//反复实验的时候注意数据库数据的更新

//将数据存储到cookie里面

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
     request.setCharacterEncoding("utf-8");
     HttpSession se = request.getSession();
     String username = request.getParameter("username");
     String password = request.getParameter("password");
     UserService ser=new UserService();
     User1 user=null;
     try {
        user=ser.login(username,password);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
     System.out.println("您好");
     if(user!=null){
         String autoLogin=request.getParameter("autoLogin");
         if(autoLogin!=null){
             System.out.println("0");
             Cookie cookie_username=new Cookie("cookie_username",username);
             Cookie cookie_password=new Cookie("cookie_password",password);
             System.out.println(username);
             System.out.println(password);
             //设置cookie持续化时间
             cookie_username.setMaxAge(60*10);
             cookie_password.setMaxAge(60*10);
             //设置路径
             cookie_username.setPath(request.getContextPath());
             cookie_password.setPath(request.getContextPath());
             //发送cookie
             response.addCookie(cookie_username);
             response.addCookie(cookie_password);
             System.out.println("0.1");
         }
         //非自动登录部分
         se.setAttribute("user", user);
         response.sendRedirect(request.getContextPath());
     }else{
         request.setAttribute("logininfo", "用户名密码错误");
         request.getRequestDispatcher("login.jsp").forward(request, response);
     }  
    }

//拦截器部分代码

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req=(HttpServletRequest)request;
        HttpServletResponse resp=(HttpServletResponse)response;
           HttpSession session = req.getSession();
           String cookie_username=null;
           String cookie_password=null;
           System.out.println("1");
           Cookie[] cookies = req.getCookies();
           if(cookies!=null){
                   for(Cookie cookie:cookies){
                      
                       if("cookie_username".equals(cookie.getName())){
                           cookie_username=cookie.getValue();
                       }
                       if("cookie_password".equals(cookie.getName())){
                           cookie_password=cookie.getValue();
                       }
                   }
           }
           System.out.println("3");
           
           if(cookie_username!=null&&cookie_password!=null){
               UserService ser = new UserService();
               User1 user=null;
               try {
                user=ser.login(cookie_username, cookie_password);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
               session.setAttribute("user", user);
               if(user!=null){
                   request.getRequestDispatcher("index.jsp").forward(req,resp);
               }
               
               
           }
            
            chain.doFilter(req, resp);
            System.out.println("5");
    }

//web.xml的配置

<filter>
    <display-name>Myservlet2</display-name>
    <filter-name>Myservlet2</filter-name>
    <filter-class>cn.jy.web.Myservlet2</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Myservlet2</filter-name>
    <url-pattern>/*</url-pattern>                              //注意  /*
  </filter-mapping>

自动登录(过滤器filter的应用)的更多相关文章

  1. 实现自动登录:Filter 实现思路和方式

    当你勾选(记住登录状态),用cookie保存用户名和密码.不勾选,cookie失效. 所有的页面都要经过autoLoginFilter.java 的过滤器,在这类中,必须要判断cookies不为nul ...

  2. JavaWeb 后端 <十二> 之 过滤器 filter 乱码、不缓存、脏话、标记、自动登录、全站压缩过滤器

    一.过滤器是什么?有什么? 1.过滤器属于Servlet规范,从2.3版本就开始有了. 2.过滤器就是对访问的内容进行筛选(拦截).利用过滤器对请求和响应进行过滤

  3. Filter自动登录

    Dao层略过 Domain略过 Service层过 Web层 Select逻辑 获取表单数据,Web-service--Dao返回用户信息 如果返回不为null否则,重定向到登录页面.则判断用户是否勾 ...

  4. Filter应用之-自动登录

    自动登录,是为了帮助用户多次使用这个网页时,不用再次输入用户名和密码就可以登录. 是指用户将用户的登录信息,人,保存到本地的文件中Cookie中. Name,value – 声明时 new Cooki ...

  5. cookies session filter 自动登录

    webxml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  6. 二十 Filter&自动登录功能

    Filter过滤器 过滤器,其实就是对客户端发出来的请求进行过滤,浏览器发出,然后服务器用Servelt处理.在中间就可以过滤,起到的是拦截的作用. 不仅仅作用于客户端请求,而且过滤服务器响应 作用: ...

  7. JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码

    一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...

  8. 过滤器Filter的使用(以登录为例子)

    使用过滤器步骤: (1)在web.xml文件中添加过滤器(以下例子是过滤多个请求) <!-- 用户登录过滤 --> <filter> <filter-name>lo ...

  9. JavaWeb 使用Filter实现自动登录

    思路 使用cookie存储账号.密码,使用Filter拦截,从cookie中取出账号.密码.若用户要注销|登出.不再想使用自动登录,将cookie的有效期设置为0即可. 浏览器可以查看Cookie,不 ...

随机推荐

  1. 机器学习简要笔记(五)——Logistic Regression(逻辑回归)

    1.Logistic回归的本质 逻辑回归是假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度上升/下降法来求解参数,从而实现数据的二分类. 1.1.逻辑回归的基本假设 ①伯努利分布:以抛硬币为例 ...

  2. (Python基础)2 or 3?

    对于大部分初学者来说,该选择Python2.x还是Python3.x?我想这个问题都是普遍初学者的疑问.我的回答当然是学Python3.x的啦.因为下面有段官方原话是这样子说的 ,大概意思呢就是Pyt ...

  3. 205. jetcache:你需要知道的小技巧

    [视频&交流平台] àSpringBoot视频:http://t.cn/R3QepWG à SpringCloud视频:http://t.cn/R3QeRZc à Spring Boot源码: ...

  4. Linux 查看内存使用情况

    1 . top  : 用于实时显示 process 的动态 PID:进程的ID USER:进程所有 PR:进程的优先级别,越小越优先被执 VIRT:进程占用的虚拟内 RES:进程占用的物理内 SHR: ...

  5. C#设计模式(4)——抽象工厂模式(Abstract Factory)

    简单工厂模式: 简单工厂模式的工厂类随着产品类的增加需要增加额外的代码 工厂方法模式: 工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性 但是在实际应用中,一个工厂不止会创建单 ...

  6. leetcode416

    class Solution { public boolean canPartition(int[] nums) { int sum=0; for (int num:nums) sum+= num; ...

  7. 记号一下selenium+Firefox自动下载的参数

    参考: https://blog.csdn.net/wxstar8/article/details/80782556 https://blog.csdn.net/xiaoguanyusb/articl ...

  8. TXLSReadWriteII2 读取数据

    TXLSReadWriteII2 按行读取数据(写得复杂了点,实际项目中的,可以自己简化) procedure TformMain.LoadGeneralObject(_type, _col, _ro ...

  9. Jquery中父,子页面之间元素获取及方法调用

    一.jquery 父.子页面之间页面元素的获取,方法的调用: 1. 父页面获取子页面元素: 格式:$("#iframe的ID").contents().find("#if ...

  10. SpringJDBC中jdbcTemplate 的使用

    一:定义 SpringJDBC是spring官方提供的一个持久层框架,对JDBC进行了封装,提供了一个JDBCTemplated对象简化JDBC的开发.但Spring本身不是一个orm框架,与hibe ...