版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章JSP编译指令IBMLearning&Development2023/2/3课程目标JSP编译指令JSP页面的表达式JSP页面的注释JSP页面的声明Scriptlets2023/2/32JavaWeb开发教程2.1指令元素2.1.1什么是JSP编译指令 编译指令用于从JSP发送信息到容器上,用于设置全局变量、声明类以及要实现的方法和输出内容的类型等。它们并不向客户端产生任何输出,所有的指令都只在整个JSP页面内有效。指令元素为编译阶段提供了全局信息。 指令元素的一般格式为:
<%@指令属性=“值"%> 另外,也可以把同一指令的多个属性结合起来,例如: <%@指令属性1="value_1", 属性2="value_2", ……, 属性n="value_n"%>2023/2/33JavaWeb开发教程2.1.2page指令page指令用于定义JSP页面中的全局属性。page指令定义了许多影响页面效果的重要属性。一个JSP页面可以包含多个page指令,在编译过程中,所有的page指令都被抽出来同时应用到一个页面中。除了import外,其他page指令定义的属性只能出现一次。page指令有下列属性:LanguageImportcontentTypeisThreaSafeSessionBuffer……2023/2/34JavaWeb开发教程page指令的属性:autoFlush属性extends属性info属性errorPage属性isErrorPage属性pageEncoding属性2023/2/35JavaWeb开发教程page指令的属性:import<%@pagelanguage="java"%>……<%Datedt=newDate();//错误:缺少包引用
%>应为:<%@pagelanguage="java"import="java.util.*"%>2023/2/36JavaWeb开发教程page指令的属性:errorPage1:页面:a.jsp——设置errorPage<%@pageerrorPage="error.jsp"%><%inta=20/0;%>2:error.jsp——设置isErrorPage=“true”<%@pagecontentType="text/html;charset=GB2312%><%@pageisErrorPage="true"%><%=exception.getMessage()%><br><%=exception.toString()%><br><%if(exception.getClass().getName().equals("java.lang.ArithmeticException")){ out.println("发生了算术运算错误");}%>2023/2/37JavaWeb开发教程page指令的属性:pageEncoding设置页面字符编码:pageEncoding<%@pagelanguage=……pageEncoding="ISO-8859-1">默认设置为:ISO-8859-1设置页面显示汉字:GBK或UTF-82023/2/38JavaWeb开发教程2.1.3include指令include指令通知容器包含当前JSP页面中内嵌在指定位置上的资源内容。被包含的内容可以被JSP解析,这种解析发生在编译期间。 include指令格式:
<%@includefile="fileName"%>其中file属性指定要包含的文件名。需要注意的是,一经编译,内容不可改变,如果要改变fileName的内容,必须重新编译JSP文件,但是它的执行效率很高。2023/2/39JavaWeb开发教程当使用include指令时,这个包含过程是一个静态的过程。被包含的文件可以是JSP文件、HTML文件、文本文件、inc文件等。静态包含就是指这个被包含的文件将会被插入到JSP文件中,如果被包含的文件含有可执行的代码,那么这个包含的文件中的代码就会得到执行。使用include指令,可以对网页进行布局,比如在一个主页面中可以包含多个小页面。被包含的小页面的位置就是在主页面中include语句出现的位置。
2023/2/310JavaWeb开发教程模板页<%@pagelanguage="java"import="java.util.*"pageEncoding="ISO-8859-1"%>……<body>ThisismyJSPpage.<br>
<%@includefile="b.jsp"%></body></html>被包含页<%@pagelanguage="java"import="java.util.*"pageEncoding="ISO-8859-1"%><%out.write("<tableborder='1'width='200'><tr>");for(inti=0;i<10;i++){out.write("<td>"+i+"</td>");}out.write("</tr></table>");%>只有代码,没HTMLinclude将模板页与被包含页编译在一起,那么两者的java代码段,将被编译在一个方法中,所有两个页面不能出现同名的局部变量。2023/2/311JavaWeb开发教程2.1.4taglib指令
taglib指令允许页面使用者自定义标签。首先用户要开发标签库,为标签库编写“.tld”配置文件,然后JSP页面使用自定义标签。这样,容器使用这个标签库确定在遇到自定义标签时要怎么做。使用标签,增加了代码的重用程度,比如可以把一些需要叠代显示的内容做成一个标签,在每次需要叠代显示时,就使用这个标签。使用标签也使页面易于维护。 在JSP规范中,标签库得到了不断的加强,最新的JSP2.0规范中增加了JSTL标签库。JSP标签库在页面里的定义如下: <%@tagliburi="URIToTagLibrary"prefix="tagPrefix"%>例如: <%@tagliburi="/tags"prefix="public"%> <public:loop> …… …… </public:loop> 其中<%@taglib%>指令声明此JSP文件使用了自定义的标签,uri用来表示标签描述符,public定义了在页面里要引用这个标签时的前缀。2023/2/312JavaWeb开发教程一个使用标签的例题页面程序如下:<%@pagecontentType="text/html;charset=gb2312"%><%@tagliburi="/jsp/jstl/core"prefix="c"%><html><head><title>taglibtest</title></head><body> <h3><c:outvalue="我是用标签输出来的,嘿嘿…"/></h3></body></html>关于标签的使用,本书会在第7章详细介绍2023/2/313JavaWeb开发教程2.2脚本元素JSP脚本元素是JSP代码中使用的最频繁的元素,特别是Scriptlets。脚本元素把JSP中所有的一切都集中在一起,它通常是用Java编写的脚本代码。脚本元素有三种格式:表达式<%=expression%>声明<%!declaration;[declaration;]+...%>Scriptlets<%代码段%>2023/2/314JavaWeb开发教程2.2.1表达式表达式元素表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后插入到这个表达式所在JSP文件中的位置。因为表达式的值已经被转化为字符串,所以能在一行文本中插入这个表达式。 其语法为:
<%=expression%>注意:没有结束的分号例如:
<%@pagecontentType="text/html;charset=GBK"%> <%=newjava.util.Date().toLocaleString()%> <%="银行卡密码:"%> <%=123456%>2023/2/315JavaWeb开发教程在JSP中使用表达式要注意以下几点不能用一个分号“;”作为表达式的结束符。但是同样的表达式在“<%%>”中就需要以分号来结尾了。有时表达式也能作为其它JSP元素的属性值。一个表达式能够变得很复杂,它可能由一个或多个表达式组成,表达式的顺序是从左至右的。2023/2/316JavaWeb开发教程2.2.2声明JSP页面将被编译为一个Servlet类声明用来在JSP程序中声明变量和方法,可以一次性声明多个变量和方法,声明语句要使用“;”结尾,当然声明要符合Java编程规范。其语法为:
<%!declaration;[declaration;]+...%> 例如: <%!inti=0;%> <%!inta,b,c;%> <%!Circlea=newCircle(2.0);%>jsp页面编译后生成为一个类,声明的变量成为类的成员;未声明的是方法中的变量;2023/2/317JavaWeb开发教程当声明方法或变量时,需要注意以下规则变量声明必须以“;”结尾(Scriptlets有同样的规则,但是表达式就不同了)。可以直接使用在<%@page%>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。如果想每个页面都用到一些同样的声明,最好把它们写成一个单独的文件,然后用<%@include%>或<jsp:include>指令把这个文件包含进来。2023/2/318JavaWeb开发教程2.2.3ScriptletsScriptlets俗称小程序段。我们已经学会了如何在JSP网页中在“<%=”和“%>”之间嵌入Java表达式。但是将Java表达式放置到HTML文本文件中进行大量的编程工作是很困难的。JSP允许将编写的Java代码块嵌入到JSP中。具体做法是:将Java代码段置于“<%”和“%>”之间。其用法与表达式类似,只不过在标记开始处没有等号,在标记结尾之前要有分号。代码块就是我们熟知的Scriptlets。如果单单是Scriptlets,对于HTML文本起不了任何作用。而每次Scriptlets包含被执行的Java代码的时候,JSP就会被调用。2023/2/319JavaWeb开发教程下面我们通过一段代码来了解Scriptlets
<%@pagecontentType="text/html;charset=GBK"import="java.util.*"%><html><body> <%Datedate=newDate();%> 当前时间是:<%System.out.println(date.toLocaleString());%></body></html>从运行效果中,页面并没有显示当前时间,其实采用“System.out.println”输出信息时,该信息是输出到了服务器的日志文件中去了。由此可以看出,如果仅仅是包含Scriptlets是不会产生HTML代码的。如果想通过Scriptlets产生HTML代码,就得使用JSP页面中的内置对象out。下面的例子向我们展示了Scriptlets是怎样产生HTML文本输出。2023/2/320JavaWeb开发教程<%@pagecontentType="text/html;charset=GBK"import="java.util.*"%><html><body> <%Datedate=newDate();%> 当前时间是:<%out.println(date.toLocaleString());%></body></html>2023/2/321JavaWeb开发教程 在上一章中我们已经在一个Scriptlets中使用了out对象产生HTML代码输出。对于更复杂的HTML代码,如果我们还是使用out对象,那就会失去JSP编程的优势。其实我们可以很简单地实现Scriptlets和HTML的结合。 下面我们举一个简单的例子,产生一个表格,使这个表格包含从1到n的数字,虽然这个例子不是很有用,但是可以从中学到一些技巧。2023/2/322JavaWeb开发教程一个表格的例子<%@pagecontentType="text/html;charset=GBK"%><tableborder="2"><% intn=5;
for(inti=0;i<n;i++){ %> <tr> <tdwidth="100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 燃气使用安全课件
- 《急性毒性实验》课件
- 2024年度工程合伙合作风险评估与保险购买协议3篇
- 财务情况评估报告范文
- 《深层搅拌桩施工》课件
- 冰箱厂工作述职报告范文
- 行政岗位年终总结(5篇)
- 《输血反应及处理》课件
- 英语教学教学课件
- 关于舞蹈老师的聘用合同
- 2024年辅警招聘考试试题库含完整答案(各地真题)
- 设计提案范例
- 小讲课风湿科常用药物
- 中医食疗药膳学智慧树知到期末考试答案章节答案2024年四川护理职业学院
- 沂蒙红色文化与沂蒙精神智慧树知到期末考试答案2024年
- 国开一体化平台01588《西方行政学说》章节自测(1-23)试题及答案
- 2024氢气长管拖车安全使用技术规范
- 《新疆维吾尔自治区建筑工程施工评标规则》(新建建20107号)
- 纯电动汽车结构与检修
- 保护绿水青山班会课件
- 主副食品质量验收参考标准
评论
0/150
提交评论