脚本语言与交互式网页设计:ch05 JSP中的内建对象

上传人:re****.1 文档编号:570547456 上传时间:2024-08-05 格式:PPT 页数:45 大小:936.50KB
返回 下载 相关 举报
脚本语言与交互式网页设计:ch05 JSP中的内建对象_第1页
第1页 / 共45页
脚本语言与交互式网页设计:ch05 JSP中的内建对象_第2页
第2页 / 共45页
脚本语言与交互式网页设计:ch05 JSP中的内建对象_第3页
第3页 / 共45页
脚本语言与交互式网页设计:ch05 JSP中的内建对象_第4页
第4页 / 共45页
脚本语言与交互式网页设计:ch05 JSP中的内建对象_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《脚本语言与交互式网页设计:ch05 JSP中的内建对象》由会员分享,可在线阅读,更多相关《脚本语言与交互式网页设计:ch05 JSP中的内建对象(45页珍藏版)》请在金锄头文库上搜索。

1、Chapter 5JSP中的内建对象中的内建对象内建对象概述内建对象概述requset对象对象session对象对象application对象对象page对象对象使用使用JSP中的内建对象中的内建对象用户注册系统用户注册系统out 对象对象response 对象对象PageContext 对象对象config 对象对象exception对象对象内建对象概述内建对象概述JSP属性属性page范围范围request范围范围session范围范围application范围范围3 3内建对象概述内建对象概述内建对象概述内建对象概述JSP提供了一些由容器实现和管理的内建对象,在提供了一些由容器实现和管理

2、的内建对象,在JSP页面页面中可以直接使用,不需要实例化,通过存取这些内建对象中可以直接使用,不需要实例化,通过存取这些内建对象实现与实现与JSP页面的页面的Servlet环境的互相访问。环境的互相访问。JSP一共提供了一共提供了9个内建对象:个内建对象:out、request、reponse、session、 pageContext、 application、 config、page、exception。由于由于JSP是构建在是构建在Servlet上的,从本质上讲,上的,从本质上讲, JSP的每个的每个内建对象都与内建对象都与Java Servlet API包中的类相对应,在服务器包中的类相

3、对应,在服务器运行时自动生成。运行时自动生成。例如:例如:查看查看“work”目录中的目录中的servlet.java。4 4内建对象概述内建对象概述需要注意的问题是对象名的写法,包括这些对象方法的调需要注意的问题是对象名的写法,包括这些对象方法的调用时也要书写正确,因为用时也要书写正确,因为Java语言本身是大小写敏感的。语言本身是大小写敏感的。JSP技术提供给开发人员一项传递数据的机制,那就是技术提供给开发人员一项传递数据的机制,那就是利用利用setAttribute( )和和getAttribute( )方法。方法。例如:例如:page1.jsp、page2.jsp有时会将有时会将req

4、uest、session、application 和和pageContext 归为一类,原因在于它们都能借助归为一类,原因在于它们都能借助setAttribute( )和和getAttribute( )来设定和取得其属性来设定和取得其属性(Attribute)。四个内建对象之间最大的差别在于范围四个内建对象之间最大的差别在于范围(Scope)不一样不一样JSP 有四种范围,分别为有四种范围,分别为Page、Request、Session、Application。5 5内建对象概述内建对象概述Page范围范围所谓的所谓的Page,指的是单单一页,指的是单单一页JSP Page的范围。的范围。若要

5、将数据存入若要将数据存入Page 范围时,可以用范围时,可以用pageContext 对对象的象的setAttribute( )方法;若要取得方法;若要取得Page范围的数据时,范围的数据时,可以用可以用pageContext对象的对象的getAttribute( )方法。方法。例如:例如:pagescope1、pagescope2。PageScope2.jsp根本无法取得根本无法取得PageScope1.jsp设定的设定的Name和和Password值,因为在值,因为在PageScope1.jsp当中,是当中,是把把Name 和和Password 的属性范围设为的属性范围设为Page,所以,

6、所以Name和和Password值只能在值只能在PageScope1.jsp当中取得。当中取得。例如:例如:pagescope3。若数据设为若数据设为Page范围时,数据只能在同一个范围时,数据只能在同一个JSP网页网页上取得,其他上取得,其他JSP网页却无法取得该数据。网页却无法取得该数据。6 6内建对象概述内建对象概述Request范围范围Request 的范围是指在一的范围是指在一JSP 网页发出请求到另一个网页发出请求到另一个JSP 网页之间,随后这个属性就失效。网页之间,随后这个属性就失效。设定设定Request 的范围时可利用的范围时可利用request 对象中的对象中的setAt

