第5章JSP内置对象_第1页
第5章JSP内置对象_第2页
第5章JSP内置对象_第3页
第5章JSP内置对象_第4页
第5章JSP内置对象_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、2022年4月20日1第5章 JSP内置对象2022年4月20日2 所谓JSP内置对象,是指不需要声明而直接可以在JSP网页中使用的对象。 需要注意的问题是对象名的写法,包括这些对象方法的调用时也要书写正确,因为Java语言本身是大小写敏感的。2022年4月20日3教学目标和重点 本章学习目标: 了解和掌握request请求对象方法 了解和掌握response响应对象方法 了解和掌握out 输出对象方法 了解和掌握session会话对象方法 了解和掌握application 应用程序对象方法 了解pageContext 页面上下文对象方法 了解config 配置对象方法 了解page 页面对象

2、方法 了解exception 例外对象方法 2022年4月20日4隐式对象隐式对象输入输出对象作用域通信对象Servlet 对象错误对象requestresponseoutsessionpageContextapplicationpageconfigexception2022年4月20日55.1 JSP内置对象概述内置对象概述对象名称衍 生 类功 能 说 明requestjavax.servlet.ServletRequest.HttpServletRequest取得客户端数据与系统的信息responsejavax.servlet.ServletRequest.HttpServletReque

3、st响应客户端信息applicationjavax.servlet.ServletContext记录与处理上线者共享的数据sessionjavax.servlet.http.HttpSession记录与处理上线者的个别数据outjavax.servlet.jsp.JspWriter控制数据输出的操作configjavax.servlet.ServletConfig取得JSP编译后的Servlet信息pageContextjavax.servlet.jsp.PageContext存取与处理系统运行时期的各项信息pagejava.lang.Object代表目前的这个JSP网页对象exception

4、java.lang.Throwable异常处理机制2022年4月20日6 request与response对象 JSP网页能够具备与用户互动的功能,关键在于request对象与response对象所提供的功能,request让服务器取得用户在网页表单中所输入的数据内容,response则提供服务器端程序响应客户端信息所需的功能。 request与response对象,是学习建构JSP网页交互功能最重要的两个内置对象,它们与HTML窗体标签有着相当密切的关系,下面章节对其将会有详细的说明与范例介绍。2022年4月20日7 out对象 JSP是一种动态的网页,其与HTML这一类静态文件的最大不同,

5、在于同一份网页经过程序运算得以根据各种条件及情况进行呈现,out对象在这一方面提供相关的支持,服务器端利用out对象将所要输出的内容,在传送至网页的时候动态写入客户端。 session与application对象 application与session这两个对象,基本上被使用于记录和处理JSP网页之间的共享数据。 由于因特网本身是一种无联机状态的应用程序,当一份网页文件从网站服务器传送至客户端的浏览器之后,客户端和服务器端之间就没有任何联机状态存在,这个先天的缺陷,让网页无法存储应用程序运行期间所需的共享数据,application与session对象就是被设计用来解决这样的问题的。2022年

6、4月20日8 config、pageContext以及page对象 这3个对象被用于存取JSP网页程序运行阶段的各种信息内容,其中config包含JSP网页文件被编译成为Servlet之后的相关信息、pageContext则是提供系统运行期间各种信息内容的存取操作功能,page代表目前正在运行的JSP网页对象。 JSP服务器端应用程序可以运用这3个对象,存取网页运行期间的各种环境信息,同时将当前网页当作对象进行操作,本章最后将对于这几个对象将会有详细的说明与探讨。 exception对象 exception为JSP提供用于处理程序运行错误的异常对象,此对象搭配功能强大的异常处理机制,运用于JS

7、P网页的程序除错与异常处理上。2022年4月20日95.2 request对象 HTTP通信协议是客户与服务器之间一种提交(请求)信息与响应信息(request/respone)的通信协议。在JSP中,内置对象request封装了用户提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。 Request内置对象代表了客户端的请求信息,主要用于接受客户端通过HTTP协议传送给服务器端的数据。 Request对象封装请求信息的内容:请求的头信息(Header)、系统信息(比如:编码方式)、请求的方式(比如:GET或POST)、请求的参数名称和参数值等信息; 还

