收藏 分享(赏)

第4章 JSP语法进阶.ppt

上传人:jw66tk88 文档编号:10200820 上传时间:2019-10-18 格式:PPT 页数:87 大小:170.50KB
下载 相关 举报
第4章  JSP语法进阶.ppt_第1页
第1页 / 共87页
第4章  JSP语法进阶.ppt_第2页
第2页 / 共87页
第4章  JSP语法进阶.ppt_第3页
第3页 / 共87页
第4章  JSP语法进阶.ppt_第4页
第4页 / 共87页
第4章  JSP语法进阶.ppt_第5页
第5页 / 共87页
点击查看更多>>
资源描述

1、第4章 JSP语法进阶,4.1 【案例7】文件包含,4.1.1 JSP指令元素指令元素作用于JSP引擎所生成的Servlet结构,提供网页的全局信息。例如,可以通过指令元素设置JSP文件和最终输出的客户端文件字符集的类型、表明想要引入的包和类、错误处理、是否是session的一部分等。指令元素的一般形式如下: ,其中,directive是指令名称,attr是指令的属性,属性可以有多个,value是属性的取值。指令元素可以不带属性,或只带部分属性,所以方括号中的属性部分是可选的。,JSP中的指令有page、include和taglib,其中page指令描述与页面相关的指示信息,include指令

2、用于包含文件,taglib指令用于指示JSP页面所使用的标记库。标记库的具体用法属于JSP比较复杂的内容,本书中就不讨论了。,1page指令,page指令定义JSP文件中的全局属性,描述与页面相关的指示信息。在一个JSP页面中,page指令可以出现多次,但是除import外,每一种属性却只能出现一次,后面重复出现的属性设置将覆盖掉先前的设置。几乎在所有JSP页面顶部都会看到page指令,虽然这不是必须的。,page指令可以指定到何处去查找起支持作用的Java类或包。例如:page指令也可以在出现Java运行错误时,指示将用户导向何处。例如: ,page指令的一般语法格式如下: % page l

3、anguage=“java“ extends=“package.class“ import=“package.class | package.*, .“ session=“true | false“ , buffer=“none | 8kb | sizekb“ autoFlush=“true | false“ isThreadSafe=“true | false“ info=“text“ errorPage=“relativeURL“ contentType=“mimeType ;charset=characterSet “ | “text/html ; charset=ISO-8859-1“

4、 isErrorPage=“true | false“ %,下面对page指令中可能包含的各个属性进行详细说明。 (1)languagelanguage属性告诉服务器在文件中将采用哪种语言作为脚本语言,默认为Java。,(2)extendsextends属性定义了由JSP页面产生的servlet的父类。一般来说,这个属性不会用到,只有需要实现一些特殊功能时,使用它会比较方便。建议初学者先不去使用它。,(3)importimport属性的值是一系列用逗号分开的列表,指明想要引入的包和类。例如:可以在程序中引入多个需要的包和类,包和类之间用逗号分隔。例如: ,也可以将需要引入的多个包和类写在多个p

5、age指令中。例如:这两行语句与上面的一行语句等价。当使用import引入了包和类后,就可以使用与这些包和类相关的方法和对象了。,注意 java.lang.*、javax.servlet.*、javax.servlet.jsp.*和javax.servlet.http.*包已经作为缺省值被JSP引入,所以不需要在网页中再次引入。,(4)sessionsession属性表示当前页面是否加入会话期间的管理,其缺省值为true,表明内建对象session存在(如果没有session对象,则会新建一个),由session来管理会话。如果设session属性值为false,则内建对象session不存在

6、,这样页面中任何使用到session的语句都会产生编译错误。,(5)bufferbuffer决定输出流(out对象)是否需要缓冲区,缺省值是8KB,也可以设置为none(没有缓冲区)或所指定大小的缓冲区,例如:上面的语句指定输出流缓冲区为12KB。 buffer属性通常与autoFlush属性一起使用。,(6)autoFlushautoFlash属性用于指定是否自动刷新输出缓冲,如果设成true,则当输出缓冲区满的时候,自动刷新缓冲区而不是抛出一个异常,缺省值为true。注意 同时设置autoFlush为false和buffer为none是不合法的,编译时将会出错。,(7)isThreadSa

7、feisThreadSafe属性指示JSP引擎,网页在处理对象存取时是否要引入ThreadSafe(线程保护)机制,缺省值为true,此时,如果多个客户向JSP引擎发送请求,就可以同时被处理。这时JSP程序员要处理同步时的共享状态,以保证同步确实是安全的。如果isThreadSafe被设成false,则采用单线程模式控制客户端访问该页面。,(8)infoinfo属性用于设置页面的说明信息文字,可以通过页面的Servlet.getServletInfo( )方法访问该信息。例如: ,(9)ErrorPageErrorPage属性用于指示一个JSP文件的相对路径,以便在页面出错时,转到这个JSP文

