已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第4章 JSP服务器对象,授课教师:朱晓军 TEL13303518848 OICQ:56292810 邮箱: 太原理工大学计算机学院,JSP提供多种服务器对象,包括Response、Request、Session、Application、Out、Config、PageContext和Exception,可以在JSP页面中直接使用它们,而不需要显示地声明,也不需要编写代码去创建它们的实例,这给编写程序带来了很大的方便。操纵服务器对象的脚本在服务器端被执行,服务器端执行的脚本用“”括起,包含服务器端执行的脚本文件的扩展名为“.jsp”。而客户端直接解释执行的文件为“.htm”。在介绍服务器对象前先介绍JSP的编译命令。,4.1 JSP的编译命令,JSP编译指令是给JSP引擎提供编译器指令信息的,它们的作用是设置JSP程序和由该JSP程序编译所生成的Servlet程序的属性。 语法格式: 例如: ,4.1.1 include编译命令 JSP语法中的include指令语句指示在JSP语句被解释的过程中包含一个静态文件,同时解析这个被包含文件中的JSP语句。在一个JSP页面中可以出现的include指令没有数量限制,include指令也可以被嵌套使用,而且在嵌套上也无限制。但是。要注意的是所有页面必须使用跟起始页面相同的脚本语言。 基本语法: 其中,“relativeURL”指示被包含的文件的相对存储位置的URL地址。 另外,还要说明几点: (1) 在JSP编译时插入一个包含文本或代码的文件,包括JSP文件、 HTML文件和文本文件,或者只是一段Java代码。 (2) 包含文件的路径名一般来说是相对路径,不需要什么端口、协议和域 名。 例如: “error.jsp” 、“/templates/onlinestore.html”、 “/beans/calendar.jsp”等。 (3) 包含文件中不能使用,标记,因 为这将影响在原JSP文件中同样的标记而导致错误。,4.1.2 page编译命令 page指令的语法规则为: 可以看出,page指令包含了多个“属性数值”对,而且每条page指令可以包含其中的一个或者若干条内容。下面将逐一介绍这些属性的意义。 language=“java“ :声明在JSP页面中使用脚本语言的种类,默认为“Java”。 Extends=“package.class“:指明生成的Servlet的父类,但是必须慎重使用,默认HttpJspBase。 import=“ package.class | package.*, “:需要导入的Java类或包的列表。默认导入的Java类包含java.lang.*、java.servlet.*、javax.servlet.jsp和javax.servlet.http.*。其他任何将要使用的类都必须用import属性包含进来。,session=“true | false“:设定是否JSP文件中需要使用HTTP Session,默认值为true。 buffer=“none | 8kb | sizekb“:指明该JSP程序中out内置对象的缓冲区buffer的大小。默认值因服务器而异,但通常为8kb。如果设置了这一属性,则缓冲大小不会小于设置的数值。 autoFlush=“true | false“:设置如果buffer溢出,是否需要强制输出,默认值为true。 isThreadSafe=“true | false“:设置文件生成的Servlet是否能多线程使用。如果属性为真,则JSP可以同时处理多个请求;如果为假,则一次只能处理一个请求。 info=“text“:设定一个文本,该文本能够使用Servlet.getServletInfo()方法取回。 errorPage=“relativeURL“:设置一个出错页,用于处理本JSP页面没有捕捉到的异常事件。“relativeURL”用于定义处理异常事件的JSP文件。 contentType属性定义输出为MIME类型。默认为text/html;缺省字符集ISO-8859-1。 isErrorPage=“true | false“:设置此页是否能作为另一个JSP网页的出错页。默认值为false。 例如: 导入Java包java.util.*和java.lang.*指令为: 设置页面的缓冲区为24KB,自动刷新为true的指令为: 设置用于处理异常错误的JSP文件的指令为: page指令提供了JSP页面的属性。在page指令中定义的属性用于该JSP页面以及所有通过include指令或者动作包含的静态文件,但是不能用于动态文件。,4.2 JSP的动作元素,JSP操作指令和JSP编译指令不同,JSP操作指令是在客户端请求时期动态的被执行。每次有客户端请求时,可能都会被重新执行一次,而JSP编译指令在编译时即被JSP引擎执行。 JSP操作指令比较多,目前最新的JSP技术规范支持下列操作指令: , ,等。JSP动作元素用来控制JSP引擎的行为,可以动态插入文件、 重用JavaBean组建、导向另一个页面等,4.2.1 的语法规则为: 例如: 上面的操作就是将jack的值和usename对应起来,从而使jack和usename两者相关联。 通常与、或者等一起使用。在独立于其他操作使用时,动作没有作用。,4.2.2 的语法规则为: “ flush=“true“ / 或者 “ flush=“true“ “ / 可以向一个对象提出请求,并可以将结果包含在一个JSP文件中。其中参数page=“ relative URL | ” 为相对路径,或者代表相对路径的表达式。 参数flush必须使用flush=“true”,不能使用 flush=“false“,因为在JSP1.1规范中flush=“false“是不允许的。 在“ /中,使用操作指令允许传递一个或者多个参数给被包含到主JSP程序中的动态程序,能在一个JSP程序中使用多个操作指令来传递多个参数给被包含的目标程序。 可以将静态的HTML、服务器程序的输出结果以及来自其他JSP的输出包括到当前页面中。使用的是相对的URL来调用资源。,例如: 包含普通的HTML文件: 使用相对路径: 包含动态JSP文件: 向被包含的程序传递参数: 操作指令允许包含动态文件和静态文件,这两种包含文件的结果是不同的。如果是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中,而如果是动态文件,那么被包含文件也会被JSP编译器执行。一般不能从文件名上判断一个文件是动态还是静态的,比如hello.jsp就有可能只包含一些静态的HTML标记而已,而不需要执行某些Java脚本。,4.2.3 的语法规则为: 语法参数说明如下: (1) id属性用来设置JavaBean的名称,利用此id,可以识别在同一个JSP程序中使用不同的JavaBean组件实例。 (2) class属性用于指定JavaBean对应的Java类名查找该JavaBean的路径。 (3) scope属性指定JavaBean对象的作用域。scope的值可能是page、request、session以及application。 (4) typeSpec可能是如下的四种形式之一: class=“className“ ,class=“className“ type=“typeName“ ,beanName=“beanName“ type=“typeName“ 或者type=“typeName“。 的功能首先是初始化一个“class”属性所指定的Bean类的实体,并将该属性实体命名为“id”属性所指定的值。但是,如果系统中已经存在相同的“id” 和“scope”属性的Bean实体,则该动作将不再初始化新的实体,而是直接使用已经存在的Bean对象。 通过动作指令在JSP页面中声明了Bean类实体后,就可以使用或者指令设置或者读取Bean的属性。同时,也可以使用JSP脚本程序或者表达式直接调用Bean对象的公有方法。,4.2.4 的语法规则为: 语法参数说明如下: (1) name属性指定了目标Bean对象。 (2) Property属性指定了要设置Bean的属性名。如果property的值是“*”的时候,则“request”对象中的所有与Bean属性同名的参数值都将传递给相应属性的赋值方法。Bean中的属性名与Request中的参数名必须相同。,(3) value属性用来指定Bean属性的值。这个值可以是一个String常量或者是一个表 达式。value的字符串数据将会自动地转换为相应的Bean属性的类型。 将字符串类型转换为其他类型的方法如下: boolean(或者Boolean)java.lang.Boolean.valueOf(String); byte(或者Byte)java.lang.Byte.valueOf(String); char(或者Character)java.lang.Character.valueOf(String); double(或者Double)java.lang.Double.valueOf(String); float(或者Float)java.lang.Float.valueOf(String); Int(或者Integer)java.lang.Integer.valueOf(String); long(或者Long)java.lang.Long.valueOf(String); (4) param属性指定了从“request”对象的某一参数取值以设置Bean的同名属性,即要将其值赋给一个Bean属性的HTTP请求的参数的名称。 根据JSP规范,如下代码都是合法的。 ,4.2.5 的语法规则为: 其中属性name是JavaBean实例的名称,property是要显示的属性的名称。 根据语法规则,如下代码是合法的。 Get of string : 可以获取Bean的属性值。它从Bean的属性中取出值并转化成字符串,然后放在输出缓冲区,的使用方法和相似。,4.2.6 的语法规则为: “ / 或者为: “ “ / 可以重定向一个HTML文件、JSP文件或者是一个程序段。动作把用户的请求转到另外的页面进行处理。标记只有一个属性page。Page属性指定要转发资源的相对URL。page的值既可以直接给出,也可以在请求的时候动态计算。 例如: “ /,4.2.7 的语法规则为: “ /+ text message for user ,语法参数说明如下: type:指定被执行的Java程序的类型是JavaBean还是Java Applet。这个属性没有默认值,所以必须确定该属性的值。 code:指定将会被浏览器的JVM执行的Java Class的名字,必须以 .class结尾命名。 codebase:指定将会被执行的Java Class文件所在的目录或则路径,默认值为调用指令的JSP文件的目录。 name:确定这个JavaBean或者Java Applet程序的名字,它可以在JSP程序的其他地方被调用。 archive:表示包含对象Java类的.jar文件。 align:对图形、对象、applet等进行定位,可以选择的值为bottom,top,middle,left和right这五种。 height:JavaBean或者Java Applet将要显示出来的高度、宽度的值,此值为数字,单位为像数。 hspace和vspace :JavaBean或者Java Applet显示时在浏览器显示区左右、上下所需留下的空间,单位为像数。 jreversion:JavaBean或者Java Applet被浏览器正确运行所需要的Java运行时环境的版本,默认值是1.2 。 spluginurl:可以为Netscape Navigator用户下载JRE插件的地址。此值为一个标准的URL,如。 iepluginurl:IE用户下载JRE的地址。此值为一个标准的URL,如。 和:使用操作指令,可以向JavaBean或者Java Applet传送参数和参数值。 和:该指令中间的一段文字用于Java插件不能启动时显示给用户,如果插件能够正确启动而JavaBean或者Java Applet的程序代码不能找到并被执行,那么浏览器将会显示这个出错信息。,例如: To load apple is unsuccessful ,4.3 Response对象,Response对象用于将服务器端数据发送到客户端,可通过在客户端浏览器显示、用户浏览页面的重定向以及在客户端创建cookies等方式进行。 Response对象实现HttpServletResponse接口,可以对客户的请求作出动态的响应,向客户端发送数据,如Cookies、HTTP文件的头信息等,一般是HttpServletResponse类或其子类的一个对象。以下是Response对象的主要方法: (1) addHeader(String name,String value):添加HTTP头文件,该Header将会传到客户端去,如果有同名的Header存在,那么原来的Header会被覆盖。 setHeader(String name,String value):设定指定名字的HTTP文件头的值,如果该值存在,那么它将会被新的值覆盖。 containsHeader(String name):判断指定名字的HTTP文件头是否存在,并返回布尔 值。 flushBuffer():强制将当前缓冲区的内容发送到客户端。 addCookie(Cookie cookie):添加一个Cookie对象,用来保存客户端的用户信息,可以用request对象的getCookies()方法获得这个Cookie。 sendError(int sc):向客户端发送错误信息。例如:“505指示服务器内部错误”, “404指示网页找不到的错误”。 setRedirect(URL):把响应发送到另一个指定的页面(URL)进行处理。 setContenType(String type):设置响应的MIME类型。,4.4 Request对象,Request对象可以对在客户请求中给出的信息进行访问,它是HttpServletRequest的一个子类,其作用域就是一次Request请求。 来自客户端的请求经Servlet容器处理后,由Request对象进行封装。它作为jspService()方法的一个参数由容器传递给JSP页面。 Request对象包括很多方法,下面介绍一下其主要的方法: getParameter(String name):以字符串的形式返回客户端传来的某一个请求参数的值,该参数由name指定。当传递此方法的参数名没有实际参数与之对应时,返回null。另外,当一个参数含有多个值时最好不要使用这个方法。 getParameterValue(String name):以字符串数组的形式返回指定参数所有值。 getParameterNames():返回客户端传送给服务器端的所有的参数名,结果集是一个Enumeration(枚举)类的实例。当传递给此方法的参数名没有实际参数与之对应时,返回null。 getAttribute(String name):返回name指定的属性值,若不存在指定的属性,则返回null。 setAttribute(String name,java.lang.Object obj):设置名字为name的Request参数的值为obj。 getCookies():返回客户端的Cookies对象,结果是一个Cookie数组。 getHeader(String name):获得HTTP协议定义的传送文件头信息,例如: request.getHeader(“User-Agent“),其含义为:将返回客户端浏览器的版本号、类型。,getDateHeader():返回一个Long类型的数据,表示客户端发送到服务器的头信息中的时间信息。 getHeaderName():返回所有request header的名字,结果集是一个Enumeration(枚举)类的实例。得到名称后就可以使用getHeader、getDateHeader等得到具体的头信息。 getServerPort():获得服务器的端口号。 getServerName():获得服务器的名称。 getRemoteAddr():获得服务器的客户端的IP地址。 getRemoteHost():获得客户端的主机名,如果该方法失败,则返回客户端的IP地址。 getProtocol():获得客户端向服务器端传送数据所依据的协议名称。 getMethod():获得客户端向服务器端传送数据的方法。 getServletPath():获得客户端所请求的脚本文件的文件路径。 getCharacterEncoding ():获得请求中的字符编码方式。 getSession(Boolean create):返回和当前客户端请求相关联的HttpSession对象。如果当前客户端请求没有和任何HttpSession对象关联,那么如果create变量为true,则创建一个HttpSession对象并返回,反之返回null。 getQuertString():返回查询字符串,该字符串由客户端以GET方法向服务器端传送。查询字符串出现在页面请求“?”的后面,例如: /hello.jsp?name=Jack getRequestURI():获得发出请求字符串的客户端地址。 getContentType():获取客户端请求的MIME类型。如果无法得到该请求的MIME类型,则返回-1。,4.5 Session对象,Session是一种服务器单独处理与记录用户端使用者信息的技术。当使用者与服务器联机时,服务器可以给每个上网的使用者一个Session,并设定其中的内容。这些Session都是独立的,服务器端可以借此来辨别使用者的信息进而提供独立的服务。 Session对象引用javax.servlet.http.HttpSession对象,它封装了属于客户会话的所有信息。当一个用户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到用户端,存放在Cookie中,这样Session对象和用户之间就建立起一一对应的关系。当用户再次访问连接该服务器的其他页面时,就不再分配给用户新的Session对象,直到关闭浏览器后,服务器端该用户的Session对象才取消,并且和用户的对应关系也取消。如果重新打开浏览器再连接到该服务器时,服务器为用户再创建一个新的Session对象。,Session对象的主要方法为: (1) getAttribute(String name):获得指定名字的属性,如果该属性不存在,将会返回null。 (2) getAttributeNames():返回Session对象中存储的每一个属性对象,结果集是一个Enumeration类的实例。 (3) getCreationTime():返回Session对象被创建的时间,单位为毫秒。 (4) getId():返回Session对象在服务器端的编号。每生成一个Session对象,服务器都会给它一个编号,而且这个编号不会重复,这样服务器才能根据编号来识别Session,并且正确地处理某一特定的Session及其提供的服务。 (5) getLastAccessedTime():返回当前Session对象最后一次被操作的时间,单位为毫秒。 (6) getMaxInactiveInterval ():获取Session对象的生存时间,单位为秒。 (7) setMaxInactiveInterval (int interval):设置Session对象的有效时间(超时时间),单位为秒。在网站的实际应用中。30分钟的有效时间对某些网站来说有些太短,但对有些网站来说又有些太长。因此,为了减少服务器资源的浪费,就应该设置相应的有效时间。 例如:设置有效时间为200秒 (8) removeAttribute(String name):删除指定属性的属性值和属性名。 (9) setAttribute(String name,Java.lang.Object value):设定指定名字的属性,并且把它存储在Session对象中。 (10) invalidate():注销当前的Session对象。,4.6 Application对象 Application对象为多个应用程序保存信息,与Session对象不同的是,所有用户都共同使用一个Application对象。在JSP服务器运行时刻,仅有一个Application对象,它由服务器创建,也由服务器自动清除,不能被用户创建和删除。 Application对象的主要方法为: getAttribute(String name):返回由name指定名字的Application对象的属性的值。返回值是一个Object对象,如果没有,则返回null。 getAttributeNames():返回所有Application对象属性的名字,结果集是一Enumeration类型的实例。 getInitParameter(String name):返回由name指定名字的Application对象的某个属性的初始值,如果没有参数,就返回null。 getServerInfo():返回Servlet编译器当前版本的信息。 setAttribute(String name, Object obj):将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个属性。 removeAttribute(String name):删除一个指定的属性。,4.7 其他对象,4.7.1 Out对象 Out对象是指在服务器中向客户端打开Output Stream。JSP可以利用Out对象,把除脚本小程序以外的所有信息发送到客户端的浏览器中,并且Out对象还管理应用服务器上的输出缓冲区,其基类为JspWriter。 Out对象的主要方法为: out.print(类型)或out.println(类型),其中out.println(类型)为换行输出指定的字符串或者HTML标签。 out.print(boolean)或out.println(boolean) out.print(char)或out.println(char) out.print(char)或out.println(char) out.print(double)或out.println(double) out.print(float)或out.println(float) out.print(int)或out.println(int) out.print(long)或out.println(long) out.print(object)或out.println(object) out.print(String)或out.println(String),这些方法都只是将内容输出到屏幕上,不过,程序在处理时是先将内容放在缓冲区中,而不是直接输出。而真正的输出操作是等到JSP引擎解释完程序后才把缓冲区中的数据输出到浏览器上。 out.newLine():输出一个换行符号。 out.clearBuffer():清除缓冲区里的数据,并且把数据写到客户端。 out.clear():清除缓冲区里的数据,但不把数据写到客户端。 out.flush():输出缓冲区里的数据,清除缓冲区里的数据。 out.getBufferSize():获取缓冲区的大小。缓冲区大小可以用语句来设置。 out.getRemaining():获取缓冲区剩余空间的大小。 out.isAutoFlush():返回布尔值,如果自动缓冲,则返回true,否则返回false。是否自动缓冲可以用语句来设置。,4.7.2 PageContext对象 PageContext对象是PageContext类的一个实例,提供对几种页面属性的访问,并且允许向其他应用组件转发Request对象,或者从其他应用组件包含Request对象。 PageContext对象的主要方法为: (1) getAttribute():返回与指定范围内名称有关的变量或null,例如: CustomContext MyContext=(CustomContext); PageContext.getAttribute(“Large Bird“, PageContext.SESSION_SCOPE); 这段代码在作用域中获得一个对象。 (2) forward(String relativeUrlPath):把页面重定向到另一个页面或者Servlet 组件上。 (3) findAttribute():用来按照页面请求、会话以及应用程序范围的顺序实现对 某个已经命名属性的搜索。 (4) getException():返回当前的exception对象。 (5) setAttribute():用来设置默认页面的范围或者指定范围之中的已命名对象。 例如: CustomContext MyContext=new CustomContext(“Penguin“); PageContext.setAttribute(“Large Bird“, MyContext.PageContext.SESSION_SCOPE); 这段代码在作用域中设置一个对象。 (6) removeAttribute():用来删除默认页面范围或指定范围之中已命名的对象。,4.7.3 Config对象 Config对象是JSP页面通过JSP Container进行初始化时被传递的对象。 Config对象具有Web服务器环境设定值。 使用Config对象的优点是在修改需要在Web服务器中处理的变量时,不需要逐一修改JSP文件,只要修改相应属性文件的内容就可以了。 Config对象的主要方法为: getInitParameter(String name):返回指定初始参数的内容。返回值为String类型。 getInitParameterNames():返回所有初始参数的名称。返回值为Enumeration类型。 getServletNames():返回Servlet的名称。返回值为String类型。 getServletContext():返回Servlet属于哪一个Application。 4.7.4 Exception对象 Exception对象用来处理JSP文件在执行时所发生的错误和异常。Exception对象可以配合page指令一起使用,通过指定某一页面为错误处理页面,把所有的错误都集中到那个页面进行处理。这样可以使得整个系统更加健壮,也使得程序的流程更加清晰,这也是JSP比ASP和PHP先进的地方。Exception对象的主要方法为: getMessage():返回错误信息。 printStackTrace():为标准错误的形式输出一个错误和错误的堆栈。 toString():以字符串的形式返回一个对异常的描述。 注意:必须在isErrorPage=true的情况下才可以使用Exception对象。,4.8 Cookie及应用,Cookie是一小段文本信息,由Web服务器送到客户端存储。当该客户端再次访问同一Web站点时,这些信息会不作任何修改地送回Web服务器,它是一种Web服务器通过浏览器在访问者的硬盘上存储信息的手段。 1创建Cookie对象 创建Cookie的语法格式为: Cookie 对象名称 = new Cookie(“索引值“,“数据“); Cookie对象不能单独使用,必须与Request对象或Response对象结合使用才起作用。将Cookie信息传送到客户端的方法为: response.addCookie(对象名称); 例如: Cookie newCookie =new Cooki
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB21∕T 4434-2026 电梯救援辅助装置技术规范
- 产品 SEO 优化标准与关键词模板(Shopify 跨境电商专用)
- 电气焊考试试题及答案
- 药管技能操作考试试题及答案
- 2026年推拿按摩医生考试试题及答案
- (正式版)DB22∕T 2317-2015 《电接点液位计》
- 玻璃体积血患者出院后居家护理管理
- 企业文化理念体系搭建指南
- 年度工作总结与经验教训总结报告
- 形如函数y=1比(x^3-√x)的图像示意图画法步骤A2
- 《合同法解析》课件
- 2024年海南省中考物理试题【含答案、解析】
- 概率论与数理统计各章最典型试题
- (完整)基尔霍夫定律教学设计
- 机器人关节培训课件
- 《中国宫腔镜诊断与手术临床实践指南(2023版)》解读课件
- GB/T 25052-2024连续热浸镀层钢板和钢带尺寸、外形、重量及允许偏差
- (高清版)JTGT M72-01-2017 公路隧道养护工程预算定额
- MOOC 中国电影经典影片鉴赏-北京师范大学 中国大学慕课答案
- 建筑垃圾清运服务投标方案技术标
- 2024-2024年全国初中化学竞赛试卷及答案-副本
评论
0/150
提交评论