8、提供了获取cookie和session等对象、数据的方法。 通过request对象可以获取用户的请求信息2022年4月20日105.2.1 request对象常用方法 方 法说 明Object getAttribute(String name)返回name所指定的属性值void setAttribute(String name, Object obj)设定name所指定的属性值为objvoid removeAttribute(String name)删除name所指定的属性java.util.Enumeraton getAttributeNames()返回request对象所有属性的名称集合S

9、tring getParameter(String name)从客户端获取name所指定的参数值java.util.Enumeraton getParameterNames()从客户端获取所有参数名称String getParameterValues(String name)从客户端获取name 所指定参数的所有值String getServerName()返回服务器名称int getServerPort()返回服务器接受请求的端口String getRemoteAddr()获取客户端的IP地址int getRemotePort()获取客户端的请求端口String getContextPath

10、()返回环境路径(Web服务程序根目录)String getCharacterEncoding()返回请求正文中所使用的字符编码void setCharacterEncoding(String chaen)设定请求正文中所使用的字符编码Cookie getCookies()返回客户端所有的Cookie对象Session getSession()返回请求相关的session对象String getContentType()返回请求正文的MIME类型int getContentLength()返回请求的Body的长度,单位为字节2022年4月20日115.2.1 request对象应用实例 1.

11、String getParameter(String name) 用表单和超链接、传递参数的时候,使用getParameter(String name)接收传递的参数。 返回给定参数的值,当传递给此方法的参数名没有实际参数与之对应时,返回null。 使用getParameter(String name)取得的值都是字符串类型,需要转换为需要的类型。 【例5-1】request对象的应用实例。2022年4月20日12 2. Enumeration getParameterNames() 返回值类型:枚举类型Enumeration。 得到客户端提交的所有参数的名称。 如【例5-1】中的代码段通过循

12、环可获取客户端提交的所有参数的名字 2022年4月20日13 3.void setCharacterEncoding(String chaen) 在form表单采用post方式提交请求时,需要设置request对象的编码方式,保证能够正确地取到数据。例: 2022年4月20日14 4. String getParameterValues(String name) 使用getParameterValues()能够取出变量的多个值。返回值类型: 字符串数组 String。 能够取出变量的多个值,主要用于获取复选框的值或是下拉列表带multiple属性的值。 【例5-2】读取复选框数据例子。 【例5

13、-3】读取带multiple属性的下拉列表数据的例子。 【例5-4】利用request对象的一些方法,回显系统信息。2022年4月20日155.3 response对象对象 response对象用于将服务器端数据发送到客户端以响应客户端的请求。response对象实现HttpServletResponse接口,可对客户的请求做出动态的响应,向客户端发送数据,如Cookie、HTTP文件头信息等,一般是HttpServlet.Response类或其子类的一个对象。2022年4月20日165.3.1 response对象常用方法方 法说 明 void sendRedirect(String red

14、irectURL)将客户端重定向到指定的URLvoid setContentType(String contentType)设置响应数据内容的类型void setContentLength(int contentLength)设置响应数据内容的长度void setHeader(Stringname, String value)设置HTTP应答报文的首部字段和值及页面的自动刷新void setStatus(int n)设置响应的状态行ServletOutputStream getOutputStream()获取二进制类型的输出流对象PrintWriter getWriter()获取字符类型的输出

15、流对象String encodeURL(String url)编码指定的URLString encodeRedirectURL(String url)编码指定的URL,以便向sendRedirect发送int getBufferSize()获取缓冲区的大小void setBufferSize(int bufferSize)设置缓冲区的大小void flushBuffer()强制发送当前缓冲区的内容到客户端void resetBuffer()清除响应缓冲区中的内容void addCookie(Cookie cookie)向客户端发送一个Cookievoid addHeader(String na

16、me, String value)添加HTTP文件的头文件boolean isCommitted()判断服务器端是否已将数据输出客户端2022年4月20日175.3.2 response对象应用实例1. public void setContentType(String type) 动态响应contenType属性当一个用户访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性是text/html,那么JSP引擎将按照这种属性值作出反映。如果要动态改变这个属性值来响应客户,就需要使用response对象的setContentType(String s)方法来改变co

