1 / 79

JSP 元素

JSP 元素. 本章主要内容. JSP 指令元素 JSP 脚本元素 JSP 动作元素. 2.1 JSP 注释元素. JSP 页面中的注释用于说明程序段的主要作用或程序员的意图,方便日后维护或备忘。 JSP 页面中的注释主要两种: JSP 注释和 HTML 注释。. 2.1 JSP 注释元素. 2.1.1 JSP 注释 JSP 注释也叫隐藏注释或服务器端注释,只有打开 JSP 页面后才能看到它。 JSP 注释中的内容被编译器忽略,不会出现在 Servlet 程序中,也不会返回给客户端浏览器。其基本语法为: <%-- 注释的内容 --%>.

brook
Download Presentation

JSP 元素

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JSP元素

  2. 本章主要内容 • JSP指令元素 • JSP脚本元素 • JSP动作元素

  3. 2.1 JSP注释元素 • JSP页面中的注释用于说明程序段的主要作用或程序员的意图,方便日后维护或备忘。JSP页面中的注释主要两种:JSP注释和HTML注释。

  4. 2.1 JSP注释元素 • 2.1.1 JSP注释 • JSP注释也叫隐藏注释或服务器端注释,只有打开JSP页面后才能看到它。JSP注释中的内容被编译器忽略,不会出现在Servlet程序中,也不会返回给客户端浏览器。其基本语法为: <%-- 注释的内容 --%>

  5. 2.2 JSP注释元素 • 例如: JSP注释在JSP页面上的位置没有统一规定,但习惯上写在程序段前,需要注意:JSP注释属于标记级的注释,不要把它嵌套在类似于“<% %>”的标记内。

  6. 2.2 JSP注释元素 • 2.2.2 HTML注释 • HTML注释也叫输出注释,属于HTML标记范畴,也是标记级的注释。其基本语法为: <!-- 注释内容 [<%%>|<%=%>] -->

  7. 2.2 JSP注释元素 • HTML注释被JSP编译器视为HTML标记,直接用out.write()方法输出。标记中的注释内容会返回到客户端浏览器,但注释信息不会在浏览器中显示。 • 在HTML注释中,可以使用<%%>或<%=%>等标记输出一些动态的注释信息。

  8. 2.3 JSP指令元素 • JSP指令元素(Directive Elements)主要供JSP容器使用,为JSP容器提供相关的页面属性信息,用于指示JSP容器如何正确地翻译代码,或者执行特定的操作。 • JSP指令元素主要包括三个:include、page和taglib,它们的基本语法格式形如: <%@ 指令元素 属性="值" %>

  9. 2.3 JSP指令元素 • 2.3.1 include指令元素 1、include指令的基本语法 • include指令元素称为文件包含,是在JSP容器把JSP网页翻译成Servlet程序时,将指定文本文件的内容嵌入Servlet程序中,替换include指令。其基本语法为 <%@ include file="relativeURLspec" %>

  10. 2.3 JSP指令元素 • file属性指出被包含资源的URL,可使用相对路径或绝对路径。绝对路径以Web应用的上下文路径名“/xxxx”开头,如:

  11. 2.3 JSP指令元素 2、include指令的使用注意事项 • include指令适合于包含静态内容。 • include指令是代码静态绑定,被include指令包含的内容在编译时会被静态地嵌入Servlet程序中 。 • include指令影响JSP页面的可读性。

  12. <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.util.*“ %> <html> <head> <title>ex4-8.jsp</title> </head> <body><center><br><br><br><br> <h1> 现在是北京时间: <%@include file="nowtime.jsp" %> </h1> </body> </html> <%@ page import="java.util.*“ %> <%@ page import="java.util.*" %> <%=new java.util.Date()%> <%= (new java.util.Date() ).toLocaleString() %> 其中nowtime.jsp的源码为 12

  13. 2.3 JSP指令元素 • 2.3.2 page指令元素 • page指令用于设置当前JSP页面的属性。 • page指令中的属性大多数只需要在JSP页面中定义一次 。 • page指令中允许重复使用多次的属性有pageEncoding和import属性等。习惯上,把page指令写在JSP页面的头部。

  14. 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" %>

  15. 2.3 JSP指令元素 1、language属性 • 这个属性定义JSP页面脚本代码所采用的编程语言,默认值为java。 2、extends属性 • JSP页面最终会被JSP容器编译成一个Servlet程序,extends属性用于定义这个Servlet程序的父类。

  16. 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.*"%>

  17. 2.3 JSP指令元素 4、pageEncoding属性 • pageEncoding定义当前页面的字符编码标准,默认的字符集为ISO-8859-1,如果页面中有简体中文,则字符集应该定义为GB2312或GBK。

  18. 2.3 JSP指令元素 5、contentType属性 • contentType属性定义MIME类型(MIME-type)和字符集。 • MIME (Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务)使用简单的ASCII文本来传递E-mail信息, E-mail中允许包含有任意类型的附件文件。

  19. 2.3 JSP指令元素 • 给HTTP协议附加了MIME-type信息,用于指明HTTP中所传递信息的数据类型,浏览器接收完数据后,按照数据的类型调用合适的软件来处理这些数据。 • 例如,如果接收到的信息是一个Excel文件,则IE5浏览器会自动启动Excel软件来处理这些信息,如果Excel软件启动失败或客户端找不到Excel软件时,IE浏览器提示用户将接收到的信息另存为文件。

  20. 2.3 JSP指令元素 常见的MIME-type类型

  21. 2.3 JSP指令元素 • contentType属性的一般用法如下示: <%@ page contentType="text/html; charset=gb2312">

  22. 2.3 JSP指令元素 6、session属性 • session属性用来指示JSP页面的Servlet实现类中,是否要生成一个session隐含对象。关于session隐含对象,在后续的章节中有详细的介绍。

  23. 2.3 JSP指令元素 7、buffer属性 • out对象是JSP页面的隐含对象之一,用于向客户端返回信息。buffer属性为out对象定义输出流缓冲区,则out.write()输出的信息会暂时存储在缓冲区中,缓冲区被刷新后,其中的信息会通过PrintWriter对象传给客户端。

  24. 2.3 JSP指令元素 • 输出缓冲区能够改善系统的性能。buffer属性取值为none时,表示不设缓冲区,则out对象的输出信息会直接传递PrintWriter。当buffer取值为nkb时,表示缓冲区的大小为nKB,默认值为8KB。一个应用样例如: <%@page buffer="64kb"%>

  25. 2.3 JSP指令元素 8、autoFlush属性 • 定义out对象缓冲区的刷新属性。autoFulsh取值为true时,表示缓冲区满时自动执行刷新操作,取值为false表示缓冲区满时,抛出一个IOException异常。默认值为true。这个属性一般和buffer属性联合使用,如果buffer="none"时,则autoFlush="true"无效。一个应用样例如: <%@page buffer="2kb" autoFlush="false"%>

  26. 2.3 JSP指令元素 9、isThreadSafe属性 • isThreadSafe="true"时,表示JSP编译后所得的Servlet程序以多线程方式工作,采用Servlet多线程方式工作能提高程序的响应速度,减少系统开销。默认值为true。当isThreadSafe="false"时,表示Servlet程序以单线程方式工作。

  27. 2.3 JSP指令元素 10、info属性 • 定义JSP页面的信息,如版权、开发日期等,可通过javax.sevlet.Servlet.getServletInfo()方法读取这些信息。一个样例如下示: <body> <%@page info="xxx公司信息部研发,2007-1-9"%> <%=getServletInfo()%> </body>

  28. 2.3 JSP指令元素 11、isELIgnored 属性 • isELIgnored="true"时,表示忽略JSP页面中的EL表达式,isELIgnored="false"时表示JSP页面中的EL表达式要被解释和执行。默认值为true。EL表达式是JSP2.0中新增的技术规范,在后续章节有详细的介绍。

  29. 2.3 JSP指令元素 12、errorPage属性 • JSP页面如果发生了运行时异常,出错原因、出错的类名、出错的行号、出错的方法名等信息会被封装在异常对象中。errorPage属性用于指明:JSP页面发生运行时异常,则把异常对象传递给指定的出错页处理,errorPage中的值为出错页的URL,可用相对路径或绝对路径表达。此项默认值为空,则运行时异常信息直接显示在浏览器上。应用样例如下示:

  30. 2.3 JSP指令元素 <%@ page errorPage="nullString.jsp" %> 或: <%@ page errorPage="/error/nullString.jsp" %> • 当前JSP页面出现运行时异常,服务器会把异常对象传递给nullString.jsp页面处理。 • errorPage属性在JSP页面中只需定义一次,如果定义多次,编译时可能会引发“重复标记”的语法错误。

  31. 2.3 JSP指令元素 13、isErrorPage属性 • isErrorPage="true"时,定义本JSP页面为异常对象处理页,特点是当前JSP页面的Servlet实现类中定义有exception隐含对象,接收异常页传递过来的异常信息。exception对象是Throwable类型的,在后续章节中有介绍。 • isErrorPage="false"时,Servlet程序中不定义exception隐含对象。

  32. 2.3 JSP指令元素 • 【例2-3】定义一个exam208.jsp页面,运行时会发生异常,并能自动切换至exam209.jsp页面显示出错的类名、方法名、出错原因等信息。操作步骤如下: (1)启动DW8,新建JSP文件exam208.jsp。在exam208.jsp的代码视图中,将第1行中的<%@page %>指令属性修改如下:

  33. 2.3 JSP指令元素 • 定义若exam208.jsp发生运行时异常,则转至exam209.jsp页面显示异常信息。 • 在exam208.jsp的<body></body>间输入如下的代码,使exam208.jsp运行时发生对象引用为空的异常: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="exam209.jsp" %>

  34. 2.3 JSP指令元素 • 保存exam208.jsp 第1行: <body> 第2行: <% 第3行: String s=null; 第4行: int i=s.length(); 第5行: %> 第6行: </body>

  35. 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" %>

  36. 2.3 JSP指令元素 • 在exam209.jsp中的<body></body>标记内,添加如下示的代码: 第1行: <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>

  37. 2.3 JSP指令元素 • (3)预览。启动Tomcat,预览exam208.jsp页面,结果如图2-3示。

  38. 2.3 JSP指令元素 • 在实验过程中,如果exam208.jsp和exam209.jsp中的代码均没有语法错误,但预览exam208.jsp后,异常信息无法显示,只是在IE5浏览器中出现“该页无法显示”的提示,这是服务器传递给IE5的错误信息不足1KB以及IE5的高级选项中设置了“显示友好HTTP错误信息”参数引起,最简单的解决方法是在exam209.jsp页面的<head></head>标记内,加入<!-- - -> 注释标记,在注释标记中多粘贴一些文字,使服务器的返回信息在1KB以上。

  39. 2.3 JSP指令元素 • 例如在exam209.jsp的<head></head>标记中,加入以下的注释:

  40. 2.3 JSP指令元素 • 2.3.3 taglib指令 1、taglib标记库 • taglib是JSP中实现模型与表示分离的重要机制,一个标记的后台有相关的Java程序与之对应,在JSP页面中使用了一个标记,则表示此处调用相应的Java程序,程序运行结果传回至标记处显示。

  41. 2.3 JSP指令元素 • taglib的优势是明显的:它实现了模型与表示的分离,提高了Java代码的可重用性和可维护性,例如要修改代码时,程序员只需要对Java程序进行重新编译,不需要触及网页表示层。 • 在JSP中,标记库主要包括标准标记库和扩展标记库。标准标记库就是常用的JSP动作(JSP Action),例如:<jsp:useBean>、<jsp:include>等。扩展标记库包括JSTL和用户自定义的标记等,在后续的章节中有详细的介绍。

  42. 2.3 JSP指令元素 2、taglib指令 • 在JSP页面中可以直接使用JSP动作,但如果要使用扩展标记库,要求在JSP页面头部用taglib指令作出声明。taglib指令的语法格式为: <%@taglib uri="taglibURI" prefix="pre"%>

  43. 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"%>

  44. 2.4 JSP脚本元素 • 2.4.1 声明元素 • 声明元素<%! %>用于声明类成员变量、成员方法或内部类。 1、声明元素的基本语法格式 <%! declaration(s) %>

  45. 2.4 JSP脚本元素 2、用声明元素声明类成员变量 • 例如: <%! int x1=100,a[]=new int[6]; static double x2; String str=null; %>

  46. 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; } %>

  47. 2.4 JSP脚本元素 • 2.4.2 脚本小程序 • 脚本小程序就是一段Java代码。在JSP页面中声明脚本小程序的基本语法格式为: • Tomcat把<% %>标记内的Java代码段放在Servlet实现类 _jspService()方法的try{}内,所以在<%%>内定义的变量属于局部变量,并且作用范围仅限于try{}内。如果有多个<% %>标记,则按出现的先后顺序转译到try{}内。 <% scriptlet %>

  48. 2.4 JSP脚本元素 • 一个样例如下示:

  49. 2.4 JSP脚本元素 • 【例2-4】有一个空白的学生成绩表格如下示,第1行是表格的标题行,第2行起是数据行。第1行标题栏的文字要居中对齐,背景色为浅紫色(#CC66FF)。要求用JSP脚本程序段产生5行数据行,并且奇数号数据行背景色为浅黄色(#FFFF99),偶数号数据行背景色为浅绿色(#33FF66),最终得到一个6行3列的空白学生成绩表。

More Related