`
txf2004
  • 浏览: 6886080 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java_web 会话之Session技术

 
阅读更多

保存会话数据的两种技术,第一种已经写了,今天重点写Session技术;

Cookie

Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

Session

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

首先了解一下什么是Session技术:

使用Cookie和附加URL参数都可以将上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务器端程序处理的难度。

Session技术是一种将会话状态保存在服务器端的技术,它可以比喻成是医院发放给病人的病历卡和医院为每个病人保留的病历档案的结合方式。

客户端需要接收、记忆和回送Session的会话标识号,Session可以且通常是借助Cookie来传递会话标识号

Session的跟踪机制:

ServletAPI规范中定义了一个HttpSession接口,HttpSession接口定义了各种管理和操作会话状态的方法。

HttpSession对象是保持会话状态信息的存储结构,一个客户端在WEB服务器端对应一个各自的HttpSession对象。

WEB服务器并不会在客户端开始访问它时就创建HttpSession对象,只有客户端访问某个能与客户端开启会话的Servlet程序时,WEB应用程序才会创建一个与该客户端对应的HttpSession对象。

WEB服务器为HttpSession对象分配一个独一无二的会话标识号,然后在响应消息中将这个会话标识号传递给客户端。客户端需要记住会话标识号,并在后续的每次访问请求中都把这个会话标识号传送给WEB服务器,WEB服务器端程序依据回传的会话标识号就知道这次请求是哪个客户端发出的,从而选择与之对应的HttpSession对象。

WEB应用程序创建了与某个客户端对应的HttpSession对象后,只要没有超出一个限定的空闲时间段,HttpSession对象就驻留在WEB服务器内存之中,该客户端此后访问任意的Servlet程序时,它们都使用与客户端对应的那个已存在的HttpSession对象。

HttpSession接口中专门定义了一个setAttribute方法来将对象存储到HttpSession对象中,还定义了一个getAttribute方法来检索存储在HttpSession对象中的对象,存储进HttpSession对象中的对象可以被属于同一个会话的各个请求的处理程序共享。

Session是实现网上商城的购物车的最佳方案,存储在某个客户Session中的一个集合对象就可充当该客户的一个购物车。

Session的超时管理

WEB服务器无法判断当前的客户端浏览器是否还会继续访问,也无法检测客户端浏览器是否关闭,所以,即使客户已经离开或关闭了浏览器,WEB服务器还要保留与之对应的HttpSession对象。

随着时间的推移而不断增加新的访问客户端,WEB服务器内存中将会因此积累起大量的不再被使用的HttpSession对象,并将最终导致服务器内存耗尽。

WEB服务器采用“超时限制”的办法来判断客户端是否还在继续访问,如果某个客户端在一定的时间之内没有发出后续请求,WEB服务器则认为客户端已经停止了活动,结束与该客户端的会话并将与之对应的HttpSession对象变成垃圾。

如果客户端浏览器超时后再次发出访问请求,WEB服务器则认为这是一个新的会话的开始,将为之创建新的HttpSession对象和分配新的会话标识号。

会话的超时间隔可以在web.xml文件中设置,其默认值由Servlet容器定义。

<session-config>

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

</session-config>

WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

SessionCookie的主要区别在于:

Cookie是把用户的数据写给用户的浏览器。

Session技术把用户的数据写到用户独占的session中。

Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。

今天讲的总的可以归为三点:

第一个就是

首先是request.getSession();方法,如果是第一次获取,原先没有Session技术;服务器会自动向浏览器返回一个id;

HttpSessionsession=request.getSession();//可以带参数,如果是true代表没有自动创建,false代表没有也不创建;

session.setAttribute(“name”,”nameValue”);//session属性赋值;

然后在创建一个Servlet类,来获取session的值;

首先解决乱码问题;

response.setContentType(“text/html;charset=utf-8”);

PrintWriterout=response.getWriter();

//获取sessionid

HttpSessionsession=resquest.getSession();

Stringvalue=session.getAttribute(“name”);

out.print(“购买的商品是”+value);

第二种就是

把这两个弄成一个html文件,进行超连接,第一个叫购物。第二个叫结账

有这个一种情况,你购物完之后,获取一个id但是不小心关了,再重新点开,打开结账发现值为空,是不是很纠结;所以解决一下这个问题,

需要在购物内加入一个Cookie来保存这个id到本地;

创建cookie应该都会了吧,在这里也就不详细介绍了,

首先获取一个sessionid,放到cookie里保存;

Stringid=session.getID();

Cookiecookie=newCookie(“JESSIONID”,id);//参数值与session一致

cookie.setMaxAge(30*60);//与浏览器保存时间一致;

response.addCookie(cookie);

第三种就是用户把浏览器的Cookie设置关闭,导致cookie无法使用;

这个需要使用URL重写;

IE禁用Cookie后的session处理

解决方案:URL重写

response.encodeRedirectURL(java.lang.Stringurl)

用于对sendRedirect方法后的url地址进行重写。

response.encodeURL(java.lang.Stringurl)

用于对表单action和超链接的url地址进行重写

分享到:
评论

相关推荐

    孙卫琴《Tomcat与Java Web开发技术详解》培训讲义.rar

    孙卫琴《Tomcat与Java Web开发技术详解》培训讲义.rar 01__JavaWeb应用简介.pdf 02_Servlet技术.pdf 03_JSP技术.pdf 04_使用HTTP会话(Session).pdf 05_使用JavaBean.pdf 06_使用Servlet过滤器....

    第6章 会话控制技术:Cookie与Session.ppt

    Java Web基础与实例教程的PPT,自己制作的PPT,将近400页,免费分享,童鞋们努力学习吧。

    深入体验Java Web开发内幕

    6.7 获取请求消息的实体内容  6.8 利用请求域属性传递信息  6.9 请求参数的中文读取问题  6.10 思考与实践 第7章 会话与状态管理  7.1 Web应用中的会话与会话状态  7.2 Cookie  7.3 在...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...

    Java Web教学PPT.rar

    Java Web教学PPT,包括了servlet,jsp,会话session,JDBC,连接池,文件上传与下载,和一个web案例

    V512工作室Java web的ppt

    第7章 讲解Servlet会话(Session)编程的相关内容。 第8章 讲解JSP技术、JSP内置对象以及JSP页面之间、JSP与Servlet之间的相互转向。 第9章 讲解JavaBeans技术的概念和JavaBeans的使用。 第10章 讲解如何运用MVC模式...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    从Java走向Java+EE+.rar

    第1章 Java EE的基本知识 1 1.1 Java EE的出现及其特点 1 1.2 Java EE的分层模型和平台组成 4 1.2.1 Java EE的分层模型 4 1.2.2 Java EE的结构变形 5 1.2.3 Java EE平台的组成 7 1.3 Java EE参与人员的...

    J2EE(Java EE)技术总结-J2EE学习精华教程-电子书

    .....Web_Cookie和Session .....Web_过滤器 .....Web_MVC设计模式 .....JDBC .....JDBC_各种数据库连接 .....XML_基础 .....XML_DTD(文档描述与校验技术之一) .....XML_Schema(文档描述与校验技术之一) .....XML_DOM...

    同浏览器不同窗口不同用户Session问题

    正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。

    在ASP.NET中,设置Session的过期时间的方法

    方法一:  在后台应用程序中设置:Session.Timeout = 1;  注意:1、此方法可以设置在一个... 您可能感兴趣的文章:php 如何设置一个严格控制过期时间的sessionjava设置session过期时间的实现方法php中实现精确设置se

    WEB16-session&cookie-源代码.rar

    WEB16_session&cookie。 案例一、记录用户的上次访问时间---cookie 案例二、实现验证码的校验----session。 1.服务器端向客户端发送一个Cookie 1)创建Cookie: Cookie cookie = new Cookie(String cookieName,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    hazelcast-tomcat-sessionmanager:基于Tomcat的Web会话复制

    基于Tomcat的Web会话复制 示例代码:请参阅我们的基于Tomcat的Web会话复制的。 您还可以检查。 功能和要求 是特定于容器的模块,可用于JEE Web应用程序的会话复制,而无需更改应用程序。 特征 Tomcat 7、8、8.5和9...

    Java中设置session超时(失效)的三种方法

    主要介绍了Java中设置session超时(失效)的三种方法,本文讲解了在web容器中设置、在工程的web.xml中设置、通过java代码设置3种方法,需要的朋友可以参考下

    潍坊学院成人教育Java-Web程序设计B卷试卷及参考答案.doc

    潍坊学院成人教育《Java Web程序设计》试卷(B)卷试题及参考答案 一、填空(共 6题,每空 1 分,合计10 分) 1. 超链接标签的 属性用来指定链接地址。 2. mvc思想中,M是 ,V是 ,C是controller。 3. JSP页面中的6个...

    基于Java实现的Web服务器与测试工具开发.zip

    基于Java编程语言,利用http socket通信技术,写一个小型的web服务器与一个爬虫的测试工具,来对比分析所写的服务器获取到的页面源码与从tomcat获取的相似度。 (1)小型web服务器: 1)支持客户端的网页请求,进行...

Global site tag (gtag.js) - Google Analytics