17、ntentType的属性值。设置输出数据的类型:text/html:网页text/plain:纯文本application/x-msexcel:Excel文件application/msword:Word文件【例5-5】应用setContentType改变contentType的属性值。2022年4月20日18 2.设置刷新public void setHeader(Stringname, String value) setHeader可以设置HTTP应答报文的首部字段和值;利用setHeader方法可以设置页面的自动刷新 例如: reponse.setHeader(“Refresh”,”5”

18、); /5秒种后自动刷新本页面 reponse.setHeader(“Refresh”, “5;URL=http:/”);/5秒种后自动跳转到新页面 【例5-6】控制页面的刷新频率。在页面中实时显示当前时间。2022年4月20日193. void sendRedirect(String redirectURL)将客户端重定向到指定的URL在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用response的sendRedirect(URL)方法实现客户的重定向。 sendRedirect和的区别:response.sendredirect()会在客户端呈现跳转后的URL地址;这

19、种跳转称为客户端跳转。使用response.sendredirect()将重定向的URL发送到客户端,浏览器再根据这个URL重新发起请求。所以用这个方法时,你在浏览器地址栏上会看到新的请求资源的地址。并且这个时候的request,response都和第一次的不一样了。这时是重新产生了新的request,response。使用完全是在服务器上进行,浏览器地址栏中的地址保持不变;这种跳转称为服务器端跳转。所以使用这个方法时没有产生新的用request,response。因为request没有变,在同一个请求内,可以用request来转递参数。2022年4月20日20 response.sendRe

20、direct()想带参数的话,自己在地址中写成 xxx.jsp?param1=aaa&. 这种形式传递参数。能够使用标签向目标文件传送参数和值 ,目标文件必须是一个动态的文件,能够处理参数。 后面的语句不会被执行也不会继续发送到客户端,response.sendRedirect()后面的语句会继续执行,除非语句前面有return。 是在服务器的内部进行转换,只发送给客户端最后转到的页面,速度会比较快;response.sendRedirect()需要服务器与客户端之间的往返,可以转到任何页面,包括网络有效域名。但速度比较慢。 【例5-7】页面重定向的例子。2022年4月20日214.

21、设定状态显示码的方法void setStatus(int n) response 的状态行当服务器对可以请求进行响应时,发送的首行被称为状态行。状态行包括3位数字的状态代码和对状态代码的描述。下面给出对5类状态代码的大概描述。1*(1开头的3位数字:主要是实验性质的)2*:用来表示请求成功。3*:用来表示在请求满足之前应该采取进一步的行动。4*:当浏览器做出无法满足的请求时,返回该状态码。5*:用来表示服务器出现的问题。可以通过response对象的setStatus(int n)方法来增加状态行的内容。2022年4月20日22状态代码表1 下面是服务器响应客户时,发送到客户端的状态代码描述。

22、2022年4月20日23状态代码表22022年4月20日24状态代码表32022年4月20日25状态代码表42022年4月20日26状态代码表52022年4月20日27 【例5-8】设置响应的状态行示例。 5.void addCookie(Cookie cookie) 添加一个Cookie对象,用来保存客户端的用户信息。可以通过request对象的getCookie()方法获得这个Cookie。 Cookie可以保存用户的个性化信息,从而对下一次访问提供方便。 【例5-9】通过response对象对Cookie进行操作。2022年4月20日285.4 out对象对象 out对象是javax.s

23、ervlet.jsp.JspWriter的一个对象,它能把信息发送给客户端的浏览器。out对象常用的方法是print()和println(),两者都在浏览器上显示信息。out对象最主要的功能在于将特定的数据内容搭配JSP程序代码动态输出至客户端的浏览器网页,在本书稍早的章节范例当中,我们已经初步看到了如何使用这个对象进行文本输出,这一节的内容将进一步说明out对象的相关特性。2022年4月20日29方方 法法方方 法法说说 明明缓冲处理缓冲处理clear()清除缓冲区中的数据,若缓冲区中已经是空的,则会产生清除缓冲区中的数据,若缓冲区中已经是空的,则会产生IOException的例外。的例外。

