




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第
4
章JSP内置对象本章内容JSP内置对象概述request对象response对象session对象application对象out对象其他内置对象24.1JSP内置对象概述为了Web应用程序开发的方便,在JSP页面中内置了一些默认的对象,这些对象不需要预先声明就可以在脚本代码和表达式中随意使用。JSP提供的内置对象共有9个,如下表所示。34.1JSP内置对象概述对象名称所属类型有效范围applicationjavax.servlet.ServletContextapplicationconfigjavax.servlet.ServletConfigpageexceptionjava.lang.Throwablepageoutjava.servlet.jsp.JspWriterpagepagejavax.servlet.jsp.HttpJspPagepagepageContextjavax.servlet.jsp.PageContextpagerequestjava.servlet.http.HttpServletRequestrequestresponsejava.servlet.http.HttpServletResponsepagesessionjava.servlet.http.HttpSessionsession44.1JSP内置对象概述54.2request对象request对象是从客户端向效劳器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。64.2.1访问请求参数在Web应用程序中,经常要完成用户与网站的交互。例如:当用户填写表单后,需要把数据提交给效劳器处理,效劳器获取到这些信息并进行处理。request对象的getParameter()方法,可以用来获取用户提交的数据。request对象访问请求参数的方法:
StringgetParameter(“参数名〞)
String[]getParameterValues(“参数名〞)
如果参数值不存在,那么返回一个null值.例4-1:CH04\EX4_174.2.2在作用域中管理属性进行请求转发时,如果需要把一些数据〔对象〕带到转发后的页面进行处理。可以使用request对象的setAttribute()方法设置数据在request范围内存取。
request.setAttribute("key",Object);参数key是键,为String类型。在转发后的页面取数据时,就通过这个键来获取数据。参数object是键值,为Object类型,它代表需要保存在request范围内的数据。获取转发数据的方法如下:
Objectobj=request.getAttribute(“key〞);例4-2:CH04\EX4_28Cookie的应用9104.2.3获取CookieCookie为Web应用程序保存用户相关信息提供了一种有用的方法。Cookie是一小段文本信息,伴随着用户请求和页面在Web效劳器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。在JSP中,可以通过request对象中的getCookies()方法获取Cookie中的数据。
获取Cookie的方法如下:
Cookie[]cookie=request.getCookies();114.2.3获取CookieCookie根本用法:CH04\EX4-3\basic.jsp使用Cookie记录客户端信息
CH04\EX4-3\login.jsp124.2.4获取客户信息request对象提供了一些用来获取客户信息的方法:
例4-4:CH04\EX4_4方法说明getHeader(Stringname)获得Http协议定义的文件头信息getHeaders(Stringname)返回指定名字的requestHeader的所有值,其结果是一个枚举的实例getHeadersNames()返回所有requestHeader的名字,其结果是一个枚举的实例getMethod()获得客户端向服务器端传送数据的方法,如get,post,header,tracegetProtocol()获得客户端向服务器端传送数据所依据的协议名称getRequestURI()获得发出请求字符串的客户端地址getRealPath()返回当前请求文件的绝对路径getRemoteAddr()获取客户端的IP地址getRemoteHost()获取客户端的机器名称getServerName()获取服务器的名字getServerPath()获取客户端所请求的脚本文件的文件路径getServerPort()获取服务器的端口号134.2.5访问平安信息request对象提供了对平安属性的访问。例如,可以通过使用request对象来确定当前请求是否使用了一个类似HTTP的平安协议:
用户平安信息:<%=request.isSecure()%>方法说明isSecure()返回布尔类型的值,它用于确定这个请求是否使用了一个安全协议,例如HTTPisRequestedSessionIdFromCookie()返回布尔类型的值,表示会话是否使用了一个Cookie来管理会话IDisRequestedSessionIdFromURL()返回布尔类型的值,表示会话是否使用URL重写来管理会话IDisRequestedSessionIdFromValid()检查请求的会话ID是否合法144.2.6访问国际化信息浏览器可以通过accept-language的HTTP报头向Web效劳器指明它所使用的本地语言。request对象中的getLocale()和getLocales()方法允许JSP开发人员获取这一信息,获取的信息属于类型。类型的对象封装了一个国家和一种国家所使用的语言。使用这些信息,JSP开发者就可以使用语言所特有的信息作出响应。例4-5:CH04\EX4_5154.3response对象response对象和request对象相对应,用于响应客户请求,向客户端输出信息。response是接口类的对象,它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。164.3.1重定向网页方法说明sendError(intnumber)使用指定的状态码向客户发送错误响应sendError(intnumber,Stringmsg)使用指定的状态码和描述性消息向客户发送错误响应sendRedirect(Stringlocation)使用指定的重定向位置URL向客户发送重定向响应,可以使用相对URLresponse对象中用于重定向网页的方法上述两个方法都会中止当前的请求和响应。如果HTTP响应已经提交给客户,那么不会调用这些方法。例4-6:CH04\EX4_6174.3.2设置HTTP响应报头response对象提供了设置HTTP响应报头的方法:setDateHeader(Stringname,longdate)
使用给定的名称和日期值设置一个响应报头,如果指定的名称已经设置,那么新值会覆盖旧值setHeader(Stringname,Stringvalue)
使用给定的名称和值设置一个响应报头,如果指定的名称已经设置,那么新值会覆盖旧值setHeader(Stringname,intvalue)
使用给定的名称和整数值设置一个响应报头,如果指定的名称已经设置,那么新值会覆盖旧值addHeader(Stringname,longdate)
使用给定的名称和值添加一个响应报头184.3.2设置HTTP响应报头response对象提供了设置HTTP响应报头的方法:addDateHeader(Stringname,longdate)
使用给定的名称和日期值添加一个响应报头containHeader(Stringname)
返回一个布尔值,它表示是否设置了已命名的响应报头addIntHeader(Stringname,intvalue)
使用给定的名称和整数值添加一个响应报头setContentType(Stringtype) 为响应设置内容类型,其参数值可以为text/html,text/plain,application/x_msexcel或application/mswordsetContentLength(intlen) 为响应设置内容长度loc) 为响应设置地区信息194.3.2设置HTTP响应报头例4-7:将页面另存为WORD文档CH04\EX4_7\version_0.jsp204.3.3缓冲区配置缓冲可以更加有效地在效劳器与客户之间传输内容。HttpServletResponse对象为支持jspWriter对象而启用了缓冲区配置。response对象提供了配置缓冲区的方法,如下表所示。例4-8:CH04\EX4_8方法说明flushBuffer()强制把缓冲区中内容发送给客户getBufferSize()返回响应所使用的实际缓冲区大小,如果没使用缓冲区,则该方法返回0setBufferSize(intsize)为响应的主体设置首选的缓冲区大小isCommitted()返回一个boolean,表示响应是否已经提交;提交的响应已经写入状态码和报头reset()清除缓冲区存在的任何数据,同时清除状态码和报头214.4session对象HTTP协议是一种无状态协议。当一个客户向效劳器发出请求,效劳器接收请求,并返回响应后,该连接就被关闭了,此时效劳器端不保存连接的有关信息,因此当下一次连接时,效劳器已没有了以前的连接信息,此时将不能判断这一次连接和以前的连接是否属于同一客户。224.4session对象引发问题:Web效劳器不知道哪些请求是同一个浏览器发出的,也就是说不知道同一个浏览器以前的访问信息。但保存以前的访问信息又是必须的。因此:Web效劳器端程序开发方法中需要提供一些专门技术来维持会话状态信息。23方法:浏览器对每个请求都发送一个标识(sesssionid)给Web效劳器,属于同一个会话的请求都带有相同的标识号,属于不同会话的请求消息总是带有不同的标识号。具体实现技术:(1)在Cookie中传递(2)在URL的附加参数中传递(类似get方法)4.4session对象244.4session对象为了弥补这一缺点,JSP提供了一个session对象,这样效劳器和客户端之间的连接就会一直保持下去,但是在一定时间内〔系统默认在30分钟〕,如果客户端不向效劳器发出应答请求,session对象就会自动消失。25Session的应用26Session失效的情况(生命期结束)(1)超时(2)程序主动销毁,invalidate方法被调用(3)效劳器崩溃注意:浏览器关闭,效劳器不会销毁session4.4session对象27HttpSession接口中的主要方法(1)getID方法用于返回与当前HttpSession对象关联的会话标识号。(2)isNew方法用于返回当前HttpSession对象是否是新创立的。在以下情况下,isNew方法返回truea.请求消息中没有通过任何方式返回SessionID,这种情况发生在某个客户端浏览器首次访问某个能开启会话的Servlet程序时;b.请求消息中通过某种方式返回了SessionID,但返回的SessionID与当前HttpSession对象中保存的会话标识号不匹配,这种情况发生在客户端浏览器超时后再次访问某个能开启会话的Servlet程序时。4.4session对象28(3)Invalidate方法用于释放当前HttpSession的资源,不必等到超时后再释放。(4)getServletContext方法用于返回当前HttpSession对象所属的Web应用程序对象。(5)setAttribute方法用于将一个对象与一个名称关联后存储进当前的HttpSession对象中。(6)getAttribute方法用于从当前HttpSession对象中返回指定名称的属性对象。(7)removeAtrribute方法用于从当前HttpSession对象中删除指定名称的属性。4.4session对象29(8)getLastAccessedTime方法返回客户端最后一次请求的发送时间,从1970年1月1日0时0分0秒到当前所经历的毫秒(9)getMaxInactiveInterval方法 用于读取当前的session的超时时间,单位为秒(10)setMaxInactiveInterval方法用于设置session的超时时间,单位为秒。如果客户端从最后一次请求开始,在连续的这段时间内一直没有再向效劳器发送请求,那么效劳器认为出现了session超时,会去除掉该session对象。Tomcat默认的超时时间为30分钟。4.4session对象30HttpServletRequest接口中的Session方法(1)getSession方法用于返回与当前请求相关的HttpSession对象。publicHttpSessiongetSession(booleancreate)publicHttpSessiongetSession()(2)isRequestedSessionFromCookie方法用于判断SessionID是否是通过请求消息中的Cookie传递过来的。(3)isRequestedSessionFromURL方法用于判断SessionID是否是通过请求消息的URL参数传递过来的。4.4session对象314.4session对象JSP页面可以将任何对象作为属性来保存。创立及获取客户的会话,session对象用于存取对象的方法:voidsetAttribute(Stringname,Objectvalue);
用于是设置指定名称的属性值,并将其存储在session对象中.ObjectgetAttribute(Stringname);
用于获取与指定名字name相联系的属性.例:EX4_9\test.jsp324.4session对象从会话中移除对象的方法:session.removeAttribute(Stringname)销毁session的方法:session.invalidate()会话超时的管理:longsession.getLastAccessedTime()intsession.getMaxInactiveInterval()voidsession.setMaxInactiveInterval(int
interval)例4-9:CH04\EX4_9334.5application对象application对象用于保存应用程序中所有的公有数据,效劳器启动并且自动创立application对象后,只要没有关闭效劳器,application对象将一直存在,所有用户可以共享application对象。application对象与session对象有所区别,session对象和用户会话相关,不同用户的session是完全不同的对象,而用户的application对象都是相同的一个对象,即共享这个内置的application对象。34ServletContext对象–application相同:都可用于实现在多个.jsp(或servlet程序)中传递和共享数据区别:同一个Web应用程序中的所有.jsp得到的都是一个ServeletContext对象—application,所以存储在ServletContext对象中的属性可以被所有的.jsp访问和共享,而不管访问来自哪个客户端的浏览器。存储在HttpSession对象中的属性仅仅被来自同一客户端浏览器的一组访问共享。4.5application对象354.5application对象364.5application对象374.5.1访问应用程序初始化参数通过application对象调用的ServletContext对象提供了对应用程序环境属性的访问。web应用程序的配置文件(web.xml)位于应用程序环境目录下的WEB-INF子目录中。访问web.xml文件中的参数的方法StringgetInitParameter(Stringname)EnumerationgetInitParameterNames()例如:CH04\EX4_10384.5.2管理应用程序环境属性与session对象相同,也可以在application对象中设置属性。在session中设置的属性只在当前客户会话范围内容有效,客户超过保存时间不发送请求时,session对象将被回收。在application对象中设置的属性在整个应用程序范围内是有效的,即使所有的用户都不发送请求,只要不关闭应用效劳器,在其中设置的属性仍然是有效的。394.5.2管理应用程序环境属性application对象管理应用程序环境属性的方法:removeAttribute(Stringname) 从ServletContext的对象中去掉指定名称的属性setAttribute(Stringname,Objectobject) 使用指定名称和指定对象在ServletContext的对象中进行关联getAttribute(Stringname) 从ServletContext的对象中获取一个指定对象getAttributeNames() 返回存储在ServletContext对象中属性名称的枚举数据例如:CH04\EX4_10404.6其他对象out对象主要用来向客户端输出各种数据类型的内容,并且管理应用效劳器上的输出缓冲区。方法说明clear()清空缓冲区clearBuffer()清空当前区的内容close()先刷新流,然后关闭流flush()刷新流getBufferSize()以字节为单位返回缓冲区的大小getRemaining()返回缓冲区中没有使用的字符的数量isAutoFlush()返回布尔值,自动刷新还是在缓冲区溢出时抛出IOException异常414.6其他对象pageContext对象它相当于页面中所有其他对象功能的最大集成者,使用它可以访问到本页中所有其他对象。config对象被封装成接口,它表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet。开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。42方法说明forward(java.lang.StringrelativeUtlpath)把页面转发到另一个页面或者servlet组件上getAttribute(java.lang.Stringname[,intscope])scope参数是可选的,该方法用来检索一个特定的已经命名的对象的范围,并且还可以通过调用getAttributeNameInScope()方法,检索对某个特定范围的每个属性String字符串名称枚举getException()返回当前的Exception对象getRequest()返回当前的request对象getResponse()返回当前的response对象getServletConfig()返回当前页面的ServletConfig对象invalidate(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机关招聘面试真题及答案
- 《财务会计岗位职责》课件
- 《周期与持续时间的探究》课件
- 《混凝土结构中预制混凝土构件》课件
- 《商务沟通技巧》课件
- 四川高考英语复习重点单选题100道及答案
- 《核能原理》课件
- 《混凝土结构施工技术解析》课件
- 用友U8K312.0竞争分析报告(财务)
- 电的创造者:摩擦起电与两种基本电荷的课件
- 职场心态-培训课件
- 第四届全国智能制造应用技术技能大赛决赛-仪器仪表制造工(仪器仪表与智能传感应用技术)赛项竞赛平台主要设备技术标准
- 统编版 高中语文 选择性必修下 第二单元《边城》
- 白内障患者护理教学查房
- 幼儿园 中班心理健康《我会倾诉》
- 机械租赁保障措施
- 2024-2030年中国病号服行业市场发展趋势与前景展望战略分析报告
- 洗煤厂安全应急预案
- 抖音火花合同模板
- 掬水月在手-古典诗词与现代人生智慧树知到期末考试答案章节答案2024年南开大学
- 北京市通州区社区工作者考试题库及参考答案一套
评论
0/150
提交评论