Servlet Cookie实现自动登录 package cn.itcast.javaee.filter.cases; import java.io.IOException; import java.net.URLDecoder; 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 AutoLoginFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { //强转 HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; //获取客户端浏览器中的所有cookie Cookie[] cookies = request.getCookies(); //如果客户端浏览器有cookie if(cookies!=null && cookies.length>0){ //记录cookie Cookie userCookie = null; //迭代 for(Cookie c : cookies){ //查找名为"userCookie"的cookie if("userCookie".equals(c.getName())){ //找到了 userCookie = c; //退出 break; } } //如果找到了 if(userCookie!=null){ //取出cookie中的value值 String usernameAndPassword = userCookie.getValue(); //按"_"截断 String[] both = usernameAndPassword.split("_"); //获取用户名 String username = both[0]; //因为用户名已编码,需要解码 username = URLDecoder.decode(username,"UTF-8"); //假设用户名和密码验证成功,将用户名绑定到HttpSession中 request.getSession().setAttribute("username",username); //放行请求 chain.doFilter(request,response); //如果未到了 }else{ //放行请求 chain.doFilter(request,response); } //如果客户端浏览器暂无cookie }else{ //放行请求 chain.doFilter(request,response); } } public void init(FilterConfig filterConfig) throws ServletException { } }