24、clearBuffer()清除缓冲区中的数据,但若缓冲区已经是空的,并不会产清除缓冲区中的数据,但若缓冲区已经是空的,并不会产生生IOException的例外。的例外。 flush()直接将目前暂存于缓冲区中的数据输出。直接将目前暂存于缓冲区中的数据输出。 getBufferSize()返回缓冲区的大小。返回缓冲区的大小。 getRemaining()返回缓冲区中剩余的空间大小。返回缓冲区中剩余的空间大小。 isAutoFlush()返回布尔值表示是否自动输出缓冲区中的数据。返回布尔值表示是否自动输出缓冲区中的数据。 输出数据输出数据newLine()输出换行。输出换行。 print(data

25、type data)输出数据类型为输出数据类型为datatype的数据的数据data。 println(datatype data)输出数据类型为输出数据类型为datatype的数据的数据data,并自动换行。,并自动换行。 5.4.1 out对象方法成员与数据输出2022年4月20日30输出数据 newLine在网页中输出一行空白,例如下面的程序代码:out.newLine() ; Print和println这2个方法成员被引用的时候均接受一个特定型态的参数,並且将这个参数输出到网页上:out.print(Hello JSP) ; out.println(Hello JSP) ;第一行程序代

26、码将Hello JSP直接输出到客户端的缓冲区上,第二行则在输出Hello JSP之后,紧接着加上一个换行。但这换行符在浏览器中会被忽略,要想真正在页面中实现换行,就需要在输出内容的最后加上换行标签“”2022年4月20日31JSP程序利用out对象将网页内容输出时,都要和客户端做一次连接,并且会为此消耗不少的资源;因此可以将要输出的内容放在一个固定大小的缓冲区中,等到缓冲区满时再一次将内容送往客户端,这就要将autoFlush设为true,否则缓冲区满时将产生IOException错误。2022年4月20日325.4.2 缓冲区操作 缓冲区是数据输出到浏览器之前,用来暂存数据的一块区域。20

27、22年4月20日33缓冲区操作clear、clearBuffer和flush使用于清空缓冲区內容。获取缓冲区当前状态的方法,分別为getBufferSize、getRemaining和isAutoFlush 。2022年4月20日34清空缓冲区clear() 使用于清空缓冲区中暂存的数据內容,缓冲区必需存在储存的数据 ,否则系统会引发一个IOException的例外 。clearBuffer()只负责清除的操作而不在乎是否存在任何数据。 flush() 除了清空缓冲区,还会进一步将所清空的数据内容输出到网页 。例outbuffer.jsp2022年4月20日35获取缓冲区状态 getBuffe

28、rSize返回一个表示当前缓冲区大小的整数值。getRemaining所返回的整数值,则是当前缓冲区中剩余的空间大小。isAutoFlush用以设定当数据储存量大于缓冲区剩余空间的时候,是否清空其中的数据內容。是则返回一个true,否则返回值为flase。 2022年4月20日365.4.3 out对象应用实例 【例5-10】out对象对缓冲区的操作。 【例5-11】out对象对数据的输出操作。2022年4月20日375.5 session对象对象 session(会话)对象是类javax.servlet.Httpsession的一个对象。session是从客户端连接服务器开始,直到与服务器断

29、开连接为止。session对象用于保存每个与服务器建立连接的客户端的信息,session的ID保存于客户端的Cookie中,这个sessionID标识唯一的用户,与其他用户的sessionID不同。接下来针对session的概念与其中数据的处理方式来进行讨论。2022年4月20日385.5.1 session的概念 1.什么是Session:Session对象是一个jsp内置对象,它在第一个jsp页面被装载时自动创建,完成会话期管理。 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接

30、,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。2022年4月20日39session 对象 当客户端用户向服务器提出请求打开网页后,若该网页中包含了为用户建立session的程序代码,则便会产生session 对象。 5.5.2 session对象的Id 2session对象的Id:当一个客户首次访问服务器上的一个jsp页面时,jsp引擎 产生一个session对象,同时分配一个String类型的Id号,jsp引擎同时将这个Id号发送到客户端,存放在Cookie(Cookie是Web服务器保存在用户硬盘上的一段文本)中,这样 session对象和客户

31、之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览 器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新 的session对象。 2022年4月20日402022年4月20日41 session和application相同,有其存在的期限。当发生以下四种情形其中之一时,session对象中的数据便会清空 :用户关闭目前正在使用的浏览器程序。 关闭网页服务器。 用户未向服务器提出请求超过预设的时间,Tomcat服务器预设为30分钟。 运

