1、第第3章章 JSP语法详解语法详解 3.1 JSP文件组成 3.3 JSP脚本元素 3.4 JSP指令元素 3.5 JSP动作元素 3.2 JSP注释方式 第1页3.1 JSP文件组成文件组成 3.1.1 JSP页创建 3.1.2 JSP文件组成元素 3.1.3 JSP转义字符 返回第2页一个简单JSP页面:JSP页创建页创建 第一个JSP程序 运行效果:返回第3页JSP文件组成元素(文件组成元素(1)1JSP中指令标识 利用JSP指令能够使服务器按照指令设置来执行动作和设置在整个JSP页面范围内有效属性。比如:2HTML标识语言 HTML标识语言在JSP页面中作为静态内容,浏览器将会识别这些
2、HTML语言并执行。在JSP程序开发中,这些HTML标识语言主要负责页面布局、设计和美观,能够说是网页框架。第4页JSP文件组成元素(文件组成元素(2)3加入Java代码 加入到JSP页面中Java代码,在客户端浏览器中是不可见。它们需要被服务器执行,然后由服务器将执行结果与HTML标识语言一同发送给客户端进行显示。经过向JSP页面中加入Java代吗,能够使该页面生成动态内容。比如:4JSP表示式 JSP表示式主要用来输出,它能够向页面输出内容显示给用户,还能够用来动态指定HTML标识中属性值。比如:返回第5页JSP转义字符转义字符 转义字符是以“”开头特殊字符,在屏幕上是不能显示,而且在程序
3、中无法用普通形式字符表示,只能用这种特殊形式表示。常见转义字符如表所表示:字符形式描述n换行符,将当前位置移到下一行开头,与元素是相同t制表符,跳转到下一个tab位置b退格符,将当前位置移到前一列r回车符,将当前位置移到本行开头f换页符,将当前位置移到下页开头反斜杠字符“”单引号字符双引号字符返回第6页3.2 JSP注释方式注释方式 3.2.1 HTML注释 3.2.2 JSP隐藏注释 3.2.3 脚本段注释 注释语句能够帮助程序员识别和了解程序代码。在JSP页面中主要存在3种注释方式,分别为HTML注释、JSP隐藏注释及脚本段注释 返回第7页HTML注释注释 HTML注释语法格式以下:!-c
4、omment -HTML注释将被发送到客户端,但不直接显示,用户在客户端源代码中能够查看到。比如:返回第8页JSP隐藏注释隐藏注释 JSP注释语句在传输到客户端过程中会被过滤掉,不会发送到客户端。JSP隐藏注释语法格式以下:比如:返回第9页脚本段注释脚本段注释 脚本段中包含两种注释方式:单行注释和多行注释 1单行注释 单行注释是以“/”符号后面全部内容为注释内容,服务器对该内容不能进行任何操作。脚本段在客户端经过查看源代码是不可见,单行注释格式以下:/注释内容 2多行注释 多行注释经过“/*”和“*/”符号进行标识,这两个标识必须成对出现,在它们之间输入注释内容能够换行。多行注释格式以下:/*
5、注释内容1注释内容2 注释内容3*/返回第10页3.3 JSP脚本元素脚本元素 3.3.1 申明语句 3.3.2 脚本段 3.3.3 JSP表示式 JSP中脚本元素包含3部分:申明语句、脚本段及JSP表示式,在JSP页面中需要经过特殊约定来表示这些元素,而且对于客户端这些元素是不可见,它们都是由服务器执行。返回第11页申明语句申明语句 申明语句(Declaration)在JSP页面中定义方法和变量,其申明格式以下:在页面中经过申明元素申明方法和变量,在整个页面内都有效,它们将称为JSP页面被转换为类文件后中方法和属性,而且他们会被多个线程即多个用户共享。也就是说,其中任何一个线程对申明变量或方
6、法修改都会改变它们原来状态。它们生命周期从创建到服务器关闭后结束。注意:在“%”与“!”之间不要空格。申明语法与在Java语言中 申明变量和方法是一样。返回第12页脚本段脚本段 脚本段(Scriptlets)就是JSP代码片段或脚本片段,嵌在“”标识中。在脚本段中能够定义变量、调用方法和进行各种表示式运算,且每行语句后面加入分号。这种Java代码在Web服务器响应请求时会运行。脚本段使用格式以下:说明:脚本程序使用比较灵活,实现功效是JSP表示式无法实现。返回第13页JSP表示式表示式 JSP表示式用来把Java数据向页面直接输出信息,其使用格式以下:JSP表示式与JSP页面中嵌入到脚本段中o
7、ut.print()方法实现功效相同。假如表示式输出是一个对象,则该对象toString()方法被调用,表示式将输出toString()方法返回内容。比如:运行结果:返回第14页3.4 JSP指令元素指令元素 3.4.1 页面指令元素:page 3.4.2 包含指令元素:include 3.4.3 提供动作指令元素:taglib JSP指令元素主要包含3种:Page指令、Include指令及taglib指令。以“”标识开始,以“%”标识结束。返回第15页页面指令元素:页面指令元素:page(1)page指令即页面指令,用于定义JSP文件中有效属性。该指令能够放在JSP页面中任意位置。Page指
8、令包含各种属性,经过设置这些属性能够影响到当前JSP页面。Page指令中除import属性外,其它属性只能在指令中出现一次。Page指令语法格式以下:第16页页面指令元素:页面指令元素:page(2)page指令各属性所具有功能以下:language:设置当前页面中编写JSP脚本使用语言。import:用于向JSP文件中导入需要用户类包。在Page指令中可屡次使用该属性来 导入多个包。contentType:设置响应结果MIME类型。默认MIME类型是text/html,默认字符编码 为ISO-8859-1。当屡次使用Page指令时,该属性只有第一次使用有效。session:说明当前页面是否支
9、持session,默认值为ture,表示支持session。buffer:设置out对象使用缓冲区大小。如设置为none,说明不使用缓存,而直接 经过out对象进行输出;假如将该属性指定为数值,则输出缓冲区大小不 应小于该值。默认值为8KB。autoFlush:设置输出流缓冲区是否自动去除。默认设置值为true,说明当缓冲区已满 时,自动将其中内容输出到客户端。假如设置为false,则当缓冲区中 内容超出其设置大小时,会产生“JSP Buffer overflow”溢出异常。isThreadSafe:默认值为true,说明当前JSP页被转换为Servlet后,会以多线程方式来 处理来自多个用户
10、请求;假如设置为false,则转换后Servlet会实现 SigleThreadModel接口,该Servlet将以单线程方式来处理用户请求,即 其它请求必须等候直到前一个请求被处理结束。第17页页面指令元素:页面指令元素:page(3)page指令各属性所含有功效(续):info:设置为任意字符串,如当前页面作者或其它相关页面信息。能够经过 Servlet.getServletInfo()方法来获取设置字符串。errorPage:指定一个当前页面出现异常时所要调用页面。假如属性值是以“/”开头 路径,则将在当前Web应用根目录下查找文件;不然,将当前页面目 录下查找文件。isErrorPag
11、e:设置为true,说明在当前页面中能够使用excpetion异常对象。若在其它页面 中经过errorPage属性指定了该页面,则当调用页面出现异常时候,会跳转 到该页面,而且在该页面中能够经过exception对象输犯错误信息。相反,假如将该属性设置为false,则在当前页面中不能使用execption对象。该属 性默认值为false。isELlgnored:能够使JSP容器忽略表示式语言“$”。其值只能是ture或false。设置为true 则忽略表示式语言;设置为false,则不忽略表示式语言。extends:设置当前JSP页产生Servlet是继承哪个父类。在JSP中通常不会设置该 属
12、性,JSP容器会提供转换后Servlet继承父类。而且假如设置该属性,一些改动会影响JSP编译能力。pageEncoding:用来设置JSP页字符编码,默认值是“ISO-8859-1”。返回第18页包含指令元素:包含指令元素:include include指令用于在当前JSP页面中在当前使用该指令位置嵌入其它文件,假如被包含文件有能够执行代码,则显示代码执行结果。include指令语法格式以下:include指令只存在file属性,表示此file路径,路径名指是相对路径,不需要指定端口、协议或域名等。该属性不支持任何表示式,也不允许传递任何参数。注意:假如该属性值以“/”开头,那么指定是一个绝
13、对路径,将在当前 应用根目录下查找文件,假如是以文件名称或文件夹名开头,那么指定相对路径将在当前页面目录上查找文件。返回第19页提供动作指令元素:提供动作指令元素:taglib taglib指令能够在页面中使用这些基本标识或自定义标识来完成特殊功效,在JSP页面中开启客户端定制行为。taglib指令语法格式以下:taglib元素含有两个属性:uri:该属性指定了JSP要在web.xml文件中查找标签库描述符,该 描述符是一个标签描述文件(*.tld)映射。在该标签描述文 件中定义了该标签库中各个标署名称,并为每个标签指定一个 标签处理类。prefix:该属性指定了标签前缀,以前缀不能使用已被s
14、un企业声 明保留字。前缀名不能为jsp、jspx、java、javax、servlet、sun、和sunw。比如:返回第20页3.5 JSP动作元素动作元素 3.5.1 包含文件:3.5.2 请求转发:3.5.3 申明使用JavaBean:3.5.4 设置JavaBean属性值:3.5.5 获取JavaBean属性值:3.5.6 申明使用Java插件:与 3.5.7 参数传递:与 3.5.8 其它动作元素 返回第21页包含文件:包含文件:(1)该元素允许包含动态或静态文件,假如包含文件是静态,它仅仅是把包含文件内容加到JSP文件中去。包含静态文件使用格式以下:假如包含文件是动态。这个被包含文
15、件也会被JSP编译器执行,而且在编译时能够传递参数。包含动态文件使用格式以下:第22页包含文件:包含文件:(2)属性及子元素 page属性:该属性指定了被包含文件路径,其值能够是相 对路径表示式。当路径是以“/”开头时,则按 照当前应用路径查找该文件;假如路径是以文 件名或目录名称开头,那么,将按照当前路径 查找被包含文件。flush属性:该属性标识当输出缓冲区满时,是否清空缓冲区 该属性默认值为false,通常情况下设置为true。子元素:该子元素能够向被包含动作页面中 传递参数。第23页包含文件:包含文件:(3)与include指令区分(1)是直接包含源代码,包含请求 HTML代码,而且支
16、持JSP表示式和Struts应用中请求模式。(2)经过包含一个JSP页面,在包含页面中相关 response操作都被忽略,也就是说当前操作不能经过response对象 重定向到其它页面。假如用包含JSP页面,在该 页面中全部response操作都会正常运行。(3)元素请求代码时,能够带参数,而就不 能够带参数。(4)从执行速度角度上讲,比请求速度快,因为仅处理一个请求,而处理两个请 求。(5)从实际应用角度上讲,用于检测用户是否登录、网 站标识或网站一些静态不变信息;而用于发送 一个请求,并接收返回HTML,并能够加入参数。返回第24页请求转发:请求转发:该元素用于将客户端请求从一个页面转发到
17、另一个JSP页面、HTML或相关资源文件中。当该元素被执行后,当前页面将不再被执行,而是去执行该元素指定目标页面。使用格式以下:假如转发目标是一个动态文件,还能够向该文件中传递多个参数,详细使用格式以下:参数及元素说明:page属性:该属性指定了目标文件路径。元素:该元素用来向动态目标文件中传递参数。返回第25页申明使用申明使用JavaBean:(1)该元素能够在JSP页面中创建一个JavaBean实例,而且经过属性设置能够将该实例存放到JSP中指定范围内。使用格式以下:其它元素设置,如 第26页申明使用申明使用JavaBean:(2)属性说明 id属性:该属性指定一个变量,在所定义范围内或S
18、criptlet中将使用该变量来对所创建JavaBean实例进行引用。该变量必须符合Java中变量命名规则。scope属性:该属性指定了所创建JavaBean实例存取范围,默认属性值是“page”。scope属性含有可选值见下表:属性名称获取方式描述page无指定创建JavaBean实例只能够在当前JSP文件中使用,包含经过include静态指令包含页面中有效requestrequest对象getAttribute方法获取指定创建JavBean实例能够在请求范围内进行存取sessionsession对象getAttribute方法获取指定创建JavBean实例能够在session范围内进行存取
19、applicationapplication对象getAttribute方法获取指定创建JavBean实例能够在application范围内进行存取第27页申明使用申明使用JavaBean:(3)属性说明(续)class属性:该属性指定了一个完整类名,指定类名不能是抽象,它必须含有公共、没有参数结构方法。在没有设置type属性时,必须设置class属性。type属性:该属性用于设置由id属性指定变量类型,能够指定要创建实例类本身、类父类或是一个接口。beanName属性:该属性能够是类文件、JavaBean实例或包含JavaBean串行化文件(.ser文件)。当JavaBean不存在与指定范围
20、内时,才能够使用此属性。它必须使用类型属性来指定要将何种类型Bean实例化。beanName属性不能class属性一起使用,而且区分大小写。第28页申明使用申明使用JavaBean:(4)元素使用:(1)不存在Body格式以下:(2)存在Body格式以下:返回第29页设置设置JavaBean属性值:属性值:(1)该元素通常情况下与元素一起使用,它调用JavaBean中setXXX()方法,将请求中参数赋值给由元素创建JavaBean中对象简单属性或索引属性。该属性使用格式以下:元素属性 name:该属性用来指定一个存在JSP中某个范围中JavaBean 实例。第30页设置设置JavaBean属
21、性值:属性值:(2)元素属性 property=“*”:该属性说明request请求中全部参数值将被一一 赋给JavaBean中与参数含有相同名字属性。property=“属性名称”:该属性取值为JavaBean中属性时,则只 会将request请求中与该JavaBean属性同名一个 参数致赋给这个JavaBean属性。property=“属性名称”param=“参数名称”:param属性指定一个 request请求中参数,property属性指定JavaBean 中某个属性。该方法允许将请求中参数赋值 给JavaBean中与该参数不一样名属性。property=“属性名”value=“值”:
22、value属性指定值能够是字符串 数值或标识一个详细指JSP表示式或EL表示式。该值将被赋值给property属性指定JavaBean属性。返回第31页获取获取JavaBean属性值:属性值:该属性用来从指定JavaBean中读取指定属性值,并输出到页面中。该JavaBean必须含有getXXX()方法。元素使用格式以下:返回 元素属性 name属性:该属性用来指定一个存在某个JSP范围中 JavaBean实例。property属性:该属性指定了要获取由name属性指定 JavaBean中哪个属性值。第32页申明使用申明使用Java插件:插件:与与(1)元素能够在页面中插入Java Apple
23、t小程序或JavaBean,它们能够在客户端运行,该元素会依据客户端浏览器版本转换成或HTML元素。当转换失败时,元素用来显示用户提醒信息。所以,与通常情况下一起使用,使用格式以下:jsp:param name=parameterName value=parameterValue|/text message for user 第33页申明使用申明使用Java插件:插件:与与(2)其中各参数意义以下:属性与参数名称含义type指定了所要加载插件对象类型,可选值为“bean”和“applet”codecodebase用来指定code属性指定Java类文件所在路径。默认值为当前访问JSP页面路径na
24、me指定了加载Applet或JavaBean名称archive指定预先加载存档文件路径,多个路径可用逗号进行分隔align主要是加载插件对象在页面中显示时对齐方式。可选值为bottom、top、middle、left和rightheight加载插件对象在页面中显示时高度,单位为像素。支持JSP表示式或EL表示式width加载插件对象在页面中显示时宽度,单位为像素。支持JSP表示式或EL表示式hspace加载Applet或JavaBean在屏幕或单元格中所留出左右空间大小,不支持任何表示式vspace加载Applet或JavaBean在屏幕或单元格中所留出上下空间大小,不支持任何表示式jerve
25、rsion在浏览器中执行Applet和JavaBean时所需Java运行环境版本,默认是1.1nspluginurl指定了Netscape浏览器用户能够使用JRE下载地址iepluginurl指定了浏览器Internet浏览器用户能够使用JRE下载地址在该元素中能够包含多个元素,用来向Applet或JavaBean中传递参数当加载Java类文件失败时,用来显示给用户提醒信息指定了要加载Java类文件名称。该名称能够包含扩展名和类包名 返回第34页参数传递:参数传递:与与(1)经过元素能够传递一个参数,使用格式以下:经过元素能够传递多个参数,使用格式以下:传递多个参数,也能够经过元素,比如:第35页参数传递:参数传递:与与(2)元素与元素参数 name属性:表示参数名称。value属性:表示参数值。说明:元素经常与其它元素一起使用。比如,、等元素一起使用;元素只能与元素一起使用。返回第36页其它动作元素其它动作元素 JSP还存在其它动作元素,它们都是不惯用动作元素。见下表:名称含义用于定义其它动作元素中任意属性值用于为一个动作元素定义动作体,该元素只能与元素一起使用用于动态创建一个XML元素,并将其添加到响应信息,此元素主要用于JSP文档中用于输出XML申明和文档类型申明返回第37页