- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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中的数据
您可能关注的文档
- WCDMA切换原理分析.ppt
- WCDMA培训教材之10切换原理分析.ppt
- WCDMA自测题(更新)分析.doc
- VTS常用船舶操纵英语分析.ppt
- WDT调速器电气说明书分析.doc
- WCDMA试题库(全)分析.doc
- WDZ-491EX技术说明书V2.3分析.doc
- WCDMA功率控制原理分析.ppt
- ppt-微课来了解析.ppt
- WebService的列车时刻表分析.doc
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)