JSP的编译指令是通知JSP引擎的消息。
常见的编译指令有三个:
page:该指令是针对当前页面的指令。
include:用于指定如何包含另一个页面。
tablib:用于定义和访问自定义标签。
编译指令格式如下:
<%@ 编译指令名 属性名=“属性值” ...%>
1.page指令
通常位于JSP页面的顶端,对同一个页面可以有多个page指令。page指令语法格式如下:
<%@page
[language="Java"] //声明JSP页面使用语言的种类
[extends="package.class"] //JSP程序编译时所产生的Java类,需要继承的父类,或者需要实现的接口的全限定类名
[import="package.class | package.*},..."] //用来导入包。默认自动导入的包:java.lang.*; javax.servlet.*; javax.servlet.jsp.*; javax.servlet.http.*
[session="true | false"]
[buffer="none | 8kb | size kb"]
[autoFlush="true | false"]
[isThreadSafe="true | false"]
[info="text"]
[errorPage="relativeURL"] //指定错误处理页面
[contentType="mimeType [ ;charset=characterSet]" | "text/html;charSet=ISO8859-1"]
[isErrorPage="true | false"] //设置本JSP页面为错误处理程序
%>
2.page 指令中errorPage属性和isErrorPage属性示例
JSP不要求强制异常处理。下面是文件1.jsp的代码:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="ErrorPage.jsp"%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<%
int a=1;
int b=0;
int c=a/b; //出错
%>
</BODY>
</HTML>
异常处理文件ErrorPage.jsp的代码:
<%@ page contentType="text/html; charset=gb2312" language="java" isErrorPage="true"%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<%="This is an error page."%>
</BODY>
</HTML>
运行这段代码,如果抛出未处理的异常,系统将自动跳转到errorPage属性指定的页面,即“ErrorPage.jsp”。运行结果截图如下:
如果去掉errorPage属性,系统默认处理,效果如下图所示:
3.include指令
使用include指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句。
include既可以包含静态的文本,也可以包含动态的JSP页面。静态的编译指令include,是将被包含的页面加入进来,生成一个完整的页面。静态的include语句不会检查所包含JSP页面的变化。
include编译指令的语法:
<%@include file="relativeURLSpec"%>
4.静态include指令示例
页面include.jsp的源代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<%@include file="ShowInclude.jsp"%>
</BODY>
</HTML>
页面ShowInclude.jsp的源代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<%="include works"%>
</BODY>
</HTML>
运行页面include.jsp的结果截图如下: