Servlet cookie自动登录

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 {
	}
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值