8、件来进行处理。与此相适应,需要将这个JSP文件的isErrorPage属性设为true。当ErrorPage属性被设置后,JSP网页中的异常仍然会产生,只不过此时捕捉到的异常将不由当前网页进行处理,而是由 ErrorPage属性所指定的网页去进行处理。,(10)isErrorPageisErrorPage属性指示一个页面是否为错误处理页面。设置为true时,在这个JSP页面中的内建对象exception将被定义,其值将被设定为呼叫此页面的JSP页面的错误对象,以处理该页面所产生的错误。 isErrorPage属性缺省值为false,此时将不能使用内建对象exception来处理异常,否则将产生

9、编译错误。,(11)ContentTypeContentType属性用于设置JSP文件和最终文件的MIME类型和字符集的类型。这一项必须在文件的顶部、任何一个其他字符在文件中出现之前。可用的MIME类型有text/plain、text/html、text/html和image/gif、image/jpeg等。ContentType属性缺省值为“text/html;charset = ISO8859_1”。,例如:上面语句设置MIME类型为text/html,网页所用字符集为简体中文(国标码gb2312)。在JSP中,客户端和服务器端的中文显示需要使用字符集gb2312,而HTTP传输编码用IS

10、O8859_1字符集。,最后需要指出的是,page指令作用于整个JSP页面,包括静态的包含文件在内。但page指令不能作用于动态的包含文件,比如所包含的文件。无论把page指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及养成好的编程习惯,最好还是把它放在JSP文件的顶部。,2include指令,include指令的作用是包含另一个文件,其语法相当简单,使用格式如下:在这个指令中应该使用JSP的相对路径。被include指令所包含的文件必须符合JSP语法,可以是静态的HTML文件、脚本元素、指令元素和动作元素。在将网页编译为Servlet时,JS

11、P引擎将对所包含的文件进行语法分析。,如果包含的是JSP文件,那么就会执行这个被包含的JSP文件中的代码。如果只是用include指令来包含一个静态文件,那么这个包含的文件所执行的结果将会插入到JSP文件中include指令所在的位置。一旦执行完了包含文件,那么主JSP文件的过程将会恢复,继续执行下一行。,被包含的文件可以是HTML文件、JSP文件、文本文件,或者只是一段Java代码,但是需要注意在这个包含文件中不能使用、或标记,因为这将会影响在原JSP文件中同样的标记,有时会导致错误。,include指令包含的文件的路径名一般来说是指相对路径,不需要什么端口、协议和域名。如果这个路径以“/”

12、开头,那么这个路径主要是参照相对于包含这个JSP文件的Web应用程序的根目录,如果路径是以文件名或目录名开头,那么这个路径就是正在使用的JSP文件的当前路径。,4.2 【案例8】个人信息调查表,4.2.1 JSP的内置对象简介JSP有九种内置对象:request、response、out、pageContext、session、application、config、page和exception。下面对它们进行简单介绍。,(1)requestrequest包含了来自浏览器请求的相关信息,并且提供了获取Cookie、header和请求相关的参数值等数据的有效方法。 request对象封装了用户提交

13、的信息,通过调用该对象相应的方法可以获取用户提交的信息。,(2)responseresponse主要将JSP处理后的结果传回到客户端(如Cookie、header信息等),它提供了将数据送回浏览器的方法。 (3)outout对象用于向浏览器回送输出结果。,(4)pageContextpageContext对象存储当前JSP页面相关信息,如属性、内建对象等。 (5)sessionsession对象用于存储每一个用户的状态信息,以便跟踪用户的会话状态,直到客户端与服务器断开连接为止,可用来识别每个用户。,(6)applicationapplicaton负责提供应用程序在服务器中运行的全局信息,当应

14、用程序在服务器中启动时该对象就一直存在,直到服务器关闭为止,所有客户共享这个内置的application对象。applicaton可用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。,(7)configconfig对象用于配置处理JSP程序的Servlet实例的初始化参数,它只有在JSP页面范围内是合法的。,(8)pagepage表示从JSP页面产生的一个Servlet实例,实质上page对象代表JSP对象本身,或者说代表编译后的Servlet对象。,(9)exceptionexception是存储异常的对象,只有在JSP页面的page指令中指定isErrorPage属性

15、为true后,才可以在页面中使用exception对象。初步了解了JSP内置对象的用途后,下面将对常用的内置对象进行详细学习。,4.2.2 request对象与信息的传递,1理解用户请求信息 2获取路径和协议信息 (1)String getProtocol( ) (2)String getScheme( ) (3)String getPathInfo( ),(4)String getContextPath( ) (5)String getRequestURI( ) (6)String getServletPath( ) (7)String getRealPath(String path),3获

