《JSP脚本语言课件-ch.ppt》由会员分享,可在线阅读,更多相关《JSP脚本语言课件-ch.ppt(45页珍藏版)》请在三一办公上搜索。
1、Chapter 5JSP中的内建对象,内建对象概述requset对象session对象application对象page对象使用JSP中的内建对象用户注册系统,out 对象response 对象PageContext 对象config 对象exception对象,内建对象概述,JSP属性page范围request范围session范围application范围,内建对象概述,内建对象概述JSP提供了一些由容器实现和管理的内建对象,在JSP页面中可以直接使用,不需要实例化,通过存取这些内建对象实现与JSP页面的Servlet环境的互相访问。JSP一共提供了9个内建对象:out、request、r
2、eponse、session、pageContext、application、config、page、exception。由于JSP是构建在Servlet上的,从本质上讲,JSP的每个内建对象都与Java Servlet API包中的类相对应,在服务器运行时自动生成。例如:查看“work”目录中的servlet.java。,内建对象概述,需要注意的问题是对象名的写法,包括这些对象方法的调用时也要书写正确,因为Java语言本身是大小写敏感的。JSP技术提供给开发人员一项传递数据的机制,那就是利用setAttribute()和getAttribute()方法。例如:page1.jsp、page2.
3、jsp有时会将request、session、application 和pageContext 归为一类,原因在于它们都能借助setAttribute()和getAttribute()来设定和取得其属性(Attribute)。四个内建对象之间最大的差别在于范围(Scope)不一样JSP 有四种范围,分别为Page、Request、Session、Application。,内建对象概述,Page范围所谓的Page,指的是单单一页JSP Page的范围。若要将数据存入Page 范围时,可以用pageContext 对象的setAttribute()方法;若要取得Page范围的数据时,可以用page
4、Context对象的getAttribute()方法。例如:pagescope1、pagescope2。PageScope2.jsp根本无法取得PageScope1.jsp设定的Name和Password值,因为在PageScope1.jsp当中,是把Name 和Password 的属性范围设为Page,所以Name和Password值只能在PageScope1.jsp当中取得。例如:pagescope3。若数据设为Page范围时,数据只能在同一个JSP网页上取得,其他JSP网页却无法取得该数据。,内建对象概述,Request范围Request 的范围是指在一JSP 网页发出请求到另一个JSP
5、 网页之间,随后这个属性就失效。设定Request 的范围时可利用request 对象中的setAttribute()和getAttribute()。例如:RequestScope1.jsp、RequestScope2.jsp。除了利用转向(forward)的方法可以存取request 对象的数据之外,还能使用包含(include)的方法。,内建对象概述,Session、Application范围,内建对象概述,pageContext、request、session和application可以使用的储存和取得属性的方法。,内建对象概述,到目前已大约介绍完JSP 中四种范围(Scope):Pag
6、e、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);,内建对象概述,使用getAttribute(String name,Object value)取得name 属性的值时,会回传一个,因此还必须根据na
7、me 属性值的类型做转换类型的工作。例如:若要取得String 类型的Name 属性时:String Name=(String)pageContext.getAttribute(Name);若是Integer 类型的Year 属性时:Integer Year=(Integer)request.getAttribute(Year);,与输入/输出有关的内建对象,out对象request对象response对象,out对象,out对象:主要作用是在客户端的浏览器内输出数据结果信息,被封装为接口,可以通过out对象对缓冲区进行操作。通过调用pageContext.getOut()方法可以获取out对
8、象。out对象常用方法如下:public abstract void print()显示各种数据类型的内容。public abstract void println()分行显示各种数据类型的内容。public abstract void newLine()输出一个换行字符,换一行。public abstract void close()关闭输出流。,一个参数:boolean、char、int、long、float、double、,系统自动转换为字符串,out对象,out对象常用方法如下(续前页):public abstract void clear()清除缓冲区中的内容,不将数据发送至客户端。
9、public abstract void clearBuffer()清除缓冲区中的内容,并将数据发送至客户端。public int getBufferSize()获取缓冲区的大小。public abstract int getRemaining()获取缓冲区剩余空间的大小。public abstract void flush()输出缓冲区中的数据。public boolean isAutoFlush()获取AutoFlush的取值。,out对象,JSP程序利用out对象将网页内容输出时,都要和客户端做一次连接,并会为此而消耗不少资源;因此可以将要输出的内容放在一个固定大小的缓冲区中,等到缓冲区
10、满时再一次将内容送往客户端,这需要将autoFlush设为true,否则缓冲区满时将产生IOException错误。例如:测试autoFlush,setAutoFlushFalse.jsp注意:out.println()与等价。,request对象,request对象:作用是获取通过HTTP协议连接到服务器的客户端传递的数据,封装了用户提交的信息,通过调用该对象的方法可以获得封装的信息,被封装为接口。HttpServletRequest 接口提供的方法可分为四大类:管理request属性的方法:public getAttribute()返回name指定的属性值,若name不存在返回null。p
11、ublic getAttributeNames()返回request对象所有属性的名字集合。public void setAttribute(name,o)设置该请求中的一个属性。,request对象,能够取得请求参数的方法:能够取得请求HTTP 标头的方法:,request对象,其他方法如:取得请求的URL、IP 和session:,request对象,获取环境参数例如:requestExample.jsp,利用request对象获取运行环境的各种参数。request对象的web应用例如:showParameter.html、showParameter.jsp,response对象,resp
12、onse对象:作用是封装JSP 处理数据后产生的结果,并将其传回到客户端响应客户的请求,被封装为 接口。response对象用来提供给客户端浏览器的参考信息,如响应的标头、响应本体(HTML文本内容)及服务器端的状态码信息。注意:任何标头的设定都应在响应本体传回前设定好,否则设定的值将不起作用。例如:常用response.setContentType(“ContentType String”)设定响应的MIME类型与编码方式。response.setContentType(“text/html;charset=Big5”),response对象,HttpServletResponse 接口提供
13、的方法可分为三大类:设定HTTP标头的方法:,response对象,HttpServletResponse 接口提供的方法可分为三大类:设定响应状态码的方法:用来URL 重写(rewriting)的方法:例如:response.jsp,与context有关的内建对象,session对象application对象PageContext对象,cookie技术,HTTP是一种无连接的协议。cookie的常见用途:记录用户历史访问信息Cookie使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径;Cookie告诉在线广告商广告被点击的次数,从而可以更精确的投放广告;Cookie能帮助站
14、点统计用户个人资料以实现各种各样的个性化服务;自动登录Cookie有效期限未到时,能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。,cookie技术,cookie:是一个小的、已命名的数据元素,服务器使用Set-Cookie头标将之作为HTTP数据包的一部分传送到客户端,实质是一段纯文本信息,保存在客户端指定目录,对同一服务器的后续请求使用一个cookie头标返回到服务器。cookie是与Web站点而不是与具体页面相联系的。cookie是有时效性的,有效期时间以秒为单位。从编程角度看,JSP中的cookie是Java提供的一个类创建cookie:cookie中带有两个字符串参数代
15、表cookie的名称和值Cookie demoCookie=new Cookie(“CookieName”,“CookieValue”),cookie技术,设置cookie属性,cookie技术,设置cookie属性,cookie技术,实现会话的四种方式,实现会话的四种方式使用持续Cookie。重写包含额外参数的URL:利用GET方法在URL尾部添加一些额外的参数来达到会话追踪的目的。http:/host/path/file.html;jsessionid=1234,建立含有数据的隐藏表单字段。使用内建session对象JSP引擎产生一个session对象,同时分配一个String类型的ID号
16、,JSP引擎同时将这个ID号发送到客户端,存放在cookie中,使session对象和客户间建立了一一对应的关系。,session与cookie的区别,session和cookie有以下区别:从存放的地点看:cookie存放在客户端的硬盘里;session保存在服务器端的内存里。从存活的时间看:cookie可以长期保存在客户端,数据失效期限由expires属性指定;session随用户登陆网站而临时生成,随用户的下线或超时而消失。从安全性来看:cookie保存在客户端,安全性较差;session存放在服务器,用户不能修改,且浏览器关闭后失效,安全性好,但服务器反复读写磁盘文件,性能有影响。从实
17、现方式看:cookie在后继访问中将信息返回给服务器;session是一个动作状态的持续,是一个会话。,session对象,session对象:作用是记录每个客户端的访问状态以便跟踪每个客户端的操作状态,被封装为 接口,可以通过pageContext.getSession()方法获取一个session对象。在JavaBean和Servlet中使用session需要从request对象中获得:HttpSession session=request.getSession();客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String型的ID号并发送到客户
18、端写入cookie,使客户与服务器建立一一对应的关系。客户继续访问网站上的其它页面时,不再分配给客户新的session对象,直到客户端浏览器关闭,该session对象消失,客户与服务器的会话结束。当客户重新打开浏览器访问网站时创建新的session。,session对象,提供的方法如下:,session对象,public getAttribute(name)获取指定的name参数值。public getAttributeNames()获取session的所有参数名。public void name,value)设置指定name的session属性。public void name)删除指定的s
19、ession属性。例如:sessionLife.jsp例如:sessionE1.jsp、sessionE2.jsp、sessionE3.jsp,application对象,application对象:负责提供应用程序在服务器中运行时的一些全局信息,直到服务器关闭为止,被封装为 接口。类提供了三类方法:接口容器相关信息的方法:,application对象,类提供了三类方法:有关服务端的路径和文件的方法:,application对象,类提供了三类方法:有关信息记录的方法:例如:application.jsp,pageContent对象,PageContent对象:一般用于设置、获取当前JSP页面的
20、一些属性,也能够存取页面的其他隐含对象(out、request、response、session、application等)及其所支持的属性,被封装为 接口。类提供了两类方法:用于取得属性的方法:,pageContent对象,不过在使用下列方法时,需要指定范围的参数:,类所提供范围参数有四个常数,分别代表四种范围:,pageContent对象,用于取得其它隐含对象的方法:,与Servlet和error有关的内建对象,config对象page对象exception对象,config对象,config对象:主要作用是取得服务器的配置信息,被封装为 javax.servlet.servletConf
21、ig接口,通过pageContext.getServletConfig()方法可以获取一个config对象,提供存取servlet类初始化参数以及有关服务器环境信息的ServletContext对象。config对象的常用方法:public getInitParatemer(name)获取服务器指定name参数的初始值。public getInitParameterNames()获取服务器所有初始参数的名字。public ServletContext getServletContext()获取Servlet的上下文。public getServletName()获取Servlet的服务器名。,
22、page对象,page对象:代表JSP文件编译后的Servlet类对象,实质就是,是该类的一个实例。例如:pageInfo.jsp可以用(javax.servlet.jsp.HttpJspPage)page)调用Servlet类的方法和属性,作用和Java中的this一样,实际上很少用。,exception对象,exception对象:作用是显示异常信息,代表了JSP文件运行时所产生的例外对象,是类的一个实例,只有在包含“”的页面中才可以被使用,在一般的JSP页面中使用该对象无法编译JSP文件。JSP页面编写过程中常出现的错误:空指针错误:格式化数字错误:类定义未找到错误:JAVA错误:,使用JSP中的内建对象,用户注册系统获得完整的请求URL,用户注册系统,前面介绍了JSP的内建对象,熟练使用这些内置对象是开发JSP应用程序的基本要求,尤其是对于request、session和application对象更是必须要掌握的。会使用对象所具有的方法,能熟练使用每一种对象的几种常用方法。例如:用户注册系统,register.html和register.jsp,例如:获得完整的请求URL,showURLInfo.jsp,