算是今天的学习笔记吧。。。
在点击登录输入用户名和密码后,当验证用户名和密码都正确且有正确返回值时,在LoginSvl中创建一个cookie保存此用户名和密码:
String unamepwd = user.getUname()+","+user.getPwd();
Cookie cookie=new Cookie("unamepwd",unamepwd);
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);
创建一个过滤器,在下次登录时,当session中的user为空,则从cookie中获取上次保存的用户名密码,调用biz,通过biz调dao,验证cookie中保存的信息是否是否适用于此次登录,即验证数据库中密码或用户名是否改变,若改变,则清除此cookie。若没改变,则自动登录。
LoginFilter中的代码:
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response=(HttpServletResponse) resp;
if(request.getSession().getAttribute("user") == null){
Cookie loginCookie=getLoginCookie(request, "unamepwd");
if(loginCookie != null){
String[] unamepwds=loginCookie.getValue().split(",");
UserBiz bbiz =new UserBiz();
User uuser=bbiz.login(unamepwds[0], unamepwds[1]);
if(uuser != null){
request.getSession().setAttribute("user", uuser);
}else{
Cookie cookie=new Cookie(loginCookie.getName(),null);
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
}
chain.doFilter(request, response);
}
private Cookie getLoginCookie(HttpServletRequest request,String cookieName){
Cookie strRet = null;
if(request.getCookies() != null){
Cookie[] cookies = request.getCookies();
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
String cm = cookie.getName();
if(cm.equals(cookieName)){
strRet = cookie;
break;
}
}
}
return strRet;
}
注:filter需要在web.xml中做响应配置。其中<url-pattern></url-pattern>中只能写/*,否则不能自动登录。
最后要在点击退出按钮时,清除cookie,以免其他用户无法登录:
LoginOutSvl中代码:
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
request.getSession().invalidate();
Cookie loginCookie = getLoginCookie(request, "unamepwd");
Cookie cookie=new Cookie(loginCookie.getName(),null);
cookie.setMaxAge(0);
response.addCookie(cookie);
request.getRequestDispatcher("MainSvl").forward(request,response);
}
private Cookie getLoginCookie(HttpServletRequest request,String cookieName){
Cookie strRet = null;
if(request.getCookies() != null){
Cookie[] cookies = request.getCookies();
for(int i=0;i<cookies.length;i++){
Cookie cookie = cookies[i];
String cm = cookie.getName();
if(cm.equals(cookieName)){
strRet = cookie;
break;
}
}
}
return strRet;
}
分享到:
相关推荐
本文实例为大家分享了jsp cookie+session实现简易自动登录的具体代码,供大家参考,具体内容如下 关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。 如果设置了...
JAVA通过Session和Cookie实现网站自动登录的技术
java通过session和cookie实现网站的自动登录
jsp cookie+session实现简易自动登录.docx
JAVA通过Session和Cookie实现网站自动登录的技术.txt
主要介绍了PHP 实现超简单的SESSION与COOKIE登录验证功能,结合实例形式详细分析了PHP使用cookie与session实现登录验证的相关操作步骤与注意事项,需要的朋友可以参考下
主要介绍了PHP cookie,session的使用与用户自动登录功能实现方法,结合实例形式分析了php使用cookie与session进行数据存取以及实现自动登陆功能的相关操作技巧,需要的朋友可以参考下
本实例通过asp.net模拟登陆并且保存Session和Cookie,成功登陆前台或者后台.
主要实现勾选自动登录后, 哪怕服务器重启后session丢失,靠客户端COOKIE仍然正常登录并刷新COOKIE。点退出登录后COOKIE失效。 现为WEB,可改造为提供android 和ios下的httpclient保持长久登录状态的方式。
不需要填写用户名和密码自动登录系统,其实现思路使用cookie模拟浏览器自动登录,对cookie实现自动登录功能感兴趣的朋友一起学习吧
Servlet 实现用户自动登录 session cookie
Cookies的处理 作用 ...如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中. 案例 爬取雪球网中的新闻资讯数据:https://xueqiu.com/ #获取一个sessi
要实现记住密码自动登录的功能我们大多数据都是利用了客户端的cookies来实现,我们利用php也不例外,有需要的朋友可以参考一下。 php制作记住密码自动登录的解决思路,其实也就是对session,cookies的操作 一、检查...
WEB16_session&cookie。 案例一、记录用户的上次访问时间---cookie 案例二、实现验证码的校验----session。 1.服务器端向客户端发送一个Cookie 1)创建Cookie: Cookie cookie = new Cookie(String cookieName,...
本篇文章主要介绍了利用php实现一周之内自动登录存储机制(cookie、session、localStorage),可以实现一周之内免费登陆,感兴趣的小伙伴们可以参考一下。
纯servlet编写登陆功能,实现自动登陆、记住密码。展示了cookie和session的用法。注释详细,可以作为今后的参考
请分别使用cookie、session等至少三种方法实现 每种方法不少于三个页面 登录后每个页面打开均提示用户名,并根据用户种类不同,提示不同信息,普通用户提示“用户lanzhou”,管理员提示“管理员admin”。 普通用户:...