7、tribute( )和和getAttribute( )。例如:例如:RequestScope1.jsp、 RequestScope2.jsp。除了利用转向除了利用转向(forward)的方法可以存取的方法可以存取request 对象的对象的数据之外,还能使用包含数据之外,还能使用包含(include)的方法。的方法。7 7内建对象概述内建对象概述Session、Application范围范围8 8内建对象概述内建对象概述pageContext、request、session和和application可以使用可以使用的储存和取得属性的方法。的储存和取得属性的方法。9 9内建对象概述内建对象概述到

8、目前已大约介绍完到目前已大约介绍完JSP 中四种范围中四种范围(Scope):Page、Request、Session 和和Application。要设置数据范围时,则只需要:要设置数据范围时,则只需要:pageContext.setAttribute(Year, new Integer(2001);request.setAttribute(Month, new Integer(12) );session.setAttribute(Day, new Integer(27) );application.setAttribute(Times, new Integer(10);1010内建对象概述内

9、建对象概述使用使用getAttribute(String name,Object value)取得取得name 属性的值时,会回传一个属性的值时,会回传一个java.lang.Object,因此还必,因此还必须根据须根据name 属性值的类型做转换类型的工作。属性值的类型做转换类型的工作。例如:例如:若要取得若要取得String 类型的类型的Name 属性时:属性时:String Name = (String)pageContext.getAttribute(Name);若是若是Integer 类型的类型的Year 属性时:属性时:Integer Year = (Integer)request

10、.getAttribute(Year);1111与输入与输入/输出有关的内建对象输出有关的内建对象out对象对象request对象对象response对象对象1212out对象对象out对象:对象:主要作用是在客户端的浏览器内输出数据主要作用是在客户端的浏览器内输出数据结果信息,被封装为结果信息,被封装为javax.servlet.jsp.JspWriter接口,接口,可以通过可以通过out对象对缓冲区进行操作。对象对缓冲区进行操作。通过调用通过调用pageContext.getOut()方法可以获取方法可以获取out对象。对象。out对象常用方法如下:对象常用方法如下:public abst

11、ract void print()显示各种数据类型的内容。显示各种数据类型的内容。public abstract void println()分行显示各种数据类型的内容。分行显示各种数据类型的内容。public abstract void newLine()输出一个换行字符,换一行。输出一个换行字符,换一行。public abstract void close()关闭输出流。关闭输出流。一个参数:一个参数:boolean、char、int、long、float、double、java.lang.String、java.lang.Object,系,系统自动转换为字符串统自动转换为字符串1313o

12、ut对象对象out对象常用方法如下对象常用方法如下(续前页续前页):public abstract void clear ()清除缓冲区中的内容,不将数据发送至客户端。清除缓冲区中的内容,不将数据发送至客户端。public abstract void clearBuffer ()清除缓冲区中的内容,并将数据发送至客户端。清除缓冲区中的内容,并将数据发送至客户端。public int getBufferSize()获取缓冲区的大小。获取缓冲区的大小。public abstract int getRemaining()获取缓冲区剩余空间的大小。获取缓冲区剩余空间的大小。public abstrac

13、t void flush()输出缓冲区中的数据。输出缓冲区中的数据。public boolean isAutoFlush()获取获取AutoFlush的取值。的取值。1414out对象对象JSP程序利用程序利用out对象将网页内容输出时,都要和客户对象将网页内容输出时,都要和客户端做一次连接,并会为此而消耗不少资源;端做一次连接,并会为此而消耗不少资源;因此可以将要输出的内容放在一个固定大小的缓冲区因此可以将要输出的内容放在一个固定大小的缓冲区中,等到缓冲区满时再一次将内容送往客户端,这需中,等到缓冲区满时再一次将内容送往客户端,这需要将要将autoFlush设为设为true,否则缓冲区满时将

14、产生,否则缓冲区满时将产生IOException错误。错误。例如:测试例如:测试autoFlush,setAutoFlushFalse.jsp注意:注意:out.println() 与与等价等价。1515request对象对象request对象:对象:作用是获取通过作用是获取通过HTTP协议连接到服协议连接到服务器的客户端传递的数据,封装了用户提交的信息,务器的客户端传递的数据,封装了用户提交的信息,通过调用该对象的方法可以获得封装的信息,被封装通过调用该对象的方法可以获得封装的信息,被封装为为javax.servlet.http.HttpServletRequest接口。接口。HttpSer

15、vletRequest 接口提供的方法可分为四大类:接口提供的方法可分为四大类:管理管理request属性的方法:属性的方法:public java.lang.Object getAttribute ()返回返回name指定的属性值,若指定的属性值,若name不存在返回不存在返回null。public java.util.Enumeration getAttributeNames ()返回返回request对象所有属性的名字集合。对象所有属性的名字集合。public void setAttribute (java.lang.String name, java.lang.Object o)设置该

16、请求中的一个属性。设置该请求中的一个属性。1616request对象对象能够取得请求参数的方法:能够取得请求参数的方法:能够取得请求能够取得请求HTTP 标头的方法:标头的方法:1717request对象对象其他方法如:取得请求的其他方法如:取得请求的URL、IP 和和session:1818request对象对象获取环境参数获取环境参数例如:例如:requestExample.jsp,利用利用request对象获取运行对象获取运行环境的各种参数。环境的各种参数。request对象的对象的web应用应用例如:例如:showParameter.html、showParameter.jsp1919

17、response对象对象response对象:对象:作用是封装作用是封装JSP 处理数据后产生的处理数据后产生的结果,并将其传回到客户端响应客户的请求,被封装结果,并将其传回到客户端响应客户的请求,被封装为为 javax.servlet.http.HttpServletResponse接口。接口。response对象用来提供给客户端浏览器的参考信息,对象用来提供给客户端浏览器的参考信息,如响应的标头、响应本体(如响应的标头、响应本体(HTML文本内容)及服务文本内容)及服务器端的状态码信息。器端的状态码信息。注意:注意:任何标头的设定都应在响应本体传回前设定好,任何标头的设定都应在响应本体传回

18、前设定好,否则设定的值将不起作用。否则设定的值将不起作用。例如:常用例如:常用response.setContentType(“ContentType String”)设定响应的设定响应的MIME类型与编码方式。类型与编码方式。response.setContentType(“text/html; charset=Big5”)2020response对象对象HttpServletResponse 接口提供的方法可分为三大类:接口提供的方法可分为三大类:设定设定HTTP标头的方法:标头的方法:2121response对象对象HttpServletResponse 接口提供的方法可分为三大类:接口

19、提供的方法可分为三大类:设定响应状态码的方法:设定响应状态码的方法:用来用来URL 重写重写(rewriting)的方法:的方法:例如:例如:response.jsp2222与与context有关的内建对象有关的内建对象session对象对象application对象对象PageContext对象对象2323cookie技术技术HTTP是一种无连接的协议。是一种无连接的协议。cookie的常见用途:的常见用途:记录用户历史访问信息记录用户历史访问信息Cookie使站点跟踪特定访问者的访问次数、最后访使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的问时间和访问者进入站点的路径路径;

20、Cookie告诉告诉在线在线广告商广告被点击的次数,从而可广告商广告被点击的次数,从而可以更精确的投放广告;以更精确的投放广告;Cookie能帮助站点统计用户个人资料以实现各种各能帮助站点统计用户个人资料以实现各种各样的个性化服务;样的个性化服务;自动登录自动登录Cookie有效期限未到时,能使用户在不键入密码和有效期限未到时,能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。用户名的情况下进入曾经浏览过的一些站点。2424cookie技术技术cookie:是一个小的、已命名的数据元素,服务器使是一个小的、已命名的数据元素,服务器使用用Set-Cookie头标将之作为头标将之作为H

21、TTP数据包的一部分传送数据包的一部分传送到客户端,实质是一段纯文本信息,保存在客户端指到客户端,实质是一段纯文本信息,保存在客户端指定目录,对同一服务器的后续请求使用一个定目录,对同一服务器的后续请求使用一个cookie头头标返回到服务器。标返回到服务器。cookie是与是与Web站点而不是与具体页面相联系的。站点而不是与具体页面相联系的。cookie是有时效性的,有效期时间以秒为单位。是有时效性的,有效期时间以秒为单位。从编程角度看,从编程角度看,JSP中的中的cookie是是Java提供的一个类提供的一个类创建创建cookie:cookie中带有两个字符串参数代表中带有两个字符串参数代表

22、cookie的名称和值的名称和值Cookie demoCookie = new Cookie(“CookieName”,“CookieValue”)2525cookie技术技术设置设置cookie属性属性2626cookie技术技术设置设置cookie属性属性2727cookie技术技术设置设置cookie的有效期:的有效期:Cookie 变量名变量名.setMaxAge(有效周期有效周期);例如:例如:String sessionID=makeUniqueString();HashMap sessionInfo=new HashMap();HashMap globaTable=findTab

23、leStoringSessions();globeTable.put(sessionID, sessionInfo);Cookie sessionCookie = new Cookie(“JSESSION”, sessionID);cookie setMaxAge(30*60);/存活时间存活时间30分钟分钟response.addCookie(cookie); /写入客户硬盘写入客户硬盘会话信息记录在会话信息记录在HashMap中,保存在服务器端,并用中,保存在服务器端,并用sessionID标识,标识,sessionID保存在客户端的保存在客户端的Cookie中。中。例如:例如:write

24、Cookie.jsp、readCookie.jsp2828实现会话的四种方式实现会话的四种方式 实现会话的四种方式实现会话的四种方式使用持续使用持续Cookie。重写包含额外参数的重写包含额外参数的URL:利用:利用GET方法在方法在URL尾部添尾部添加一些额外的参数来达到会话追踪的目的。加一些额外的参数来达到会话追踪的目的。http:/host/path/file.html;jsessionid=1234,建立含有数据的隐藏表单字段。建立含有数据的隐藏表单字段。使用内建使用内建session对象对象JSP引擎产生一个引擎产生一个session对象,同时分配一个对象,同时分配一个String类

25、型的类型的ID号,号,JSP引擎同时将这个引擎同时将这个ID号发送到客户号发送到客户端,存放在端,存放在cookie中,使中,使session对象和客户间建立了对象和客户间建立了一一对应的关系。一一对应的关系。2929session与与cookie的区别的区别session和和cookie有以下区别:有以下区别:从存放的地点看:从存放的地点看:cookie存放在客户端的硬盘里;存放在客户端的硬盘里;session保存在服务器端的内存里。保存在服务器端的内存里。从存活的时间看:从存活的时间看:cookie可以长期保存在客户端,数可以长期保存在客户端,数据失效期限由据失效期限由expires属性指

26、定;属性指定;session随用户登陆网随用户登陆网站而临时生成,随用户的下线或超时而消失。站而临时生成,随用户的下线或超时而消失。从安全性来看:从安全性来看:cookie保存在客户端,安全性较差;保存在客户端,安全性较差;session存放在服务器,用户不能修改,且浏览器关闭存放在服务器,用户不能修改,且浏览器关闭后失效,安全性好,但服务器反复读写磁盘文件,性后失效,安全性好,但服务器反复读写磁盘文件,性能有影响。能有影响。从实现方式看:从实现方式看:cookie在后继访问中将信息返回给服在后继访问中将信息返回给服务器;务器;session是一个动作状态的持续,是一个会话。是一个动作状态的持

27、续,是一个会话。3030session对象对象session对象:对象:作用是记录每个客户端的访问状态以作用是记录每个客户端的访问状态以便跟踪每个客户端的操作状态,被封装为便跟踪每个客户端的操作状态,被封装为 javax.servlet.http.HttpSession接口,可以通过接口,可以通过pageContext.getSession()方法获取一个方法获取一个session对象。对象。在在JavaBean和和Servlet中使用中使用session需要从需要从request对象对象中获得:中获得:HttpSession session=request.getSession();客户首次

28、访问服务器上的一个客户首次访问服务器上的一个JSP页面时,页面时,JSP引擎产生一引擎产生一个个session对象,同时分配一个对象,同时分配一个String型的型的ID号并发送到客户号并发送到客户端写入端写入cookie,使客户与服务器建立一一对应的关系。,使客户与服务器建立一一对应的关系。客户继续访问网站上的其它页面时,不再分配给客户新的客户继续访问网站上的其它页面时,不再分配给客户新的session对象,直到客户端浏览器关闭,该对象,直到客户端浏览器关闭,该session对象消失,对象消失,客户与服务器的会话结束。客户与服务器的会话结束。当客户重新打开浏览器访问网站时创建新的当客户重新打

29、开浏览器访问网站时创建新的session。3131session对象对象javax.servlet.http.HttpSession提供的方法如下:提供的方法如下:3232session对象对象public java.lang.Object getAttribute (java.lang.String name)获取指定的获取指定的name参数值。参数值。public java.util.Enumeration getAttributeNames ()获取获取session的所有参数名。的所有参数名。public void setAttribute(java.lang.String name,

30、 java.lang.Object value)设置指定设置指定name的的session属性。属性。public void removeAttribute(java.lang.String name)删除指定的删除指定的session属性。属性。例如:例如:sessionLife.jsp例如:例如:sessionE1.jsp、sessionE2.jsp、sessionE3.jsp3333application对象对象application对象:对象:负责提供应用程序在服务器中运负责提供应用程序在服务器中运行时的一些全局信息,直到服务器关闭为止,被封装行时的一些全局信息,直到服务器关闭为止,被

31、封装为为 javax.servlet.ServletContext接口。接口。javax.servlet.ServletContext类提供了三类方法:类提供了三类方法:接口容器相关信息的方法:接口容器相关信息的方法:3434application对象对象javax.servlet.ServletContext类提供了三类方法:类提供了三类方法:有关服务端的路径和文件的方法:有关服务端的路径和文件的方法:3535application对象对象javax.servlet.ServletContext类提供了三类方法:类提供了三类方法:有关信息记录的方法:有关信息记录的方法:例如:例如:appli

32、cation.jsp3636pageContent对象对象PageContent对象:对象:一般用于设置、获取当前一般用于设置、获取当前JSP页页面的一些属性,也能够存取页面的其他隐含对象面的一些属性,也能够存取页面的其他隐含对象(out、request、response、session、application等等) 及其所支持及其所支持的属性,被封装为的属性,被封装为 javax.servlet.jsp.PageContext接口接口。javax.servlet.jsp.PageContext类提供了两类方法:类提供了两类方法:用于取得属性的方法:用于取得属性的方法:3737pageCont

33、ent对象对象不过在使用下列方法时,需要指定范围的参数:不过在使用下列方法时,需要指定范围的参数:javax.servlet.jsp.PageContext 类所提供范围参数有四类所提供范围参数有四个常数,分别代表四种范围:个常数,分别代表四种范围:3838pageContent对象对象用于取得其它隐含对象的方法:用于取得其它隐含对象的方法:与与Servlet和和error有关的内建对象有关的内建对象config对象对象page对象对象exception对象对象4040config对象对象config对象:对象:主要作用是取得服务器的配置信息,被主要作用是取得服务器的配置信息,被封装为封装为

34、javax. servlet.servletConfig接口,通过接口,通过pageContext.getServletConfig()方法可以获取一个方法可以获取一个config对象,提供存取对象,提供存取servlet类初类初始化参数以及有关服务器环境信息的始化参数以及有关服务器环境信息的ServletContext对对象。象。config对象的常用方法:对象的常用方法: public java.lang.String getInitParatemer (java.lang.String name)获取服务器指定获取服务器指定name参数的初始值。参数的初始值。 public java.u

35、til.Enumeration getInitParameterNames()获取服务器所有初始参数的名字。获取服务器所有初始参数的名字。 public ServletContext getServletContext()获取获取Servlet的上下文。的上下文。 public java.lang.String getServletName()获取获取Servlet的服务器名。的服务器名。4141page对象对象page对象:对象:代表代表JSP文件编译后的文件编译后的Servlet类对象,实类对象,实质就是质就是java.lang.Object,是该类的一个实例。,是该类的一个实例。例如:例

36、如:pageInfo.jsp可以用可以用( (javax.servlet.jsp.HttpJspPage)page )调用调用Servlet类的方法和属性,作用和类的方法和属性,作用和Java中的中的this一样,实一样,实际上很少用。际上很少用。4242exception对象对象exception对象:对象:作用是显示异常信息,代表了作用是显示异常信息,代表了JSP文件运行时所产生的例外对象,是文件运行时所产生的例外对象,是java.lang.Throwable类类的一个实例,只有在包含的一个实例,只有在包含“”的页面中才可以被使用,在一般的的页面中才可以被使用,在一般的JSP页页面中使用该

37、对象无法编译面中使用该对象无法编译JSP文件。文件。JSP页面编写过程中常出现的错误页面编写过程中常出现的错误:空指针错误:空指针错误: java.lang.NullPointerException格式化数字错误:格式化数字错误: java.lang.NumberFormatException类定义未找到错误:类定义未找到错误: java.lang.NoClassDefFoundErrorJAVA错误:错误: java.lang.Error使用使用JSP中的内建对象中的内建对象用户注册系统用户注册系统获得完整的请求获得完整的请求URL4444用户注册系统用户注册系统前面介绍了前面介绍了JSP的内建对象,熟练使用这些内置对象是的内建对象,熟练使用这些内置对象是开发开发JSP应用程序的基本要求,尤其是对于应用程序的基本要求,尤其是对于request、session和和application对象更是必须要掌握的。对象更是必须要掌握的。会使用对象所具有的方法,能熟练使用每一种对象的会使用对象所具有的方法,能熟练使用每一种对象的几种常用方法。几种常用方法。例如:用户注册系统,例如:用户注册系统,register.html和和register.jsp4545例如:获得完整的请求例如:获得完整的请求URL,showURLInfo.jsp

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号