您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > JavawebJSP教案
JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide1of151/10/2020第九章使用会话跟踪授课时数:4一、教学重点要求学生理解会话跟踪的概念,HTTP通信的特点以及无状态性,了解使用会话跟踪的意义所在。重点是掌握如何使用会话对象session跟踪用户的会话信息。二、教学难点认真理解session作为容器进行使用的共享性,如何把用户在一个WEB页面的请求数据保存到会话对象session中,然后又如何在另一个WEB页面中把保存在会话对象session中的用户数据取出加以处理。三、教学目标通过学习,学生应能够在实际的WEB应用中运用会话对象session开发网上购物应用程序。四、教学内容会话跟踪HTTP的通信过程HTTP的无状态性会话的概念会话的特征用session对象维护会话Session工作原理Session的IDJSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide2of151/10/2020Session的属性终止会话五、教学过程内容回顾:上一节课,我们主要学习了JSP的3个内置对象,需要掌握的内容是:内置对象的概念教师表述:什么是内置对象,内置对象的作用,JSP中有几个内置对象,哪几个内置对象是比较常用的。内置对象request、response、out的用法分别提问学生在JSP页面中什么情况下会用到request对象,什么情况下会用到response对象,什么情况下会用到out对象,教师给予指正。1、会话跟踪1.1HTTP的通信过程(板书)我们已经学过,JSP程序的运行是基于B/S的模式,用户通过客户端浏览器向Web服务器发送一个HTTP请求,当服务器收到请求时一个连接就建立了,服务器根据请求做必要的处理并生成一个响应信息,然后把它回送给客户端。这个请求-响应过程是在一条网络连接上发生的。这一过程结束后,服务器就关闭了该连接,而不会一直与客户端保持者连接的状态。其过程如图2-1所示:图2-1JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide3of151/10/2020举例:这种情况如同寄信,地址姓名填好后往邮筒内一扔,收信人就能收到。然而,和我们打电话的情形不一样,打电话也需要先建立连接,但在通话过程中,连接需要始终保持着直到通话完毕当用户发送另一条请求时,所有的请求-响应循环都将再次发生,客户和服务器之间必须重新建立连接。解释:日常生活中上网时,当你在IE的地址栏中输入然后回车,一个请求就发生了,这个请求根据URL中的域名对应的IP地址寻找到服务器,然后服务器再寻找到要执行的页面,默认寻找的文件名为index.*并进行解析执行,最后把执行的结果发送给客户端,这样我们就看到了新浪的主页面,当我们看到主页面时,这个请求-响应过程就已经发生并结束了,同时,这次连接就不存在了。随后,我们通过点击新浪主页上面的超连接或导航按钮,这时,一个新的请求就发生了,又需要建立一个新的连接,而这个连接是完全不同于上次那个连接的一个新的连接。还可以在类比到学生之前学习C、C++等编程语言中的函数调用,每次调用函数就会为该函数在内存中开辟运行空间,函数调用结束,这个运行空间就随之释放,所以,一个函数执行的情形就如同JSP页面的执行。那么,大家可能会问,这样每次用户请求每次都要建立连接,挺浪费时间和资源的,为什么不能让用户第一次建立的连接一直保持着,以后的每次请求就可以不再建连接了呢?原因是下面要讲到的:HTTP协议被设计成为无状态性。1.2HTTP的无状态性(板书)Web服务器需要为潜在的大量的用户服务。对于一个服务器,接受一条网络连接就意味着通过一个套接字侦听进入的请求,如果一个服务器同时连接大量的用户(实际情况的确需要这样),这会消耗掉服务器大量的资源,包括线程和内存。为了能够服务于大量的用户,HTTP被设计成在每一次新请求中都使用新的连接,这种特性称为HTTP的无状态性。结论:由于HTTP具有的这种无状态性,使得我们不能通过把用户的数据存放在Servlet的实例变量中,进而引出需要使用会话对象session来保存用户需要在页面之间共享的的数据。解释:Servlet的实例变量又可称为是JSP页面中的变量,我们在第一节课中就讲到:一个JSP页面在执行时会被服务器转译为一个Java类,也就是Servlet类,而页面中的变量对应的就是Servlet的实例变量。我们知道,JSP页面的执行就如同一个被调函数的执行,当执行结果出来之后,页面中保存的数据都将自动消失,因为这个页面运行的空间被系统释放了。所以,我们不能把用户的数据存放在Servlet的实例变量中。当一个用户连接到服务器时可能到不同的页面,而许多WEB程序需要JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide4of151/10/2020用户在客户端的一系列请求之间能够互相关联,实现不同的页面之间数据的传递和共享,而HTTP协议是无状态的,基于WEB的应用程序需要维护这样的状态。解释:在实际应用中确实需要把一个页面中用户的数据保存起来,比如说一个网上购物的WEB应用,由很多页面组成,用户登录成功后在一个页面中挑选一种商品,添加到购物车中,然后点击超链接进入下一个商品页面,又挑选一种商品添加到购物车中。注意:这两次选择是在不同的HTTP连接中发生的,而用户希望两次挑选的商品在同一个购物车中一起结账,而不是每选一件商品都要结账一次。这就需要一种机制来唯一的标识用户,以便跟踪用户在站点中的行为。想一想:我们在日常生活中到大型超市是如何购物的?(让同学们思考)JSP提供了内置对象Session,允许web容器针对每一个用户建立一个HTTP会话(即Session对象),每个HTTP会话将会自动被赋予一个唯一的会话编号(sessionID),因此可以利用会话对象session来唯一的标识用户,记录用户的数据信息。下面我们先了解一下什么是会话?1.3会话的概念从一个用户打开浏览器并连接到服务器开始到用户关闭浏览器离开这个服务器结束整个过程称做一个会话。在多次HTTP连接间利用内置对象session维护同一用户发出的不同请求时的数据称为维护一个会话1.4会话的特征会话对象session就像一个容器一样能够存放用户在不同的页面中的会话数据。session和用户是一一对应的,不同用户对应着不同的session。会话一旦建立就应当一直存在,直到用户空闲时间超过了某一个时间界限或用户退出了对服务器的访问,容器才应当释放该会话资源。在会话的存活期间,用户可能给服务器发送了很多请求,该用户的这些请求信息都可以存储在会话中。会话对象session的使用如图2-2所示:JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide5of151/10/2020图2-22、用session对象维护会话2.1Session工作原理当用户第一次发出请求时,由WEB容器自动创建一个Session对象,该对象调用相应的方法可以存储用户在访问各个页面其间提交的各种信息,比如名字、号码等信息,同时这个Session对象被分配了一个唯一的SessionID与之对应。这个SessionID也会随着HTTP响应内容传递给用户端浏览器。传递的方式默认情况下为cookie,如果用户端浏览器关闭了cookie功能,就会使用URL重写技术传递给用户浏览器。在用户发出的后续请求中,请求信息中会包含WEB容器传递给它的SessionID。WEB容器就会根据传回的SessionID寻找用户对应的Session对象,Session对象和客户之间是一个一一对应的关系,直到客户关闭浏览器后,服务器才将该用户的Session对象取消。2.2Session的ID在首次访问Web服务器页面时,用户可以在此页面中选择一些数据保存到session对象中该用户以后如多次访问同一个Web服务器时都会主动查找与该用户对应的session并存取其中的数据。JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide6of151/10/2020WEB容器在创建每一个新的HTTP会话对象时,都会赋予一个新的ID号。WEB容器保证它在Web应用范围内是唯一的。这个ID号可以通过Session对象的getId()获得。例如:StringsessionId=session.getId();案例1.用户在访问web应用的过程中,经常由一个页面跳转到另一个页面,JSP引擎不再为用户分配新的session对象,而是使用完全相同的一个,现在编写session.jsp、tom.jsp和jerry.jsp三个页面文件,分别在这些页面文件中获取session对象的ID,这些session对象的ID应该是相同的。下面是源代码://文件session.jsp%@pagecontentType=text/html;charset=GB2312%HTMLBODYP%Strings=session.getId();%P您的session对象的ID是:BR%=s%P输入你的姓名连接到tom.jspFORMaction=tom.jspmethod=postname=formINPUTtype=textname=boyINPUTTYPE=submitvalue=送出name=submit/FORM/BODY/HTML程序运行结果如图2-3所示:JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide7of151/10/2020图2-3讲解:根据程序上述运行的结果讲解源代码,程序使用session.getId()获得session的ID号并在页面上显示,然后通过表单的提交请求去执行另一个页面tom.jsp。//文件tom.jsp%@pagecontentType=text/html;charset=GB2312%HTMLBODYP我是Tom页面%Strings=session.getId();%P您的在Tom页面中的session对象的ID是:%=s%P点击超链接,连接到Jerry的页面。AHREF=jerry.jspBR欢迎到Jerry屋来!/A/BODY/HTML程序运行结果如图2-4所示:JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide8of151/10/2020图2-4讲解:根据程序上述运行的结果讲解源代码,程序使用session.getId()再次获得session的ID号并在页面上显示,通过比较可知和第一个页面的ID号是一样的,然后通过超链接跳转到第三个页面jerry.jsp。//文件jerry.jsp%@pagecontentType=text/html;charset=GB2312%HTMLBODYP我是Jerry页面%Strings=session.getId();%P您在Jerry页面中的session对象的ID是:%=s%P点击超链接,连接到session的页面。AHREF=session.jspBR欢迎到session屋来!/A/BODY/HTML程序运行结果如图2-5所示:JSP应用开发技术©郑州大学西亚斯国际学院电子信息工程学院Slide9of151/10/2020图2-5讲解:根据程序上述运行的结果讲解源代码,程序使用session.getId()第三次获得session的ID号并在页面上显示,通过比较可知和前两个页面的ID号是一样的,从而说明三个页面用的Session对象是同一个对象。2.3存取会话Session的属性Session对象使用以下方法管理绑定到会话的属性voidsetAttribute(Stringname,Objectvalue)将一个对象绑定到Session对象,使之成为Session
本文标题:JavawebJSP教案
链接地址:https://www.777doc.com/doc-2878447 .html