filter 过滤器实现自动登录功能


过滤器内容

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) arg0;

        //得到cookies
        Cookie[] cookies= req.getCookies();
        String username = "";
        String password = "";
        for(int i=0;cookies!=null&&i<cookies.length;i++){

                  //如果找到了先前登录存储的cookie就获得账号密码
            if("user".equals(cookies[i].getName())){
                String[] arr = cookies[i].getValue().split("&");
                username = arr[0];
                password = arr[1];
            }
        }

        //根据账号密码从数据库查找

        User u = new UserService().findUser(username, password);
        if(u!=null){

        //找到了user就自动生成session,并且如果是在登录界面。就自动跳到index.jsp

            req.getSession().setAttribute("user", u);
            String url = req.getRequestURI().toString();
            if(url.equals(req.getContextPath()+"/login.jsp")){
                req.getRequestDispatcher("/index.jsp").forward(req, arg1);
            }
        }
        arg2.doFilter(req, arg1);
    }


登录servlet

public class LoginServlet extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("username");
        String pwd = request.getParameter("password");

        UserService service = new UserService();
        User u = service.findUser(name,pwd);
        if(u!=null){
            String auto = request.getParameter("login");

            if(auto!=null){
                Cookie cookie = new Cookie("user", name+"&"+pwd);
                cookie.setPath("/");
                cookie.setMaxAge(60*60*24);
                response.addCookie(cookie);
            }

            request.getSession().setAttribute("user", u);
            request.getRequestDispatcher("/index.jsp").forward(request, response);

        }else{
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    doGet(request, response);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值