《JSP内置对象》PPT课件.ppt_第1页
《JSP内置对象》PPT课件.ppt_第2页
《JSP内置对象》PPT课件.ppt_第3页
《JSP内置对象》PPT课件.ppt_第4页
《JSP内置对象》PPT课件.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论