32、行程序结束session。 5.5.3 session的有效期限的有效期限5.5.4 访问访问session中的数据中的数据 1.建立建立session变量变量在JSP中不需要特别设置程序代码来建立用户session,当程序使用了session对象时,便会自动建立session,而下面这行语句便是在session中新增变量数据的方式:session.setAttribute(变量名称,变量内容)变量内容可为字符串或者其他对象类型,接着让我们来看看如何使用这个方法在session中设置变量数据:2022年4月20日42 2.返回返回session中的变量中的变量 在session中设置了变量数据

33、后,在其他的各个网页中便可使用getValue读取其中的内容,此方法所返回的数据类型为对象(Object)类型,语法如下: session.getAttribute(变量名称)2022年4月20日43 3.返回所有返回所有session中的变量名称中的变量名称 getValueNames()方法可以取出session中所有变量的名称,其结果为一个枚举类的实例。语法为: session.getAttributeNames()2022年4月20日44 4.清除清除session中的变量中的变量 removeValue()方法可以清除session中的变量数据,使用语法如下: session. re

34、moveAttribute(变量名称) 5.结束结束session 对于已经建立的session,可使用invalidate()方法将其结束,使用语法为: session.invalidate()2022年4月20日455.5.5 其它其它session对象的常用方法对象的常用方法2022年4月20日46方 法说 明getCreationTime()返回session建立的时间,返回值为从格林威治时间开始算起到session建立时的毫秒数getLastAccessedTime()返回客户端对服务器端提出请求至处理session中数据最后的时间,若为新建立的session则返回1getMaxIn

35、activeInterval()返回客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间,返回值以秒为单位isNew()返回布尔值表示是否为新建的sessionSetMaxInactiveInterval(int interval)设置客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间为interval,以秒为单位5.5.6 session对象应用实例对象应用实例 【例5-12】存取session对象数据。 【例5-13】引用session对象方法,显示session对象中部分属性值。 【例5-14】统计访问站点的用户数目。2022

36、年4月20日472022年4月20日485.6 application内置对象内置对象 Application对象和Session对象相比,含义更加广泛。 什么是application: Application对象保存了一个应用系统中公有的数据,一旦创建了application对象,除非服务器关闭,否则application对象将一直得保存,并为所有客户共享。 服务器启动后就会自动创建application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一 个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所

37、有客户共享这个内置的application 对象。 注意注意在JSP服务器运行时,仅有一个application对象,它由服务器创建,也由服务器自动清除,不能被用户创建和清除。2022年4月20日49 Application 是一个所有在线用户共享的数据存取区,application中的变量数据在程序设定其值时被初始化,而当关闭网页服务器,或者超过预设时间而未有任何用户联机时自动消失 。 application对象保存了一个应用系统中公有的数据,一旦创建了application对象,除非服务器关闭,否则application对象将一直得保存,并为所有客户共享。 服务器启动后就会自动创建appl

38、ication对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。 在JSP服务器运行时,仅有一个application对象,它由服务器创建,也由服务器自动清除,不能被用户创建和清除。2022年4月20日505.6.1 存取存取application中的数据中的数据 1. 建立建立application变量变量除了系统预设的application变量外,要在application中建立变量数据则必须使用setAt

39、tribute()方法,建立application变量的语法如下:application.setAttribute(“变量名称”,变量内容)例:2022年4月20日51 2. 返回返回application中的变量中的变量在设置了application中的变量数据之后,接着在各个网页中便可利用getAttribute()方法来取得所设置的application变量内容,使用语法如下:application.getAttribute(变量名称)此方法返回的数据内容为对象(Object)类型,延续前面的例子,若在其他的网页中加入下面的程序代码,则会在浏览器上显示objApp变量存储的内容:2022

40、年4月20日52 3. 删除删除application变量变量 要删除application中的变量数据,必须引用removeAttribute(),使用的语法为: application.removeAttribute(变量名称) 4. 返回所有返回所有application变量变量 getAttributeNames()方法会返回application中所有变量名称的集合对象,数据类型为Enumeration。 getAttributeNames()使用语法如下: application.getAttributeNames()2022年4月20日535.6.2 使用application对象取得信息2022年4月20日54方 法说 明getMajorVersion()返回服务器解释引擎所支持的最新Servlet API版本getMinorVersion()返回服务器解释引擎所支持的最低Servlet API版本getMimeTyp

温馨提示

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

评论

0/150

提交评论