美文网首页
JavaWeb - Cookie&Session

JavaWeb - Cookie&Session

作者: sunboximeng | 来源:发表于2018-07-23 16:17 被阅读3次

jsp+ajax = 使html页面中的元素可以单独接受响应、发送请求。

数据在前端、Servlet、数据库之间传递,经历转换:
map(提交的表单)映射为对象,用的是BeanUtils工具类。
表数据映射为对象,用的是JdbcTemplate中的RowMapper
JSON数据映射为对象,用的是ObjectMapper

动态代理 = 反射(回调时使用) + 单层嵌套。
装饰者模式 = 多层嵌套(可以灵活组合,但是要定义很多个类)。

弥补HTTP协议无记忆的缺点:cookie(自己记)和session(服务器记)。
Cookie就是由服务器发给客户端的信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。
cookie就是请求头中的一个字段。也可以被持久化储存到文件中。典型应用:记忆用户名和密码。

Session对象中保存的也是键值对,通过getAttribute(Stringkey)和setAttribute(String key,Objectvalue)方法读写客户状态信息。
两个对象都可以用来记录用户的上一次登陆时间。但两个对象的创建方式是不一样的。

键值对就能起到一个数据库的作用。NoSQL就是键值对数据库!

Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的:session的id值需要保存在cookie中。因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。解决的办法是把id值放在URL中。

Cookie

cookie就是http请求头中的一个字段。可以用来保存客户端上的数据,以便服务器使用。弥补了http请求无记忆的缺点。

  • 创建
    cookie不是9大内置对象,所以使用前需要先创建对象。方式:response.addCookie(new Cookie(String 键, String 值));

  • 应用

    • 利用cookie在两次请求间共享(传递)数据。

    • 记住用户名和密码
      默认情况下,cookie放在浏览器的内存中,当浏览器关闭后,Cookie数据被销毁。把Cookie保存到文件中就可以实现,关闭浏览器后,再打开cookie仍然会有效:cookie.setMaxAge()

    • 购物车
      用户在一段时间内在同一个购物网站的不同页面中选择不同的商品,这些信息都可以写入cookie,以便在最后付款时提取信息。

    • 统计用户访问习惯
      访问什么页面,每个页面停留时间。

案例:普通用户自动登录。3分钟之内不需要重新登录。

Session

客户端浏览器可以禁用cookie,于是有必要把数据保存在服务器端。Session就是服务器端创建的对象,用来保存同一客户端多次请求中的数据。

  • 创建或查找已有对象:request.getSession();
  • session运行机制
    1. 服务器接收浏览器请求
    2. 服务器自动查看cookie中是否有session ID(键的名字叫做JSESSIONID)
    3. 有,找到对应的session对象(session具有id属性),从而正确的保存数据。没有,创建一个新的session对象,并生成一个session ID,然后将session ID随着本次响应返回给客户端。
    4. session什么时候被销毁:太长时间没有操作就会自动销毁。因为本身具有getLastAccessedTime()方法。
  • 客户端关闭后,服务器不关闭,两次获取session是否为同一个?
    默认情况下,不是。但是可以利用session的实现机制达到这个目的。既然session ID保存在cookie中,那么只要设置cookie的存活时间(即把cookie保存在文件中),即可达到保存session ID的目的。

如果客户端没有禁用cookie,就使用cookie保存session ID。如果禁用,则把ID写在URL上(像get请求那样)。
在服务端保存Session对象的地方很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移。

  • 应用
    利用session在两次请求间共享(传递)数据。

application对象:网站上看到的在线人数、访问次数、在线投票等一些全局数据,需要在多个会话,多个页面间共享。

相关文章

  • JavaWeb - Cookie&Session

    jsp+ajax = 使html页面中的元素可以单独接受响应、发送请求。 数据在前端、Servlet、数据库之间传...

  • cookie&session

    cookie Cookie 数据是由客户端来保存和携带的,所以称之为客户端技术 属性 name 名称不能唯一确定一...

  • cookie&session

    响应首行setstatus(int)sendError(int,String)响应头setHeaderaddHea...

  • Cookie&session

    1.会话技术: 从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话。 2....

  • Cookie&Session随记

    session是web开发里一个重要的概念,在大多数web应用里session都是被当做现成的东西,拿来就直接用,...

  • Django - Cookie&Session

    获取cookie: 设置cookie: 这中设置cookie,关闭浏览器就失效了。 实例: 或者: session...

  • JAVAEE——Cookie&Session会话

    会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会话技术就是记录这次会话中客户端...

  • HTTP之Cookie&Session

    Cookie - 什么是cookie? MDN是这样说的:HTTP Cookie(也叫Web cookie或者浏览...

  • JavaWeb(十)Session

    1、session在不同环境下的不同含义 (1)session,中文经常翻译为会话,其本来的含义是指有始有终的一系...

  • JavaWeb之Session

    Session机制session机制采用的是在服务器端保持 HTTP 状态信息的方案 。 除了使用Cookie,W...

网友评论

      本文标题:JavaWeb - Cookie&Session

      本文链接:https://www.haomeiwen.com/subject/kdejmftx.html