Cookie 实现免登陆和Session

01、 需求说明
完成用户登录功能
登录成功后跳到成功页面,显示用户名
登录失败可以跳回登录页面
登录成功后后续操作均能显示当前登录的用户名
02、完成代码

DologinServlet.java

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决中文乱码req.setCharaterEncoding("utf-8");//[1]接受页面(前台的页面)的数据String uname = req.getParameter("uname");String pwd = req.getParameter("pwd");String ch = req.getParameter("ch");//[2]数据的处理--连接数据库作比较返回结果boolean  flag=false;if("是下他".equals(uname)&&"123".equals(pwd)){flag=true;}//[3]根据返回的结果给用户做出响应if(flag){/**********Session实现欢迎xx登录***********///[A]获得session对象HttpSession session = req.getSession();//[B]把对应的值保存到session中session.setAttribute("uname",uname);/**********使用Cookie记住密码的操作***********///[1]申请卡片  填写卡片的信息//把uname 中文的字符串进行UTF-8格式的编码Cookie  cookie=new Cookie("u",URLEncoder.encode(uname, "utf-8"));Cookie  cookie2=new Cookie("p",pwd);//[2]规定卡片的使用规则//指定卡片的使用范围   --/  在当前服务器内都有效   /servlet04--只在当前项目中有效cookie.setPath("/");cookie2.setPath("/");//设置Cookie的有效的时间if("yes".equals(ch)){//勾选了记住我操作//设置cookie 有效的时间cookie.setMaxAge(60*60*24*10);cookie2.setMaxAge(60*60*24*10);}else{cookie.setMaxAge(0);cookie2.setMaxAge(0);}//[3]把卡片交给到用户手中resp.addCookie(cookie);resp.addCookie(cookie2);//登录成功resp.sendRedirect("/servlet04/success.jsp");}else{//登录失败req.setAttribute("msg","用户名和密码不匹配");req.getRequestDispatcher("/login.jsp").forward(req,resp);}
}

Login.jsp

<body><%String  uname="";String  pwd="";String  ch="";//获得所有本地Cookie 内容Cookie[] cookies = request.getCookies();if(cookies!=null){for(Cookie  c :cookies){if("u".equals(c.getName())){// c--代表的就是用户名对应的Cookie对象uname= URLDecoder.decode(c.getValue(),"utf-8");ch="checked";}if("p".equals(c.getName())){// c--代表的就是密码对应的Cookie对象pwd= c.getValue();}}}%><h3>登录页面</h3><form action="DoLogin"><p>用户名:<input type="text" id="uname" name="uname"  value="<%=uname%>"/></p><p>密码:<input type="text" name="pwd" value="<%=pwd%>"/></p><p><input type="checkbox" name="ch" value="yes" <%=ch%> />记住密码</p><p><input type="submit"  value="登录"/></p></form>
</body>

success.jsp(登录成功界面)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>$Title$</title><base href= "<%=request.getContextPath() + "/" %>"
</head>
<body><h3>成功页面<h3>输出的值:<%String uname = (String)session.getAttribute("uname");out.print(uname);%><hr/><a href= "update.jsp" >update.jsp</a><hr/>JsessionID<%=session.getId() %></body>
</html>

update.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>update.jsp</title><base href= "<%=request.getContextPath() + "/" %>"
</head>
<body><h3>成功页面<h3>输出的值:<%String uname = (String)session.getAttribute("uname");out.print(uname);%><hr/><a href= "delete.jsp" >delete.jsp</a><hr/>JsessionID<%=session.getId() %></body>
</html>

delete.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>delete.jsp</title><base href= "<%=request.getContextPath() + "/" %>"
</head>
<body><h3>成功页面<h3>输出的值:<%String uname = (String)session.getAttribute("uname");out.print(uname);%><hr/>JsessionID<%=session.getId() %></body>
</html>

03、理解示意图
cookie


session

04、Session 的失效时机
[1]Session.invalidate()
[2]超过最大非活动间隔时间
[3]关闭浏览器(该方式没有立刻结束session)
session失效的方式

[1]手动注销sesison
session.invalidate();
[2]超过session 活动的有效时间
Session 最大活动时间是30分钟,我们可以更改这个默认的时间
A、更改TomCat中web.xml中的配置
影响的是:所有项目中的所有session

 <session-config><session-timeout>30</session-timeout></session-config>

B、更改自己项目的web.xml
影响的是:当前项目的所有session

    <session-config><session-timeout>40</session-timeout></session-config>

C、更改当前项目的当前session 失效的时间
session.setMaxInactiveInterval(10);
[3]关闭浏览器
这种红方式只是把浏览器中保存到cookie 中的Jsession 给清除了
保存到服务器中的session并没有真正的消失

05、Session和Cookie的区别
cookie数据存放在客户端,session数据放在服务器上(sessionid可以通过cookie保存在客户端,也可以使用URL重写方式)
cookie不是很安全(可以加密),别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE
单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
Cookie的数据都以字符串的形式保存。Session中可以保存对象信息。
典型使用
Cookie:记住我 最近浏览商品 网页皮肤
session:登录信息 购物车(也可以使用Cookie)

