第2章 JSP元素
本章主要内容 常用的HTML标记 JSP指令元素 JSP脚本元素 JSP动作元素 XML与XML文档
2.1 JSP页面的组成元素 2.1.1 JSP页面的组成元素
2.1 JSP页面的组成元素 JSP页面的组成元素 JSP元素 模板文本元素 注释元素 指令元素 脚本元素 动作元素
2.1 JSP页面的组成元素 2.1.2 常用的HTML标记 HTML (HyperText Markup Language,超文本标记语言)不是程序设计语言,而是一组标记,便于网页设计人员把文本、图像、动画等制作成有一定效果的网页,资源间通过超链接联结成为一个有机的整体。
2.1 JSP页面的组成元素 HTML文件的基本结构包括文件头(Head)和文件体(Body)两大部分,头部为浏览器提供所需的描述信息,主体则包含待显示的内容。 HTML文本由浏览器解释并还原出页面效果。
2.1 JSP页面的组成元素 HTML标记是用尖括号标识的字符串,尖括号中的英文名叫标记名(如<body>),标记名与左边的“<”间一般不留空格。每个HTML标记都有自己特定的功能或效果,例如<font>标记可定义字体、字号和字的颜色等。
2.1 JSP页面的组成元素 大部分HTML标记是成对出现,不带“/”的叫起始标记,带有“/”的叫结束标记。标记的属性参数一般写在起始标记内。起始标记和结束标记间的对象称为标记体,标记的效果作用在标记体上,例如: <font size="5" color="#FF0000">JSP程序设计</font>
2.1 JSP页面的组成元素 当一个标记对没有标记体时,称之为空标记,此时可用简写式来表示,即:在起始标记的“>”字符前加上“/”,并把结束标记省略不写。如: <jsp:forward page="a1.jsp" / >
2.1 JSP页面的组成元素 1、文件标记 文件标记在HTML文件中,用于指出HTML文件的各组成部分。HTML文件标记一般只出现一次,如果重复出现,一些早期的浏览器可能无法正常解释。
2.1 JSP页面的组成元素 (1)<html> </html>标记 <html>标记表示HTML文件从此处开始,到</html>标记结束,这对标记处在最外层,网页的内容写在此标记内。
2.1 JSP页面的组成元素 (2)<head> </head>标记 这对标记表示此处是HTML文档的文件头。文件头内部的信息一般不会在浏览器的正文区显示。此标记对内可以插入其它标记,如网页标题标记<title></title>。
2.1 JSP页面的组成元素 (3)<body> </body>标记 这对标记表示此处是网页的主体,一般不能省略,标记体的内容在浏览器正文区中显示,例如文字、图片和超链接等。
2.1 JSP页面的组成元素 2、排版标记 (1)<!-- -->标记 (1)<!-- -->标记 <!-- -->标记在HTML文件中作注释用,对网页中的代码作说明,可以放在网页中的任何位置。注释内容会返回到客户端浏览器上,但不显示。在IE5浏览器中,通过菜单【查看】→【源文件】,可以看到<!-- -->注释。
2.1 JSP页面的组成元素 (2)<p>标记 <p></p>标记对用于标识一个段落,两个相邻的段落间有一空行的间隔。在DreamWeaver8的设计视图模式中,输入文字后按<回车>键,会自动产生<p></p>标记。
2.1 JSP页面的组成元素 (3)<br>标记 这个标记没有结束标记,表示换行。在DreamWeaver8的设计视图中,输入文字后按<Shift>+<回车>组合键,会自动产生<br>标记。<p></p>标记和<br>都能换行,但<br>换行后,上下两行的间距比较小,<p></p>标记换行后,上下两行有一空行的间距。
2.1 JSP页面的组成元素 3、字体标记 字体标记包括有: <STRONG>、<B>、<EM>、<I>、<FONT>等。 1)<font>标记用于定义字体、字号大小和颜色。<font>标记的主要属性有face、size、color。 (1)face属性用于设置字体,如:<font face="宋体">。
2.1 JSP页面的组成元素 (2)size属性用于设置字号,HTML中定义了7种字号,1号最小,7号最大,如:<font size=“4”>。字号也可以用“磅”(px)表示。 (3)color属性用于设置文本的颜色,color有三种方法来设定颜色,第一种方法是用颜色名称,第二种方法用红、绿和蓝色百分比的RGB值来设定,第三种方法是用十六进制的颜色代号来设定颜色。
2.1 JSP页面的组成元素 如: <FONT COLOR="RED">颜色设定</FONT> <FONT COLOR="RGB(70%,10%,30%)">颜色设定</FONT> <FONT COLOR="#FF0000">颜色设定</FONT>
2.1 JSP页面的组成元素 4、表格标记 在网页中,表格主要分成排版表格和数据表格两种。 排版表格在浏览器中不显示边线,仅供排版、布局用。 数据表格在浏览器中显示边线或背景色,用于列表显示数据。
2.1 JSP页面的组成元素 <table>标记表示表格的开始,</table>表示表格到此结束。 <tr></tr>表示表格中的一行。 <table></table>间如果有n对<tr></tr>标记,表示此表格有n行。 <td></td>表示一行中的一列,一般写在<tr></tr>内。
2.1 JSP页面的组成元素 <table>、<tr>、<td>间的嵌套关系为: <td></td> </tr> </table>
2.1 JSP页面的组成元素 【例2-1】用DW8制作一个3行3列的细线数据表格,表格宽400像素,边线粗细为1个像素,边线颜色为红色。操作步骤如下: 第一步:启动DW8,在【文件】窗口中单击右键,在弹出的快捷菜单中选择【新建文件】,自动生成一个JSP页面文件,将其更名为exam201.jsp。双击exam201.jsp文件,打开供编辑,确定当前文档视图为设计视图。
2.1 JSP页面的组成元素 第二步:插入表格。使用菜单【插入】→【表格】,在对话框中填写如下参数:行数为3,列数为3,表格宽度为400像素,边框粗细为0,单元格边距为0,单元格间距为1,单击“确定”按钮后编辑区中插入了一个表格。
2.1 JSP页面的组成元素 第三步:定义表格的背景色为红色。在编辑区中单击表格的边线,选定整个表格,属性面板上,背景颜色选择红色(#FF0000)。 第四步:定义单元格的背景色为白色。用鼠标左键拖动选定表格中的所有单元格,在属性面板中,定义单元格的背景色为白色(#FFFFFF),至此,细线表格生成。
2.1 JSP页面的组成元素 第五步:预览。用快捷键<CTRL>+S保存文档,启动Tomcat,按<F12>预览exam201.jsp,即可看到网页上的细线表格。 以上操作录相请参考电子资源包demo\ch2\exam201.exe文件。
2.1 JSP页面的组成元素 5、表单 表单是系统和用户交互的手段之一。用户在表单中填写数据,提交后,表单中的数据传递给后台程序处理,实现了客户端和服务器的交互。
2.1 JSP页面的组成元素 (1)<form>和</form>标记 <form>标记中的id和name属性均为表单的ID名,用于在当前网页中标识表单,在当前网页中此ID名应该唯一。
2.1 JSP页面的组成元素 <form>中action属性值为后台表单处理程序的URI,本例指定用exam.jsp来处理表单数据。 <form>标记中的method属性表示数据的提交方式,一般有GET和POST两种方式。GET方式将表单中的数据按照“变量名=变量值”的形式附加在URL的查询串中,各个变量之间使用“&”连接。
2.1 JSP页面的组成元素 本例如果采用GET方式提交数据,则相应的URL类似于: http://127.0.0.1:8080/exam.jsp?name=user1&Submit=%CC%E1%BD%BB
2.1 JSP页面的组成元素 用GET方式提交表单数据的优点是速度快,缺点是变量值会在浏览器的地址栏中显示,并且URL的长度有限制,一次所能提交的数据量有限。 如果用POST方式提交表单数据,表单数据按“变量名=变量值”的形式存放在HTTP请求报头尾部的数据体中,表单数据不会显示在URL中。
2.1 JSP页面的组成元素 (2)文本域标记 文本域表单的常见用法如: <input name="name" type="text" id="name" value="123" /> <input>标记表示此标记是写入标记,存储用户写入的信息。标记中的id和name属性为文本域的ID名,type属性表示此写入标记的类型,value属性存储文本域的值。
2.1 JSP页面的组成元素 多行文本框用文本区域表单元素实现,它的HTML标记使用格式如下: <textarea name="textarea">内容</textarea> name属性是文本区域的名字。由于多行文本框可以输入较多的内容,所以把写入的内容存储在标记体中。
2.1 JSP页面的组成元素 (3)单选按钮 在实际应用中的“性别”信息一般通过单选按钮采集,用户在给定的“男”和“女”两个选项中选择其中一个,相应的HTML代码如:
2.1 JSP页面的组成元素 (4)复选按钮 在实际应用的“爱好”信息一般通过复选按钮采集,用户在列出的多个爱好中作出选择,可以选零个,也可以全选,相应的HTML代码如:
2.1 JSP页面的组成元素 (5)隐藏表单域 隐藏表单域是不可视的表单元素,用于存储隐含信息,例如将用户的登录信息存储在隐藏表单域中,用户提交表单后,隐藏表单域中的信息也会被提交给服务器。隐藏表单域记录的是“name=value”形式的信息,它的HTML标记类似于:
2.1 JSP页面的组成元素 (6)列表表单元素 列表表单元素预先把一组可供选择的数据存储在列表中,以下拉菜单或列表的形式供用户在其中选择,其中name是选项的提示文字,value才是选项的值。它的HTML标记形如: <select name=" career" size="3" multiple="multiple"> <option value="001" selected="selected">公司员工</option> <option value="002">在校学生</option> <option value="003">公务员</option> </select>
2.1 JSP页面的组成元素 (7)文件域表单元素 文件域表单由一个文本域和一个按钮组成,单击按钮后会激活一个文件选择对话框,从本地磁盘中选择一个文件,被选中文件的路径及文件名自动填写在文本域中。上传文件时,需要用到文件域。文件域的HTML标记形如:
2.1 JSP页面的组成元素 6、超链接 <a>标记的href属性可以定义超链接,它的一般用法是: <a href="next.htm">下一页</a> href属性值为目标资源的URL,如果是空链接,则URL写为“#”。
2.1 JSP页面的组成元素 【例2-2】用DW8设计一个会员注册的JSP页面,如图2-2示。用户名文本域的名称为userName,口令文本域的名称为password。性别用单选按钮实现,名称为sect,可选值为“男”、“女”。爱好为复选按钮,名称为hobby,可选值有“篮球”、“排球”和“足球”。开户行是下拉列表,名称为bankAccount,可选值有“中国银行”、“工商银行”、“建设银行”。附言是多行文本域,名称为memo。最后是提交按钮,以POST方式提交给exam303.jsp页面。
2.1 JSP页面的组成元素
2.1 JSP页面的组成元素 操作步骤如下: (1)启动DW8,在【文件】窗口中合适的位置上单击右键,在弹出的菜单中选择【新建文件】,将新生成的JSP页面改名为exam202.jsp,双击打开供编辑。 (2)插入表单:使用菜单【插入】→【表单】→【表单】,单击选中表单的红色边框,在属性面板上的【动作】项中输入“exam303.jsp”作为后台处理程序,在【方法】项中选中“POST”。
2.1 JSP页面的组成元素 (3)按图2-2的要求,在表单内制作出题目所要求的表单。 (4)保存文档。使用菜单【文件】→【保存】,或用快捷键<CTRL>+S。 (5)预览。启动Tomcat,在DW8中,按<F12>预览当前页,则IE浏览器中显示图2-2示的表单。 以上操作录相请参考电子资源包demo\ch2\exam202.exe文件。
2.2 JSP注释元素 JSP页面中的注释用于说明程序段的主要作用或程序员的意图,方便日后维护或备忘。JSP页面中的注释主要两种:JSP注释和HTML注释。
2.2 JSP注释元素 2.2.1 JSP注释 JSP注释也叫隐藏注释或服务器端注释,只有打开JSP页面后才能看到它。JSP注释中的内容被编译器忽略,不会出现在Servlet程序中,也不会返回给客户端浏览器。其基本语法为: <%-- 注释的内容 --%>
2.2 JSP注释元素 例如: JSP注释在JSP页面上的位置没有统一规定,但习惯上写在程序段前,需要注意:JSP注释属于标记级的注释,不要把它嵌套在类似于“<% %>”的标记内。
2.2 JSP注释元素 2.2.2 HTML注释 HTML注释也叫输出注释,属于HTML标记范畴,也是标记级的注释。其基本语法为: <!-- 注释内容 [<%%>|<%=%>] -->
2.2 JSP注释元素 HTML注释被JSP编译器视为HTML标记,直接用out.write()方法输出。标记中的注释内容会返回到客户端浏览器,但注释信息不会在浏览器中显示。 在HTML注释中,可以使用<%%>或<%=%>等标记输出一些动态的注释信息。
2.3 JSP指令元素 JSP指令元素(Directive Elements)主要供JSP容器使用,为JSP容器提供相关的页面属性信息,用于指示JSP容器如何正确地翻译代码,或者执行特定的操作。 JSP指令元素主要包括三个:include、page和taglib,它们的基本语法格式形如: <%@ 指令元素 属性="值" %>
<%@ include file="relativeURLspec" %> 2.3 JSP指令元素 2.3.1 include指令元素 1、include指令的基本语法 include指令元素称为文件包含,是在JSP容器把JSP网页翻译成Servlet程序时,将指定文本文件的内容嵌入Servlet程序中,替换include指令。其基本语法为 <%@ include file="relativeURLspec" %>
2.3 JSP指令元素 file属性指出被包含资源的URL,可使用相对路径或绝对路径。绝对路径以Web应用的上下文路径名“/xxxx”开头,如:
2.3 JSP指令元素 2、include指令的使用注意事项 include指令适合于包含静态内容。 include指令是代码静态绑定,被include指令包含的内容在编译时会被静态地嵌入Servlet程序中 。 include指令影响JSP页面的可读性。
2.3 JSP指令元素 2.3.2 page指令元素 page指令用于设置当前JSP页面的属性。 page指令中允许重复使用多次的属性有pageEncoding和import属性等。习惯上,把page指令写在JSP页面的头部。
2.3 JSP指令元素 page指令的基本语法格式如下 <%@ page language="java" extends=" ……." import=" ……." session=" true|false" buffer="none|default|sizekb" autoFlush="true|false" isThreadSafe="true|false" info="…….." isErrorPage="true|false" errorPage="…….." contentType="……." pageEncoding="default" isELIgnored="true|false" %>
2.3 JSP指令元素 1、language属性 这个属性定义JSP页面脚本代码所采用的编程语言,默认值为java。 2、extends属性 JSP页面最终会被JSP容器编译成一个Servlet程序,extends属性用于定义这个Servlet程序的父类。
2.3 JSP指令元素 3、import属性 import属性用于导入当前JSP页面中要用到的其它Java类。如果要导入多个Java类,用逗号来分隔它们,例如要导入java.util.*和java.io.*,可写为: 也可以分为两行来写,例如: <%@page import="java.util.*,java.io.*"%> <%@page import="java.util.*"%> <%@page import="java.io.*"%>
2.3 JSP指令元素 4、pageEncoding属性 pageEncoding定义当前页面的字符编码标准,默认的字符集为ISO-8859-1,如果页面中有简体中文,则字符集应该定义为GB2312或GBK。
2.3 JSP指令元素 5、contentType属性 contentType属性定义MIME类型(MIME-type)和字符集。 MIME (Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务)使用简单的ASCII文本来传递E-mail信息, E-mail中允许包含有任意类型的附件文件。
2.3 JSP指令元素 给HTTP协议附加了MIME-type信息,用于指明HTTP中所传递信息的数据类型,浏览器接收完数据后,按照数据的类型调用合适的软件来处理这些数据。 例如,如果接收到的信息是一个Excel文件,则IE5浏览器会自动启动Excel软件来处理这些信息,如果Excel软件启动失败或客户端找不到Excel软件时,IE浏览器提示用户将接收到的信息另存为文件。
2.3 JSP指令元素 常见的MIME-type类型 数据类型 MIME-type 文件名后缀 HTML文本 text/html .htm、.html 一般文本 text/plain *.txt RTF文本 application/rtf *.rtf MS-WORD文档 application/msword *.doc MS Excel application/vnd.ms-excel *.xls MS-PowerPoint演示文稿 application/vnd.ms-powerpoint *.ppt Adobe PDF文档 application/pdf *.pdf zip压缩文档 application/zip *.zip JPEG图片文档 image/jpeg *.jpg PNG图片文档 image/png *.png GIF图片 image/gif *.gif AVI video/x-msvideo *.avi MPEG-1视频文档 video/mpeg *.mpg
<%@ page contentType="text/html; charset=gb2312"> 2.3 JSP指令元素 contentType属性的一般用法如下示: <%@ page contentType="text/html; charset=gb2312">
2.3 JSP指令元素 6、session属性 session属性用来指示JSP页面的Servlet实现类中,是否要生成一个session隐含对象。关于session隐含对象,在后续的章节中有详细的介绍。
2.3 JSP指令元素 7、buffer属性 out对象是JSP页面的隐含对象之一,用于向客户端返回信息。buffer属性为out对象定义输出流缓冲区,则out.write()输出的信息会暂时存储在缓冲区中,缓冲区被刷新后,其中的信息会通过PrintWriter对象传给客户端。
<%@page buffer="64kb"%> 2.3 JSP指令元素 输出缓冲区能够改善系统的性能。buffer属性取值为none时,表示不设缓冲区,则out对象的输出信息会直接传递PrintWriter。当buffer取值为nkb时,表示缓冲区的大小为nKB,默认值为8KB。一个应用样例如: <%@page buffer="64kb"%>
<%@page buffer="2kb" autoFlush="false"%> 2.3 JSP指令元素 8、autoFlush属性 定义out对象缓冲区的刷新属性。autoFulsh取值为true时,表示缓冲区满时自动执行刷新操作,取值为false表示缓冲区满时,抛出一个IOException异常。默认值为true。这个属性一般和buffer属性联合使用,如果buffer="none"时,则autoFlush="true"无效。一个应用样例如: <%@page buffer="2kb" autoFlush="false"%>
2.3 JSP指令元素 9、isThreadSafe属性 isThreadSafe="true"时,表示JSP编译后所得的Servlet程序以多线程方式工作,采用Servlet多线程方式工作能提高程序的响应速度,减少系统开销。默认值为true。当isThreadSafe="false"时,表示Servlet程序以单线程方式工作。
2.3 JSP指令元素 10、info属性 定义JSP页面的信息,如版权、开发日期等,可通过javax.sevlet.Servlet.getServletInfo()方法读取这些信息。一个样例如下示: <body> <%@page info="xxx公司信息部研发,2007-1-9"%> <%=getServletInfo()%> </body>
2.3 JSP指令元素 11、isELIgnored 属性 isELIgnored="true"时,表示忽略JSP页面中的EL表达式,isELIgnored="false"时表示JSP页面中的EL表达式要被解释和执行。默认值为true。EL表达式是JSP2.0中新增的技术规范,在后续章节有详细的介绍。
2.3 JSP指令元素 12、errorPage属性 JSP页面如果发生了运行时异常,出错原因、出错的类名、出错的行号、出错的方法名等信息会被封装在异常对象中。errorPage属性用于指明:JSP页面发生运行时异常,则把异常对象传递给指定的出错页处理,errorPage中的值为出错页的URL,可用相对路径或绝对路径表达。此项默认值为空,则运行时异常信息直接显示在浏览器上。应用样例如下示:
2.3 JSP指令元素 当前JSP页面出现运行时异常,服务器会把异常对象传递给nullString.jsp页面处理。 <%@ page errorPage="nullString.jsp" %> 或: <%@ page errorPage="/error/nullString.jsp" %> 当前JSP页面出现运行时异常,服务器会把异常对象传递给nullString.jsp页面处理。 errorPage属性在JSP页面中只需定义一次,如果定义多次,编译时可能会引发“重复标记”的语法错误。
2.3 JSP指令元素 13、isErrorPage属性 isErrorPage="true"时,定义本JSP页面为异常对象处理页,特点是当前JSP页面的Servlet实现类中定义有exception隐含对象,接收异常页传递过来的异常信息。exception对象是Throwable类型的,在后续章节中有介绍。 isErrorPage="false"时,Servlet程序中不定义exception隐含对象。
2.3 JSP指令元素 【例2-3】定义一个exam208.jsp页面,运行时会发生异常,并能自动切换至exam209.jsp页面显示出错的类名、方法名、出错原因等信息。操作步骤如下: (1)启动DW8,新建JSP文件exam208.jsp。在exam208.jsp的代码视图中,将第1行中的<%@page %>指令属性修改如下:
2.3 JSP指令元素 定义若exam208.jsp发生运行时异常,则转至exam209.jsp页面显示异常信息。 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="exam209.jsp" %> 定义若exam208.jsp发生运行时异常,则转至exam209.jsp页面显示异常信息。 在exam208.jsp的<body></body>间输入如下的代码,使exam208.jsp运行时发生对象引用为空的异常:
2.3 JSP指令元素 第1行: <body> 第2行: <% 第3行: String s=null; 保存exam208.jsp 第1行: <body> 第2行: <% 第3行: String s=null; 第4行: int i=s.length(); 第5行: %> 第6行: </body>
2.3 JSP指令元素 (2)在DW8中新建JSP文件exam209.jsp。在exam209.jsp的代码视图中,修改第1行<%@page%>指令,定义当前页为异常对象处理页: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" isErrorPage="true" %>
2.3 JSP指令元素 在exam209.jsp中的<body></body>标记内,添加如下示的代码: 第2行: <% 第3行: StackTraceElement a[]=exception.getStackTrace(); 第4行: out.print("出错原因:"+exception+"<br>"); 第5行: out.print("出错的文件:"+a[0].getFileName()+"<br>"); 第6行: out.print("出错的方法名:"+a[0].getMethodName()+"<br>"); 第7行: out.print("出错的行号:"+a[0].getLineNumber()+"<br>"); 第8行: %> 第9行: </body>
2.3 JSP指令元素 (3)预览。启动Tomcat,预览exam208.jsp页面,结果如图2-3示。
2.3 JSP指令元素 在实验过程中,如果exam208.jsp和exam209.jsp中的代码均没有语法错误,但预览exam208.jsp后,异常信息无法显示,只是在IE5浏览器中出现“该页无法显示”的提示,这是服务器传递给IE5的错误信息不足1KB以及IE5的高级选项中设置了“显示友好HTTP错误信息”参数引起,最简单的解决方法是在exam209.jsp页面的<head></head>标记内,加入<!-- - -> 注释标记,在注释标记中多粘贴一些文字,使服务器的返回信息在1KB以上。
2.3 JSP指令元素 例如在exam209.jsp的<head></head>标记中,加入以下的注释:
2.3 JSP指令元素 2.3.3 taglib指令 1、taglib标记库 taglib是JSP中实现模型与表示分离的重要机制,一个标记的后台有相关的Java程序与之对应,在JSP页面中使用了一个标记,则表示此处调用相应的Java程序,程序运行结果传回至标记处显示。
2.3 JSP指令元素 taglib的优势是明显的:它实现了模型与表示的分离,提高了Java代码的可重用性和可维护性,例如要修改代码时,程序员只需要对Java程序进行重新编译,不需要触及网页表示层。 在JSP中,标记库主要包括标准标记库和扩展标记库。标准标记库就是常用的JSP动作(JSP Action),例如:<jsp:useBean>、<jsp:include>等。扩展标记库包括JSTL和用户自定义的标记等,在后续的章节中有详细的介绍。
<%@taglib uri="taglibURI" prefix="pre"%> 2.3 JSP指令元素 2、taglib指令 在JSP页面中可以直接使用JSP动作,但如果要使用扩展标记库,要求在JSP页面头部用taglib指令作出声明。taglib指令的语法格式为: <%@taglib uri="taglibURI" prefix="pre"%>
2.3 JSP指令元素 其中uri属性值是待用标记库的URI,每个标记库都有一个唯一的URI,这个URI在标记库的配置文件中已作定义,此处直接引用。prefix属性值是待用标记的前缀,在标记库的配置文件中也已经作定义,此处也是直接引用。例如: <%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%! declaration(s) %> 2.4 JSP脚本元素 2.4.1 声明元素 声明元素<%! %>用于声明类成员变量、成员方法或内部类。 1、声明元素的基本语法格式 <%! declaration(s) %>
2.4 JSP脚本元素 2、用声明元素声明类成员变量 例如: <%! int x1=100,a[]=new int[6]; static double x2; String str=null; %>
2.4 JSP脚本元素 3、用声明元素声明成员方法 例如: <%! //定义adder()方法计算1+2+...+n int adder(int n) { int sum=0; for(int i=1;i<=n;i++) sum=sum+i; return sum; } %>
2.4 JSP脚本元素 2.4.2 脚本小程序 脚本小程序就是一段Java代码。在JSP页面中声明脚本小程序的基本语法格式为: 2.4.2 脚本小程序 脚本小程序就是一段Java代码。在JSP页面中声明脚本小程序的基本语法格式为: Tomcat把<% %>标记内的Java代码段放在Servlet实现类 _jspService()方法的try{}内,所以在<%%>内定义的变量属于局部变量,并且作用范围仅限于try{}内。如果有多个<% %>标记,则按出现的先后顺序转译到try{}内。 <% scriptlet %>
2.4 JSP脚本元素 一个样例如下示:
2.4 JSP脚本元素 【例2-4】有一个空白的学生成绩表格如下示,第1行是表格的标题行,第2行起是数据行。第1行标题栏的文字要居中对齐,背景色为浅紫色(#CC66FF)。要求用JSP脚本程序段产生5行数据行,并且奇数号数据行背景色为浅黄色(#FFFF99),偶数号数据行背景色为浅绿色(#33FF66),最终得到一个6行3列的空白学生成绩表。
2.4 JSP脚本元素 操作步骤如下: (1)启动DW8,新建JSP文件exam210.jsp。在设计视图模式下插入一个表格,表格的参数为:2行3列,400像素宽,间距为1像素,其它参数均为0。 (2)在表格第1行的3列中,分别输入题目标题栏中的文字“学号”、“姓名”、“成绩”。拖动鼠标左键,选定第1行的3 列,在属性面板上单击【居中对齐】按钮,在【背景颜色】栏中输入背景色取值“#CC66FF”。
2.4 JSP脚本元素 (3)切换到代码视图,找到第2个<tr>标记,添加如下的代码:
<%= expression %> 2.4 JSP脚本元素 2.4.3 表达式元素 表达式元素的基本功能是运行一条Java表达式,如果表达式有计算结果,则把结果显示在表达式位置上。表达式元素的基本语法格式如下: <%= expression %>
out.write(expression); 2.4 JSP脚本元素 表达式元素的标记经过Tomcat翻译后,在Servlet实现类中一般表示为: 如果表达式复杂,则标记可能被分解成多条连续的out.write()语句。 表达式元素的用法例如: 注意表达式不能带Java语句结束符“;”。 out.write(expression); <%= 1+(5/2) %>
2.5 JSP标准动作 在JSP中,将类似于<xxx:yyy>的JSP标记也称为JSP动作。JSP动作分为标准动作和扩展动作。JSP标准动作是一组形如“<jsp:xxx>”的标记,标记的前缀均为“jsp”。JSP标准动作的标记名是由JSP规范定义,用户不能随意更改。利用JSP动作可以动态地插入文件、将用户重定向到另一个页面、动态生成XML元素等。
2.5 JSP标准动作
2.5 JSP标准动作 2.5.2 <jsp:include>动作
<jsp:include page="urlSpec" flush="true|false"/> 动态包含的基本语法格式如下: 或 <jsp:include page="urlSpec" flush="true|false"/> <jsp:include page="urlSpec" flush="true|false"> { <jsp:param .... /> }* </jsp:include>
2.5 JSP标准动作 在<jsp:include>标记中,page="urlSpec"属性定义了被包含资源的URL,可用相对路径或绝对路径表达。属性flush="true"时,表示在包含目标资源前,先刷新当前页面输出缓冲区中的内容。flush="false"时,包含文件前,不刷新当前页面的输出缓冲区。默认值为false。如果要给被包含的页面传递参数,可以使用<jsp:param>标记。
2.5 JSP标准动作 在被包含的页面中,不能改变response的状态码,也不能对HTTP响应报头进行设置,这些工作应当在调用页面中进行。 例如,有一个被包含的文件my2.jsp为: <!-- 被包含的文件名为 my2.jsp ---> <%@ page contentType="text/html; charset=gb2312" %> 调用包含文件返回的结果: <% out.println("调用成功"); %>
<jsp:include page="my2.jsp" flush="true"/> 要在my1.jsp包含这个JSP文件,则调用代码为: 在Tomcat中,my1.jsp和my2.jsp被编译成两个Servlet程序,其中<jsp:include>动作在Servlet实现类中的代码为: <jsp:include page="my2.jsp" flush="true"/>
2.5 JSP标准动作 JSP容器能自动识别被包含文件中的内容哪些是静态,哪些是动态,对于静态内容不作处理,直接打印输出;对于动态内容,则执行相应的程序代码。 值得注意的是:如果被包含文件中存在动态内容,则文件名的后缀应该为*.jsp,如果取其它的文件名后缀,JSP容器在调用被包含文件时不执行编译操作,动态内容的代码将被忽略。
<jsp:param name="name" value="value" /> <jsp:param>主要是为<jsp:include>、<jsp:forward>和<jsp:params>等动作元素传递参数,如果在其它场合中使用它,JSP容器会报告翻译错误。 <jsp:param>的基本语法为: <jsp:param name="name" value="value" />
2.5 JSP标准动作 2.5.4 <jsp:forward>动作 <jsp:forward>动作使程序从当前页面跳转到另一个目标页面运行,目标页面可以是静态资源(如*.htm),也可以是一个JSP页面(*.jsp),还可以是一个Servlet、CGI程序等。<jsp:forward>会导致当前JSP页面运行中断,断点后的代码将无法被继续执行。
<jsp:forward page= "relativeURLspec "/> 或 <jsp:forward page= "relativeURLspec "/> <jsp:forward page= "urlSpec "> { <jsp:param .... /> }* </jsp:forward>
2.5 JSP标准动作 2.5.5 <jsp:plugin>动作 <jsp:plugin>主要用来在客户端浏览器中加载运行一个Applet或JavaBean,被加载的Applet或JavaBean可以是单个类文件*.class,也可以是一个*.jar包。在JSP页面中使用<jsp:plugin>动作,服务器将把被加载的文件传送到客户端,由客户端的JVM运行Applet或JavaBean。
2.5 JSP标准动作 <jsp:plugin>的基本语法格式为: <jsp:plugin type="bean|applet" code="objectCode" codebase="objectCodebase" { align="alignment" } { archive="archiveList" } { height="height" } { hspace="hspace" } { jreversion="jreversion" } { name="componentName" }
2.5 JSP标准动作 { vspace="vspace" } { title=”title” } { width="width" } { nspluginurl="url" } { iepluginurl="url" } { mayscript=’true|false’ } > { <jsp:params> { <jsp:param name="paramName" value=”paramValue" /> }+ </jsp:params> } { <jsp:fallback> arbitrary_text </jsp:fallback> } </jsp:plugin>
2.5 JSP标准动作 2.5.6 <jsp:params>和<jsp:fallback> <jsp:params>是<jsp:plugin>的一部分,只能在<jsp:plugin>中使用,在其它场合下使用,JSP容器在翻译时会报错。在<jsp:params>内部书写<jsp:param>。 <jsp:fallback>也是<jsp:plugin>的一部分,只能在<jsp:plugin>中使用,在其它场合下使用,JSP容器在翻译时会报错。<jsp:plugin>用于定义启动Applet/JavaBean失败时,显示的提示信息。
2.5 JSP标准动作 2.5.7 XML与XML文档 1、XML与XML文档 XML (eXtensible Markup Language, 可扩展的标记语言)允许用户自定义一组标记来描述数据,XML的主要目标是提供结构化数据。XML文档由文件头和文件体两大部分构成。文件头负责向XML解释器传递文档信息,主要包括XML声明、注释和文档类型等。文件体是用XML标记描述数据。
<?xml version="1.0" [encoding=""] [standlone=”yes|no”] ?> 2.5 JSP标准动作 文档声明 XML文档的第一行一般是文档声明,它的基本格式如下示: XML声明中有三个属性:version、encoding和standlone。 <?xml version="1.0" [encoding=""] [standlone=”yes|no”] ?>
2.5 JSP标准动作 version属性指明XML文档符合的XML规范版本号,一般取值为“1.0”。 encoding属性是可选的,用于指明XML文档中字符的编码标准,默认值是UTF-8,如果文档使用了简体中文字符,则属性取值为“gb2312”。 standlone属性取值为“yes”时,表示XML文档是自我验证,取值为“no”时,表示使用DTD等进行验证。
2.5 JSP标准动作 XML文件体 XML的文件体是用XML标记来存储数据的地方。文件体采用树形结构来存储数据,并且有一个标记充当根元素。根元素只有一个,根元素中可以嵌套其它标记(子元素)。 例如,一个描述学生信息的XML文档如下示:
2.5 JSP标准动作 <?xml version="1.0" encoding="gb2312" ?> <students> <student recoNO="1"> <id>AB0987</id> <name>张三</name> <phone>4147644</phone> </student> <student recoNO="2"> <id>AC88721</id> <name>李四</name> <phone>5253354</phone> </students>
<name>张三</name> 2.5 JSP标准动作 2、XML文档的使用注意事项 在书写XML文档时,要注意以下事项: 标记要成对出现。也就是说,起始标记和结束标记要配对出现,例如: 其中<name>是起始标记,</name>是结束标记。 <name>张三</name>
<item id="DB554" price="45.2" qty="3" /> 2.5 JSP标准动作 如果标记没有标记体,则称为空标记,空标记可以简写为“<xxx />”形式,例如: 大小写敏感。例如<name>不同于<Name>。 要有一个唯一的根元素。 子元素间允许层次嵌套,但不允许交叉。例如,以下的<name>和<phone>子元素出现了交叉现象: <item id="DB554" price="45.2" qty="3" />
2.5 JSP标准动作 <student> <id>AB0987</id> <name> 张三 <phone> </name> 4147644 </phone> </student>
2.5 JSP标准动作 应该按层次嵌套格式修改为: <student> <id>AB0987</id> <name>张三</name> <phone>4147644</phone> </student>