16、取主机和端口信息,(1)String getServerName( ) (2)int getServerPort( ) (3)String getLocalName( ) (4)String getLocalAddr( ),(5)int getLocalPort( ) (6)String getRemoteAddr( ) (7)String getRemoteHost( ) (8)int getRemotePort( ),4获取查询字符串信息,(1)获取查询字符串 (2)获取查询字符串中的变量值 getParameter( ) getParameterValues( ) getParamete

17、rNames( ),5其他常用方法,(1)String getCharacterEncoding( ) (2)void setCharacterEncoding(String name) (3)Cookie getCookies( ) (4)String getRequestedSessionId( ),(5)HttpSession getSession( ) (6)boolean isRequestedSessionIdFromCookie( ) (7)boolean isRequestedSessionIdFromURL( ) (8)boolean isRequestedSessionId

18、Valid( ),4.2.3 表单及其在信息传递中的应用,1input标记标记是最常用的表单标记,常用来输入信息或提交信息。input标记的通用语法格式如下: ,其中,type属性允许指定输入类型,可以是所列几种输入类型中的一种:text(文本框)、password(密码框)、checkbox(复选框)、radio(单选按钮)、image(图像域)、reset(重置按钮)和submit(提交按钮),name属性为表单元素的名称,value属性为表单元素的初始值。,对标记的各种输入类型进行举例说明。 (1)文本框 (2)密码框 (3)提交按钮与重置按钮 (4)单选按钮与复选框,2textarea

19、标记,标记声明一个用户可以输入多行文本的区域,它的值(value)就是用户的输入。 标记的语法如下: text其中,cols为文本域宽度(字符数),rows为文本域的高度(行数),和之间的是文本域的内容。,3select标记,标记声明一个可选项的列表,用户可以选择一个或者多个选项,标记的值(value)就是所选择的选项,下面是select标记的语法:option . option ,其中,标记表示选项列表,name属性是名称,size属性是列表区域高度(即可显示的选项数),multiple是可选属性,如果有该属性则表示可选择多项。,4.3 【案例9】网页的重定向,4.3.1 response对

20、象 1response对象的常用方法 (1)void sendRedirect(String locationg) (2)void setBufferSize(int size) (3)void setCharacterEncoding(String charset),(4)void setContentType(String type) (5)void setDateHeader(String name, long value) (6)void setHeader(String name, String value) (7)void setIntHeader(String name, int

21、 value),(8)void addCookie(Cookie Cookie) (9)String encodeRedirectURL(String url) (10)String encodeURL(String url) (11)void sendError(int xc, String msg),(12)String getCharacterEncoding( ) (13)void reset( ) (14)String getContentType( ) (15)void setContentLength(int length) (16)boolean isCommitted( ),

22、2response对象的应用,(1)网页的存储 (2)页面定时刷新,4.3.2 out对象,out对象源于javax.servlet.jsp.jspWriter,它表示一个输出流,可用来向客户端输出数据。out对象的方法主要是控制缓冲区数据输出的操作,如前面多次使用过的out.print( )和out.println( )。out对象的常用方法如下。,(1)void clear( ) 清除输出缓冲区的内容,但是不输出到客户端。 (2)void clearBuffer( ) 清除输出缓冲区的内容,并输出到客户端。,(3)void close( ) 关闭输出流,清除所有内容。在调用close( )

23、方法后,out对象输出的流就不会发送到客户端。,(4)void flush( ) 输出缓冲区里面的数据,然后清空缓冲区。与clearBuffer( )不同的是,flush( )方法将在屏幕上输出数据后再清空缓冲区。,(5)int getBufferSize( ) 获取以KB为单位的目前缓冲区的大小。 (6)int getRemaining( ) 获取以KB为单位的缓冲区中空闲空间的大小。,(7)void newLine( ) 输出一个换行符。 (8)void print(data) 将指定类型的数据输出到HTTP流中,不换行。print方法可用于多种类型的数据,包括:boolean、char、

24、char 、double、float、int、long、Object、String等。,(9)void println(data) 与print相似,println也用于将指定类型的数据输出到HTTP流中,与print不同的是它将在结尾多输出一个换行符。 (10)boolean isAutoFlush( ) 确定是否自动刷新缓冲区,结果取决于page指令的AutoFlush属性。 下面是有关out对象的一个简单示例。,4.4 【案例10】简单访问计数器,4.4.1 session对象 1session对象的基本概念HTTP协议是无状态的,即信息无法通过HTTP协议本身进行传递。为了跟踪用户的操

