您的位置:首页 > 其它

Servlet cookie自动登录

2014-03-26 02:50 267 查看
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 {
}
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: