《JSP内置对象PPT课件》由会员分享,可在线阅读,更多相关《JSP内置对象PPT课件(62页珍藏版)》请在金锄头文库上搜索。
1、学习内容:学习内容:理解对象和理解对象和理解对象和理解对象和JSPJSP内置对象的概念内置对象的概念内置对象的概念内置对象的概念掌握掌握掌握掌握JSPJSP的内置对象的用法的内置对象的用法的内置对象的用法的内置对象的用法理解理解理解理解JSPJSP的四种属性范围的四种属性范围的四种属性范围的四种属性范围掌握掌握掌握掌握JSPJSP属性范围和属性范围和属性范围和属性范围和JSPJSP内置对象的范围内置对象的范围内置对象的范围内置对象的范围能灵活应用能灵活应用能灵活应用能灵活应用JSPJSP的内置对象来开发程序的内置对象来开发程序的内置对象来开发程序的内置对象来开发程序第5单元 JSP内置对象页面
2、、上下文、范围请求与响应其它对象与话跟踪1JSPJSP内置对象概述内置对象概述JSP内置对象:不需声明即可在JSP网页中使用的对象。内置内置(又称隐含又称隐含)对象是特定对象是特定Java类的实例类的实例, 它们它们由由JSP引擎引擎在运在运行时根据情况行时根据情况自动创建自动创建并并管理管理,在,在JSP页面中页面中可以直接使用可以直接使用。能实现很多功能, 如: 从客户端获得数据、向客户端发回数据、控制传输数据的有效域和异常处理等。对象的名称是对象的名称是JSP的保留字的保留字, 使用内置对象可简化应用开发。使用内置对象可简化应用开发。隐含对象功能:不必使用表达式不必使用表达式, 直接使用
3、直接使用out对象向客户端输出信息。对象向客户端输出信息。如: 不必直接传送参数不必直接传送参数,可以借助请求对象取得客户端输入参数值。可以借助请求对象取得客户端输入参数值。如:完成页面的重定向。完成页面的重定向。如: 在错误页面中显示出错信息。在错误页面中显示出错信息。 等等等等 29 9种隐含对象种隐含对象3JSPJSP内置对象的由来内置对象的由来转译为Servlet编写编写jsp页面可页面可使用隐含对象使用隐含对象注意注意: 它们在它们在_jspService()方法中定义方法中定义,故只能在脚本故只能在脚本和表达式中使和表达式中使用用4页面对象:页面对象: page pagepage对
4、象代表当前JSP页面, 即代表转译后的ServletJSP容器将容器将JSP页面转译成页面转译成Servlet后后, 将指针将指针this赋给了赋给了page对象对象一般在JSP页面中很少使用该对象使用使用 page 对象可以访问对象可以访问 Servlet 类的所有变量和方法。类的所有变量和方法。5页面上下文对象页面上下文对象pageContextpageContext作用: 获取任何范围的参数该对象是该对象是javax.servlet.jsp.PageContext抽象类的子类的实例抽象类的子类的实例;它提供对页面中所有其他内置对象及其属性的访问。它提供对页面中所有其他内置对象及其属性的访
5、问。通过pageContext对象可获取JSP页面的out, request, response, session, application等对象, 也可重新定向客户的请求等。向普通向普通Java程序传递该对象可以使其处理程序传递该对象可以使其处理JSP中的其它对象。中的其它对象。6pageContextpageContext的主要方法的主要方法其它获取内置对象的方法:Object getPage(): 取得页面的取得页面的Page对象对象, 同内置对象同内置对象pageServletRequest getRequest():取得页面请求对象取得页面请求对象(同内置同内置request)Ser
6、vletResponse getResponse():取得页面响应对象取得页面响应对象(同同response)ServletContext getServletContext(): 取得页面的取得页面的ServletContext对象对象, 同内置对象同内置对象application;Exception getException():取得页面内置异常取得页面内置异常(同同exception)对象对象页面转发和包含:void forward(String url) 作用类似动作指令, 用于将页面转发到指定的URL。void include(String url, boolean flush) 作
7、用类似动作指令用于包含其它资源。当flush为true时, 自动刷新缓冲区(将缓冲区内容自动输出), 若为false且被包含资源输出的内容超过缓冲区容量将抛出缓冲区满异常。(说明见示例)7属性设置和获取:void setAttribute(String name,Object value, int scope):用于设置属性; 其中name为属性名, value为指定属性值, 参数scope指定属性作用范围, 缺省为当前页面空间, 即page作用域(下同)。Object getAttribute(String name, int scope)用于读取属性值, 其中:name为属性名, scop
8、e属性存储范围。Enumeration getAttributeNamesInScope(int scope )取得所有scope范围的属性名称组成的列举表void removeAttribute(String name, int scope)用于删除属性, 其中:name为属性名, 参数scope指定属性存储范围。查找属性:Object findAttribute(String name)用于按作用范围(从小到大的顺序)搜索属性: 页面范围、请求范围、会话范围和应用范围,参数name指定属性名。int getAttributeScope(String name)用于获取属性的作用范围, 参数
9、name指定属性名。属性设置和获取属性设置和获取8属性设置和获取示例属性设置和获取示例9属性属性( (Attribute)Attribute)的范围的范围在JSP页面中属性都有相应的作用范围(类似作用域)属性的范围决定了属性的作用域、生存期等重要特性。属性的范围决定了属性的作用域、生存期等重要特性。属性的四种范围:Page范围范围(PageContext.PAGE_SCOPE):页面范围的属性仅在当前当前JSP页面上下文中页面上下文中有效;若数据仅在当前页面中使用,可将数据设置在Page范围。Request范围范围(PageContext.REQUEST_SCOPE)请求范围的属性仅在HTTP
10、请求服务期间请求服务期间才有效;当数据在多个页面使用, 可将数据设置在Request范围。Session范围范围(PageContext.SESSION_SCOPE)会话范围的属性在session期间期间有效;若数据在多个请求中使用, 可将数据设置在Session范围。Application范围范围(PageContext.APPLICATION_SCOPE)应用范围的属性在整个整个Web应用程序运行期间应用程序运行期间均有效;若数据在多个Session中使用用到, 可将数据设置在该范围。若数据需要在会话中使用, 应考虑使用实体Bean或消息。10属性在指定范围内的存取方法属性在指定范围内的存
11、取方法11使用使用JSPJSP属性的一般注意事项属性的一般注意事项设置属性:setAttribute(属性名,属性值)其中其中: 属性名为字符串类型属性名为字符串类型; 属性值为属性值为Object类型。对于基本类类型。对于基本类型要进行包装类转换。如型要进行包装类转换。如: 整数整数1, 则转换为则转换为new Integer(1)获得属性:getAttribute(String name)该方法返回的是该方法返回的是java.lang.Object类型的对象类型的对象,应根据属性值的类应根据属性值的类型进行类型转换。如型进行类型转换。如: 要取得要取得String 类型的类型的Name属性
12、时:属性时:String userName = (String)pageContext.getAttribute(“userName”);如: age为int类型时:int age = (Integer)session.getAttribute(age);存入不同范围内的属性在功能上区别很大在使用属性存储数据前在使用属性存储数据前, 应先根据属应先根据属性的功能要求性的功能要求, 确定准备将属性存储确定准备将属性存储在在Request、Session 、Application或或PageContext的哪个之中的哪个之中, 以便将以便将相应数据存入选定对象之中。相应数据存入选定对象之中。12属
13、性范围示例属性范围示例13小结:小结:JSP隐式对象一般分为输入/输出对象、作用域通信对象 、Servlet 对象和错误对象四类。page对象代表对象代表JSP被转译后的被转译后的Servlet。pageContext提供了系统运行期间各种信息内容的存提供了系统运行期间各种信息内容的存取操作功能,它能够存取其他隐含对象。取操作功能,它能够存取其他隐含对象。JSP有四种属性作用范围:page范围的属性仅在当前页面中可见不能多页共享范围的属性仅在当前页面中可见不能多页共享Request范围的属性仅限于一个请求范围的属性仅限于一个请求, 可跨越多个可跨越多个JSP页面页面, 涉及多个涉及多个Web组
14、件组件;Session范围的属性作用于一个会话范围的属性作用于一个会话, 一个会话可包含一个会话可包含多个请求。多个请求。Application范围的属性作用范围最大范围的属性作用范围最大, 停留时间最久停留时间最久,在服务器开始执行服务,到服务器关闭为止。在服务器开始执行服务,到服务器关闭为止。14二、请求与响应对象二、请求与响应对象15out out 对象对象out对象:以字符流形式向客户端输出数据; 仅作用于pageout对象可以向客户端输出各种数据类型的内容对象可以向客户端输出各种数据类型的内容, 通过通过out能直接能直接向客户端写一个由程序动态生成向客户端写一个由程序动态生成HTM
15、L文档。文档。out是抽象类javax.servlet.jsp.JspWriter的实例, 常用方法:16outout对象可采用缓冲区输出对象可采用缓冲区输出out对象管理应用服务器上的输出缓冲区out对象内含对象内含java.io.Writer进行输出进行输出, 并实现了缓冲区并实现了缓冲区,并缓冲区并缓冲区默认为默认为8KB; 用用page指令的指令的buffer属性调整属性调整out对象缓存的大小对象缓存的大小, 甚至允许关闭缓存。即甚至允许关闭缓存。即: close()方法可以刷新缓冲区, 关闭输出流。但编写JSP页面时, 不要显示地调用该方法, 在JSP容器生成的代码中会自动包含对它
16、的调用。17请求对象请求对象requesreques请求对象reques封装了来自客户端的请求信息当客户端请求一个当客户端请求一个JSP网页时,网页时,JSP引擎会将客户端的发来的引擎会将客户端的发来的HTTP请求信息包装在内置的请求信息包装在内置的request对象中。对象中。例如: 在form表单中填写的信息等它是javax.servlet.http.HttpServletRequest接口的实例对象在在JSP中中, 若需要请求信息的细节若需要请求信息的细节, 都可通过都可通过request对象获得对象获得:请求的标题头(Header),如:浏览器的版本、语言和编码方式等信息。请求的方式(
17、GET、POST、PUT等),参数名称、参数值和客户端的主机名称、cookies、及其它与请求相关的参数值等等。HttpServletRequest接口中重要的方法有4个:getParameter() :读取请求参数getParameterNames():获取指定范围内的请求参数名的集合;getParameterValues():读取指定参数的所有值;getHeader():读取指定字段名的请求头信息。此外该接口还包含大量的方法此外该接口还包含大量的方法, 概括起来分为四类。概括起来分为四类。18请求对象请求对象requesrequesHttpServletRequest接口提供的方法可分为四
18、类:取得请求取得请求HTTP 头的方法;头的方法;储存和取得属性方法;储存和取得属性方法;取得请求参数的方法;取得请求参数的方法;其他取得请求的其他取得请求的URL、IP和和session等的方法。等的方法。如:getRequestURL()、getRemoteAddr()、getSession()等取得请求HTTP 头的方法:19获取请求头字段示例获取请求头字段示例20其他的方法其他的方法21请求的其它方法示例请求的其它方法示例22与属性、请求参数相关的方法与属性、请求参数相关的方法储存和取得属性方法:取得请求参数的方法:23获得客户端提交的信息获得客户端提交的信息对中文要进行专门处理对中文
19、要进行专门处理24与输出响应相关的常用方法与输出响应相关的常用方法25中文信息处理中文信息处理JSP页面的汉字问题主要指两方面:JSP页面中的汉字问题和表单提交的汉字问题。页面中的汉字问题和表单提交的汉字问题。对于JSP页面的汉字问题:在需要显示汉字的在需要显示汉字的JSP中用中用page指令告诉客户端采用汉字编码指令告诉客户端采用汉字编码:。在无特别指示下在无特别指示下, 浏览器无法正确显示汉字。浏览器无法正确显示汉字。表单提交的汉字问题:在互过程中在互过程中,虽然客户端和服务器都采用虽然客户端和服务器都采用GB2312对汉字编码对汉字编码, 而而HTTP传输用传输用ISO_8859_1编码
20、编码, 故即要在服务器端用指令:故即要在服务器端用指令:指示客户端汉字的显示编码指示客户端汉字的显示编码,也要在服务器端对接收到客户端数也要在服务器端对接收到客户端数据进行据进行GB2312编码转换处理。编码转换处理。26中文信息处理示例中文信息处理示例27获取表单中的各种数据获取表单中的各种数据( (用户注册用户注册) )28响应对象响应对象responseresponseJSP引擎将对客户端的响应封装成一个response对象, 在该对象中包含了发送给客户端的有关信息。注意注意: 由于信息的组织方式比较底层由于信息的组织方式比较底层, 在仅要向客户端发送文字在仅要向客户端发送文字时直接使用
21、时直接使用out对象即可。对象即可。response是实现javax.servlet.HttpServletResponse接口的类实例, 它规定了很多方法, 且具有页面作用范围。使用使用response对象可以动态创建对象可以动态创建Web页面页面,改变改变HTTP标头标头, 还可还可自动将客户端重定向到一个指定的页面中。自动将客户端重定向到一个指定的页面中。向客户端写入向客户端写入Cookies时时, response对象也是一种很好的工具。对象也是一种很好的工具。设定响应状态码的方法:29responseresponse的状态行示例的状态行示例当服务器响应客户端请求时, 发送的首行称为状
22、态行。1xx主要是试验性质的;主要是试验性质的;2xx表示请求成功;表示请求成功;3xx表示在请求在满足之前应进一步采取的行动表示在请求在满足之前应进一步采取的行动;4xx表示服务器无法满足要求;表示服务器无法满足要求;5xx服务器出现错误。服务器出现错误。30设置响应头信息的方法设置响应头信息的方法客户端页面自动刷新:在在response对象中添加对象中添加头字段头字段refresh, 使客户使客户端显示该页面时端显示该页面时, 每每5秒秒刷新一次。刷新一次。31重定向重定向URLURL的方法的方法重定向URL与请求转发运行原理不同!1231232动态设置动态设置MIMEMIME类型类型MI
23、ME(多用途网际邮件扩充协议)类型page指令只能为指令只能为contentType指定一个值,若想动态地改变该属指定一个值,若想动态地改变该属性的值以各种不同方式做出响应,就要使用性的值以各种不同方式做出响应,就要使用response对象的对象的setContentType()方法改变方法改变contentType的值。的值。若改变该属性值若改变该属性值, 服务器将服务器将按新的按新的MIME类型做出响应类型做出响应 contentType属性和MIME的对应关系如左表:33再谈请求作用范围再谈请求作用范围请求对象的作用范围:从从JSP容器收到客户端发出一个请求开始容器收到客户端发出一个请求
24、开始, 服务器就创建一个请服务器就创建一个请求对象求对象(请求作用域开始请求作用域开始); 直到服务器对客户端发回响应终止。直到服务器对客户端发回响应终止。请求开始:在浏览器地址栏、点击超链、提交表单在同一个请求作用域内在同一个请求作用域内request对象是惟一的、其中的属性、请对象是惟一的、其中的属性、请求参数求参数(包括由表单提交的包括由表单提交的), 在在request的生存期中都有效。的生存期中都有效。request对象对不同用户、不同次的请求,JSP容器都会创建都会创建不相同请求对象。请求作用的延续:request对象对象(包括该范围的属性、参数包括该范围的属性、参数)的生命周期除
25、了该的生命周期除了该JSP页面外页面外,若该网页中使用到若该网页中使用到或或操作指操作指令,则其生命周期延伸至被令,则其生命周期延伸至被include进来的页面或进来的页面或forward出去出去的网页。即这几个页面共享对服务器的一个请求。的网页。即这几个页面共享对服务器的一个请求。当接收到用户发出新的请求时,该请求随之失效,存放其中的当接收到用户发出新的请求时,该请求随之失效,存放其中的属性也同时失效。属性也同时失效。34请求作用范围测试请求作用范围测试35小结:小结:request对象和response对象的结合可以使JSP更好地实现客户端与服务器的信息交互。用户在客户端浏览器中发出的请求
26、信息被保存在用户在客户端浏览器中发出的请求信息被保存在request对象中并发送给对象中并发送给Web服务器服务器;JSP引擎根据引擎根据JSP页面的指示处理页面的指示处理request对象对象;或根据实际需要将或根据实际需要将request对象转发给由对象转发给由JSP页面页面指定的其他服务器端组件;指定的其他服务器端组件;如Servlet组件、JavaBean组件或EJB组件等。处理结果则以处理结果则以response对象的方式返回给对象的方式返回给JSP引擎,引擎,JSP引擎和引擎和Web服务器根据服务器根据response对象最终生成对象最终生成JSP页面,返回给客户端浏览器,这也是用
27、户最页面,返回给客户端浏览器,这也是用户最终看到的内容。终看到的内容。36三三: : 会话、应用对象会话、应用对象与会话跟踪与会话跟踪37会话会话什么是会话:在一段时间内在一段时间内,单一客户单一客户Client与服务器与服务器Server间的交互过程间的交互过程;服务器利用会话机制能标识出来自同一个客户的一系列请求。服务器利用会话机制能标识出来自同一个客户的一系列请求。为什么需要会话机制:会话机制能保存每个用户的状态会话机制能保存每个用户的状态, 以对各用户给予正确响应。以对各用户给予正确响应。HTTP是无状态协议, 单一客户端向服务器发出的每次请求, 都会建立单独的连接, 并在请求得到响应
28、后, 断开与服务启动连接, 服务器不能自动维护客户的上下文信息。服务器为单个用户的多个请求创建同一个session对象session生命周期生命周期: 在首次向服务器发出请求时建立在首次向服务器发出请求时建立, 到会话结束到会话结束(关闭浏览器关闭浏览器)或或session到期到期(Tomcat默认默认30分钟分钟)时销毁。时销毁。会话对象保存了单一客户一次会话过程的所有信息,可用来追踪每个用户的状态,以保持服务器和客户端间的连接。session中的中的ID标识是唯一的标识是唯一的, 用来标识客户的一次会话过程用来标识客户的一次会话过程, 当当同一浏览器访问同一个同一浏览器访问同一个web应用
29、时应用时, 该标识的值不变。该标识的值不变。38sessionsession对象对象该对象是实现javax.servlet.http.HttpSession接口类的实例会话对象可通过会话对象可通过Servlet或在或在JSP转译的转译的Servlet等方法获取。等方法获取。在jsp脚本中, 默认状态下session对象是可直接使用可用的;JSP页面可使用如下指令明确指出禁用页面可使用如下指令明确指出禁用Session功能:功能:内置对象对通信的控制:request封装客户端的服务请求封装客户端的服务请求;response封装对客户端的响应封装对客户端的响应;session维持请求维持请求/响应
30、过程中客响应过程中客户端的状态信息。户端的状态信息。39会话对象会话对象sessionsessionsession对象也可以通过request对象获取:getSession(boolean arg): 若若arg=true且会话对象未创立且会话对象未创立, 则创建则创建并返回;若并返回;若arg=false且会话对象未创立且会话对象未创立, 不创建不创建session对象。对象。getSession(): 若若session未创建则创建该对象未创建则创建该对象, 返回返回session对象。对象。40sessionsession生命周期示例生命周期示例41sessionsession对象的生存
31、时间对象的生存时间( (不关闭不关闭Cookie)Cookie)一般下列情况会使会话结束:因网络故障套接字删除、关闭浏因网络故障套接字删除、关闭浏览器、服务器重起、会话超时和览器、服务器重起、会话超时和主动撤销会话。主动撤销会话。42在会话对象中保存数据在会话对象中保存数据( (登录示例登录示例) )43applicationapplication对象对象每个web应用程序都有一个application对象负责提供该应用程序在JSP容器中运行时的一些全局信息。JSP容器自动为每个容器自动为每个web应用程序创建一个应用程序创建一个application对象,且对象,且在服务器关闭前在服务器关闭
32、前, 该对象一直存在该对象一直存在, 并被该程序所有用户共享。并被该程序所有用户共享。application对象允许同一应用程序系统的所有对象允许同一应用程序系统的所有JSP页面页面, 及同一及同一应用程序中的任何应用程序中的任何Web 组件组件, 在该对象中保存公共共享信息。在该对象中保存公共共享信息。appliaction对象与session对象的区别:session对象和用户客户端有关对象和用户客户端有关,不同客户端的不同客户端的session是不同的对是不同的对象象, 而而appliaction对象对所有的客户端都是相同的一个对象。对象对所有的客户端都是相同的一个对象。applicat
33、ion对象是javax.servlet.ServletContext接口的实例44applicationapplication对象的常用方法对象的常用方法45applicationapplication范围的使用范围的使用application范围的作用域:服务器一开始执行服务,到服务器关闭为止。application范围的作用域最大、存在时间最久范围的作用域最大、存在时间最久, 使用时要特别注使用时要特别注意意, 否则可能会造成服务器负载越来越重的情况。否则可能会造成服务器负载越来越重的情况。多次刷新后关闭所有浏览器,重新访问后关闭Tomcat,重新访问该程序后46configconfig对
34、象对象在编译JSP页面过程中用该对象存储Servlet的创建信息config对象实现对象实现javax.servlet.ServletConfig接口接口; 重要方法如下重要方法如下:例:config对象读取web.xml中Servlet配置参数和page对象一样很少使用。47exceptionexception对象对象exception对象代表JSP文件运行时所产生的异常对象。exception 对象是对象是 java.lang.Throwable类的实例。类的实例。若在若在JSP页面中出现没有捕捉到的异常信息页面中出现没有捕捉到的异常信息, 则系统将自动生成则系统将自动生成exceptio
35、n对象对象,并把该对象传送到并把该对象传送到page指令元素中设定的错误处指令元素中设定的错误处理页面中理页面中, 再在错误页面中处理相应的再在错误页面中处理相应的exception对象。对象。因此因此, 该对象不能在一般该对象不能在一般JSP页面中直接使用页面中直接使用, 只能在指定的错只能在指定的错误处理页面中使用误处理页面中使用,否则编译时会产生错误。否则编译时会产生错误。48用户请求时错误用户请求时错误产生原因:用户请求处理时错误的发生,往往不是语法错误,而可能是逻用户请求处理时错误的发生,往往不是语法错误,而可能是逻辑上的错误。辑上的错误。例如:一个计算除法的程序,当用户输入的分母为
36、零时程序会发生错误并抛出异常(Exception),这时应当交由异常处理机制(Exception Handling)做适当的处理。两个可选方案:由于由于JSP经转译会形成一个经转译会形成一个Servlet Java源文件源文件, 故可在故可在JSP页内页内使用使用try-catch捕获捕获JSP中可能出现的异常。中可能出现的异常。由于JSP页除包含HTML标签,还包含各种脚本元素,在JSP中用try-catch结构会使页面更加混乱。这种方案并不理想。采用采用JSP提供的更加简洁有效的异常处理机制。分为两步:提供的更加简洁有效的异常处理机制。分为两步:1)编写一个专用的JSP错误处理页面2)在可
37、能发生错误的JSP页面中指定专用的异常处理JSP页49会话跟踪会话跟踪会话跟踪: 在服务器端和客户端之间保持唯一的会话ID简单说,就是从上一个请求所传送的数据能够维持状态到下一简单说,就是从上一个请求所传送的数据能够维持状态到下一个请求,并且辨认出是相同的个请求,并且辨认出是相同的Client端所发送出的。端所发送出的。在Servlet规范中支持以下3种会话跟踪机制:SSL(安全套接字层安全套接字层)会话会话: 在客户与服务器端之间保持加密连接在客户与服务器端之间保持加密连接cookie: 使用使用cookie存储服务器分配给客户端的会话存储服务器分配给客户端的会话ID URL重写重写: 在每
38、个在每个URL的尾部添加一些额外数据的尾部添加一些额外数据(如如: 会话会话ID)供由于种种原因无法使用Cookie的用户。请求 1请求 2 请求 n服务器将唯一的会话ID分配给客户端以跟踪用户50SSLSSL会话会话SSL是一种在Internet上保证发送信息安全的通用协议,它基于公钥加密进行工作。SSL建立在所有的建立在所有的socket通信之上,所有的数据被发送到网络通信之上,所有的数据被发送到网络上之前都会被它加密,并在这些数据安全到达目的地之后对它上之前都会被它加密,并在这些数据安全到达目的地之后对它们解密。们解密。SSL可以让采用可以让采用SSL的服务器认证采用的服务器认证采用SS
39、L的客户端的客户端, 并在客户并在客户端和服务器端之间保持一种加密连接。端和服务器端之间保持一种加密连接。SSL会话在建立了加密连接的过程中在建立了加密连接的过程中, 客户和服务器都会产生客户和服务器都会产生会话密钥会话密钥, 它是一种用于加密和解密消息的对称密钥。它是一种用于加密和解密消息的对称密钥。Web浏览器一般都支持浏览器一般都支持HTTP和和HTTPS(以以SSL为基础的为基础的HTTP)基于基于HTTPS协议的服务器可用这个客户的对称密钥建立会话。协议的服务器可用这个客户的对称密钥建立会话。51Cookie(Cookie(小甜饼小甜饼) )Cookie概念Cookie由由Netsc
40、ape公司发明公司发明, 是一种由服务器发送到客户端的片是一种由服务器发送到客户端的片段信息段信息, 存储在客户端浏览器内存或硬盘中。存储在客户端浏览器内存或硬盘中。当用户访问某当用户访问某Web服务器时服务器时, Web服务器可要求浏览器查找并返服务器可要求浏览器查找并返回先前发送的回先前发送的Cookie信息。信息。Cookie的用途:Cookie使使Web服务器统计服务器统计某个访问者的访问次数、某个访问者的访问次数、最后访问时间和访问者进最后访问时间和访问者进入入Web服务器的路径。服务器的路径。在在Cookie有效期内,能使有效期内,能使用户在不登录的情况下进用户在不登录的情况下进入
41、曾经浏览过的网页。入曾经浏览过的网页。Cookie能帮助网站根据用能帮助网站根据用户信息实现个性化服务。户信息实现个性化服务。52Set-CookieSet-Cookie响应报头的格式响应报头的格式其中:Name/Value:Cookie的名称与相应的的名称与相应的Cookie值值Version:Cookie状态管理规范的版本状态管理规范的版本Domain/Path:Cookie所在所在URL域和域和URL的子集的子集Max-age:Cookie的生存时间的生存时间(以秒为单位以秒为单位)secure:HTTP指定指定Cookie是否可在是否可在HTTPS或或SSL上交换上交换 Set-Coo
42、kie: Name=Value; Version=vInt; Max-age=秒数; Comment=使用说明; Domain=所属域; Path=PATH; Secure; 53关于关于CookieCookie的常用方法的常用方法54CookieCookie的使用的使用( (服务器端读取服务器端读取) )55CookieCookie的使用的使用( (设置设置Cookie)Cookie)缺点:缺点:若客户端选择不接受Cookie, 则会不能正常运行56URLURL重写重写URL(统一资源定位)重写技术: 将一个唯一的会话ID添加到URL结尾, 以标识该会话。Session ID作为作为Cook
43、ie保存在客户浏览器中保存在客户浏览器中, 也称也称session cookie;当客户端不接受当客户端不接受Cookie时时, 可用可用URL重写机制来跟踪用户会话重写机制来跟踪用户会话;容器解释容器解释URL时时, 取出取出SessionID参数参数(Servlet规范规定参数名必规范规定参数名必须为须为jsessionid), 根据根据SessionID将请求与特定将请求与特定Session关联。关联。response对象与URL重写相关方法如下:说明:在编码方法执行时会判断客户端是否禁用Cookie,若已禁用, 则在参数url中附加SessionID,否则直接返回url。57禁用禁用C
44、ookieCookie时时URLURL重写示例重写示例58URLURL重写登录重写登录( (续续1/3)1/3)59URLURL重写验码重写验码( (续续2/3)2/3)60URLURL重写注销重写注销( (续续3/3)3/3)61小结:小结:本将主要介绍JSP页面中使用的常用内置, 它们一般分为四类:输入输入/输出对象输出对象: request、response、out作用域通信对象作用域通信对象: session、application、pageContextServlet 对象对象: config、page错误对象错误对象: exception本质上讲本质上讲,JSP的内置对象都是由特定的的内置对象都是由特定的Java类所产生类所产生的,在服务器运行时根据情况自动生成。的,在服务器运行时根据情况自动生成。会话跟踪常用方法:Cookie: Cookie是是Web服务器保存在客户端的一段文服务器保存在客户端的一段文本本, 当再访问同一网站时,浏览器将其原样返回当再访问同一网站时,浏览器将其原样返回URL重写重写:浏览器不支持浏览器不支持 Cookie或将其设置为不接受或将其设置为不接受 的情况,可通过的情况,可通过 URL 重写来实现会话管理。重写来实现会话管理。