Cookie和Session 登录相关推荐

  1. HTML用cookie实现自动登录,用cookie实现websocket自动登录,session状态保留。

    原标题:用cookie实现websocket自动登录,session状态保留. 会话状态的保留,即登录状态保持,是很常见.很常用的功能. 本文将介绍,在NodeJS开发中,如何实现websocket连 ...

  2. 鉴权必须了解的5个知识点:cookie,session,token,jwt,单点登录

    从状态说起 [HTTP 无状态] 我们知道,HTTP是无状态的,也就是说,HTTP请求方和响应方间无法维护状态,都是一次性的,它不知道前后的请求都发生了什么 但有的场景下,我们需要维护状态,最常见的, ...

  3. 一周内自动登录php,利用php实现一周之内自动登录存储机制(cookie、session、localStorage)...

    cookie.session.localStorage这三个应该是最让程序员头疼的了,我利用简单的登录界面的username和password来说明一下吧. 1.cookie用来存储用户相关数据,存储 ...

  4. php登录实现session记住密码,利用php实现一周之内自动登录存储机制(cookie、session、localStorage)...

    cookie.session.localStorage这三个应该是最让程序员头疼的了,我利用简单的登录界面的username和password来说明一下吧. 1.cookie用来存储用户相关数据,存储 ...

  5. Cookie 和 Session、实现用户登录逻辑

    Cookie 和 Session 一.回忆 Cookie 二.理解会话机制 (Session) 三.Cookie 和 Session 的区别 四.核心方法 4.1 HttpServletRequest ...

  6. Asp.Net使用加密cookie代替session验证用户登录状态 源码分享 欢迎拍砖

    小论坛地址: http://rayyu.5d6d.com/thread-9444-1-1.html 正文: 首先 session 和 cache 拥有各自的优势而存在.  他们的优劣就不在这里讨论了. ...

  7. 鉴权必须了解的 5 个兄弟:cookie、session、token、jwt、单点登录

    本文你将看到: 基于 HTTP 的前端鉴权背景 cookie 为什么是最方便的存储方案,有哪些操作 cookie 的方式 session 方案是如何实现的,存在哪些问题 token 方案是如何实现的, ...

  8. 前端鉴权必须了解的 5 个兄弟:cookie、session、token、jwt、单点登录

    编辑:前端妹 | 来源:HenryLulu_几木 链接:juejin.cn/post/6898630134530752520 本文你将看到: 基于 HTTP 的前端鉴权背景 cookie 为什么是最方 ...

  9. Cookie + Session登录-Token登录-SSO 单点登录-OAuth 第三方登录

    文章目录 1.Cookie + Session 登录 2. Cookie + Session 存在的问题 3.Token 登录认证 1. Token 机制实现流程 2. Token 机制的特点 3. ...

最新文章

  1. Algs4-2.2.29自然的归并排序(未解决)
  2. 自用Java爬虫工具JAVA-CURL已开源
  3. Redis为什么使用单进程单线程方式也这么快
  4. VueRouter的安装以及基本使用
  5. AutoML 与 Bayesian Optimization 概述
  6. 马斯克挽尊,回应为何电动皮卡车窗玻璃怼不过钢球...
  7. leetCode 41.First Missing Positive (第一个丢失的正数) 解题思路和方法
  8. 【CCCC】L3-002 特殊堆栈 (30分),nlogn维护序列中位数,STL大乱斗,有重multiset,vector+二分插入
  9. 安装SVN及安装语言包
  10. Edraw Office Viewer 8.X Edraw Office Viewer
  11. 推送微信公众号模板消息通知(Java版)
  12. html 文件怎么改类型,怎么更改文件类型
  13. ORA-20011 问题处理
  14. python 日本 地图 热力图_【python实战】热力图——百度地图API
  15. 计算机也无法解的函数,XP提示“无法访问函数不正确”怎么办|XP提示“函数不正确”的四种解决方案...
  16. 密码学与网络安全课程习题集及参考答案(一些思考题)
  17. 易语言 计算机取用户名,易语言GetUserNameA获取系统当前用户名
  18. 3DS动物之森(animal acrossing)游戏记录
  19. opencv之基本形状识别
  20. c语言程序个人实验报告,C语言程序设计实验报告(5)

热门文章

  1. 中科大软件测试期末复习
  2. redis lua 抽奖 PHP,通过redis+lua实现加减库存
  3. Redis高可用基石--主从同步
  4. 2 未匹配到任何借口_拼多多【关键词精确匹配溢价】给你想要的精准流量,让你订单暴增的秘诀...
  5. Redis构建分布式锁——Redlock
  6. NWERC 2018 C. Circuit Board Design 树 + 构造
  7. Codeforces Round #717 (Div. 2) D(倍增dp)
  8. Dancing Stars on Me HDU - 5533
  9. 【CF 1188 A1,B,C】Add on a Tree // Count Pairs // Array Beauty
  10. jzoj5363-[NOIP2017提高A组模拟9.14]生命之树【启发式合并,Trie】