25、作状态,JSP使用session对象来实现这一功能。,用户登陆网站时,系统将为其生成一个独一无二的session对象,用以记录该用户的个人信息,一旦用户退出网站,那么所对应的session对象将被注销。session对象可以绑定若干个用户信息或者JSP对象,不同session对象的同名变量是不会相互干扰的。,session对象在服务器上设置了一个30分钟的过期时间,当客户停止活动后自动失效。session中保存和检索的信息不能是基本数据类型如int,double等,必须是java相应的对象,如Integer,Double等。,session对象是一个JSP内置对象,它在第一个JSP页面被装载时

26、自动创建,用以进行会话期的管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,称为一个“会话”。,当客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,因此服务器应当通过某种办法知道这是同一个客户,这就需要session对象。,当客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的id号,JSP引擎将这个id号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。,当客户再访问连接该服务器的其他页面时,不会再分配给客户新的session对象。

27、客户关闭浏览器后,服务器端该客户的session对象被取消,和客户的会话对应关系消失。客户重新打开浏览器再次连接到该服务器时,服务器就会为该客户重新创建一个新的session对象。,session对象源于javax.servlet.http.HttpSession,它是一个建立在Cookie机制上的友好的界面,session的信息保存在服务器端,session的id保存在客户机的Cookie中。事实上,在许多服务器上,如果浏览器支持的话它们就使用Cookie,session自动为每个流程提供方便的存储信息的方法。,2session对象的常用方法,session对象表示目前用户的会话状态,用来识

28、别每个用户,与之相关的常用方法如下。 (1)Object getAttribute(String name) 获取与指定名字相关联的session属性值。,(2)Enumeration getAttributeNames( ) 取得session内所有属性的集合。 (3)long getCreationTime( ) 获取session的创建时间,最小单位为千分之一秒。,(4)String getId( ) 获取session标识。此方法返回惟一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当做键名用。

29、,(5)long getLastAccessedTime( ) 获取与当前session相关的客户端最后一次访问的时间,由1970-01-01算起,单位为毫秒。 (6)int getMaxInactiveInterval(int interval) 获取总时间,以秒为单位,表示session的有效时间。1为永不过期。,(7)ServletContext getServletContext( ) 获取一个该JSP页面对应的ServletContext对象实例。 (8)void invalidate( ) 销毁session对象。,(9)boolean isNew( ) 判断一个session是否

30、由服务器产生,但是客户端并没有使用。 (10)void setAttribute(String name, String value) 设置指定名称的session属性值,会替换掉任何以前同一用户的同名值。,(11)void setMaxInactiveInterval(int interval) 设置session的有效期。 (12)void removeAttribute(String name) 移除指定名称的session属性。,4.4.2 application对象,1application对象及其方法下面列出了application对象常用的方法。 (1)Object getAtt

31、ribute(String name) 获取由name指定的application属性。,(2)Enumeration getAttributes( ) 获取所有的application属性。 (3)void removeAttribute(String name)移除指定名称的application属性。,(4)void setAttribute(String name, Object value)设置指定的application属性的值,属性值必须是对象而不能是简单数据类型(如int)。 (5)ServletContext getContext(String uripath) 获取当前应用

32、的ServletContext对象。,(6)String getInitParameter(String name) 获取由name指定的application属性的初始值。 (7)Enumeration getInitParameters( ) 获取所有的application属性的初始值的集合。,(8)RequestDispatcher getNamedDispatcher(String name)为指定名字的Servlet对象返回一个RequestDispatcher对象的实例。 (9)RequestDispatcher getRequestDispatcher(String path)

33、获取一个RequestDispatcher对象的实例。,(10)String getServerInfo( )获取应用服务器版本信息。 (11)String getServletContextName( )获取当前web应用的名称。,2application对象与session对象的异同,application对象与session对象都可以实现Web应用中信息的存储,但两者具有不同的作用域,session对象是针对用户的,进入网站时,每一个用户都会分配到一个单独的session对象,即使该用户设置了与其他用户相同名称的session属性,也不会发生冲突。,与session不同的是,所有用户的a

34、pplication对象都是同一个,即所有用户共享这个内置的application对象,每一个用户都可以从各自浏览的JSP页面访问这个对象。,4.4.3 JSP的其他内置对象,1pageContext 2config对象 3exception对象 4page对象,4.4.4 Cookie对象,1Cookie类及其常用方法 (1)getMaxAge( )和setMaxAge( ) (2)getName( ) (3)getPath( )和setPath( ) (4)getSecure( )和setSecure( ) (5)getValue( )和setValue( ) (6)getDomain( )和setDomain( ),2向客户端发送Cookie,(1)创建Cookie对象 (2)设置Cookie最大时效 (3)将Cookie发送到客户端中,3从客户端读取Cookie 4修改Cookie的值 5删除Cookie,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报