web11-03session分析.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
web11-03session分析

Session Cookie技术可以将用户的信息保存在各自的浏览器中, 优点:很明显实现了同一个用户不同请求中数据共享。 缺点:黑客可以利用脚本等手段 窃取cookie中的重要数据,从而泄漏个人的隐私,存在巨大的安全隐患。 session技术 是将会话的数据保存在服务器端的技术。 什么是session? 为了更好的理解session,以网站购物为例,通过一张图来描述session保存用户 信息的原理。 用户甲和用户乙都调用buyServlet将商品添加到购物车,调用payServlet进行商品结算。 由于甲和乙购买商品类似,这里以甲为主。 当用户甲访问购物网站时,服务器为甲创建了一个session对象(相当于购物车)。 当甲将小米手机添加到购物车时,小米手机的信息便存到了session对象中,同时,服务器将session对象的唯一标识id属性以Cookie的形式返回给甲的浏览器。 当甲完成购物进行结账时,需要向服务器结账请求,这时,浏览器就会自动在请求头将 唯一标识 回送给服务器。 服务器根据唯一标识,找到为用户甲创建的session容器,并将session对象中存放的手机信息进行结算。 需要注意的是:由于客户端需要接受、记录、和回送session的唯一标识, 因此通常情况下,session是借助cookie技术来传递ID属性的。 Session的API 获取Session对象 Session是基于用户的请求,而把用户的重要信息在服务器端针对这个用户()了一个容器。 这个Session容器是由web服务器帮助我们创建的,程序中只能获取到这个容器,然后给容器添加数据或者取出数据,或者删除数据,而我们是创建这个容器对象。 HttpServletRequest对象中提供了获取session对象的方法: 使用request对象就可以获取到当前针对用户的请求服务器内部创建的那个Session容器对象。 HttpSession依然是一个接口,而这个接口的实现类有web来提供。能够运行我们JavaEE项目的web访问前,它们都会实现Java提供的所有技术中的接口。 演示Session: Servlet程序: 第一个Servlet中获取到Session对象,然后把用户当前的ip保存在Session中,在第二Servlet中取出,然后通过response对象把ip给客户端响应回去Servlet访问完之后,不使用转发技术。 给Session对象中保存数据: 使用HttpSession接口中的: 获取数据: 删除Session中的数据 需求1: 共享数据:第一个Servlet程序:到用户的ip保存在Session中 看不到,原因:还没有向session容器中存放ip。 5、通过浏览器先访问Session1Servlet,再访问Session2Servlet,能看到ip地址吗? 能 服务器端操作 其实服务器端可以每个用户的容器,主要是因为服务器针对每个用户都发送了Cookie信息。这样在操作的时候,都会这个Cookie到服务器端,因此服务器端才能识别针对当前这个用户的那个session。 给客户端响应数据的时候,把Session容器的Cookie的形式发送给浏览器,而这个Cookie是一个级别(),只能存在浏览器运行的,如果浏览器关闭了,这个Cookie信息就没有了,因此在此打开浏览器访问的时候,就不会在服务器获取到针对当前用户的,因此无法找到针对当前用户的那个Session容器。服务器端的Session容器对象,是针对每个浏览器的。 Session方法的 在api中提供获取Session对象的方法: getSession() 空参数的方法,在使用的时候,如果服务器端针对当前用户的浏览器没有Session容器这时在服务器的内部会先创建一个Session对象,然后把这个Session对象给我们的程序。 Session容易已经存在,这时它是不会再创建新的Session容器对象,只是把找到的这个Session对象返回给程序。在的过程中需要依赖于 getSession(Boolean create): 如果这个调用的时候,传递的值为false,仅仅只会在容器根据找有没有对应的Session容器对象,有就返回这个Session容器对象,如果没有,就返回null。 传递的值true,在Session容器对象的时候,如果不存在就会创建一个新的Session容器对象,并返回这个容器对象,如果存在就,直接返回存在的Session容器对象。 思考:关闭浏览器后再次访问能获取到Session的数据吗? 一般情况下,关闭浏览器,再次,是无法获取到Session中的数据

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档