jsp使用cookie自动登录

Login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
      登录
  
  
  
      
账号:
密码:
有效期: 30天内失效
      

welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    My JSP 'welcome.jsp' starting page
    
    
    
        
    
    
    

  
  
  
    

30天内自动登陆


if test="${sessionScope.account == null}"> 游客! 登录 if> if test="${sessionScope.account != null}"> 欢迎回来,${sessionScope.account } 注销 if>

User,UserDao,DBHelper同之前

LoginServlet

package com.cn.servlet;

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;
import javax.servlet.http.HttpSession;

import com.cn.dao.UserDao;

public class LoginServlet extends HttpServlet {

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

        this.doPost(request, response);
    }

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

        request.setCharacterEncoding("utf-8");
        HttpSession session = request.getSession();
        String account = request.getParameter("account");
        String password = request.getParameter("password");
        UserDao userDao = new UserDao();
        Boolean user = userDao.queryUser(account, password);
        if(user){
            request.getSession().setAttribute("account", account);
            if("true".equals(request.getParameter("cookie"))){  
                Cookie cookie = new Cookie("cookie",account+":"+password);  
                cookie.setPath(request.getContextPath());  
                cookie.setMaxAge(3600*24*30);  
                response.addCookie(cookie);  
            }  
            response.sendRedirect("welcome.jsp");
        }else{
            response.setContentType("text/html;charset=utf-8");
            PrintWriter pw = response.getWriter();
            pw.print("");
        }
        
        
    }
}

InvalidateServlet

package com.cn.servlet;

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;
import javax.servlet.http.HttpSession;

public class InvalidateServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        this.doPost(request, response);
    }

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

          if(request.getSession(false)!=null){  
                request.getSession().invalidate();  
      
                //删除自动登录 cookie  
                Cookie cookie = new Cookie("cookie", "");  
                cookie.setPath(request.getContextPath());  
                cookie.setMaxAge(0);  
                response.addCookie(cookie);  
            }  
            response.sendRedirect("welcome.jsp");  
    }
}

CookieFilter

package com.cn.filter;

import java.io.IOException;
import java.sql.SQLException;

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;

import com.cn.dao.UserDao;
import com.cn.pojo.User;

public class CookieFilter implements Filter {  
    public void doFilter(ServletRequest request, ServletResponse response,  
            FilterChain chain) throws IOException, ServletException {  
        HttpServletRequest req = (HttpServletRequest) request;  
        HttpServletResponse resp = (HttpServletResponse) response;  

        //1.只有未登录的用户才能自动登陆  
        if(req.getSession(false)==null || req.getSession().getAttribute("account")==null){  
              
            //2.只有带了自动登陆cookie的用户才能自动登陆  
            Cookie [] cs = req.getCookies();  
            Cookie findC = null;  
            if(cs!=null){  
                for(Cookie c : cs){  
                    if("cookie".equals(c.getName())){  
                        findC = c;  
                        break;  
                    }  
                }  
            }  
              
            if(findC!=null){  
                //3.自动登录Cookie中保存的用户名密码都需要是正确的才能自动登陆  
                String account = findC.getValue().split(":")[0];  
                String password= findC.getValue().split(":")[1];  
                UserDao userDao = new UserDao();
                Boolean user = userDao.queryUser(account, password);
                if(user){  
                    req.getSession().setAttribute("account", account);  
                }  
            }  
        }  
        //无论是否自动登陆,都放行资源  
        chain.doFilter(request, response);  
    }

    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        
    }  
}  

 web.xml


  jspT2
  
    This is the description of my J2EE component
    This is the display name of my J2EE component
    LoginServlet
    class>com.cn.servlet.LoginServletclass>
  
  
    This is the description of my J2EE component
    This is the display name of my J2EE component
    InvalidateServlet
    class>com.cn.servlet.InvalidateServletclass>
  

  
    LoginServlet
    /LoginServlet
  
  
    InvalidateServlet
    /InvalidateServlet
  
  
      CookieFilter
      class>com.cn.filter.CookieFilterclass>
  
  
      CookieFilter
      /*
  
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  

 

转载于:https://www.cnblogs.com/Vito-Yan/p/7281853.html

你可能感兴趣的:(jsp使用cookie自动登录)