JSP的编译指令是通知JSP引擎(Tomcat、WebLogic)的消息,它不直接生成输出。
编译指令都有其默认值,因此无须为每个指令设置其值。 常见的编译指令有3个:
(1)、page:是针对当前页面的指令;
(2)、include:用于指定包含另一个页面;
(3)、taglib:用于定义和访问自定义标签。
使用编译指定的语法格式如下:
<%@ 编译指令名 属性1="属性值" 属性2="属性值" ...%>
1、page指令:
是针对当前页面的指令,通常位于JSP页面的顶端,一个JSP页面可以使用多page指令。
常用的page指令如下的格式:
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ page import="java.sql.*" %>
常用的page的属性如下:
(1)、contentType:用于设定生成网页的文件格式和编码字符集,即MIME类型和页面字符集类型,默认MIME类型是text/html,默认的字符集类型为:ISO-8859-1;
(2)、language:声明当前JSP页面使用的脚本语言的种类,因为页面是JSP页面,所以该属性的值通常都是java。
(3)、errorPage:指定错误处理页面,如果本页面产生了异常或者错误,而该页面没有对应的处理代码,则会自动调用该属性指定的JSP页面;
(4)、pageEncoding:指定生成网页的编码字符集;
(5)、import:用于导入包。下面几个包是默认自动导入的,不需要显示导入。默认导入的包有:java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*;
2、include指令:
jsp中有两种包含模式,一种是<%@ include file="要包含的页面路径" %>,这种叫静态包含;
另一种是<jsp:include page="要包含的页面路径" /> ,这叫做动态包含。
静态包含会把目标页面的其他编译指令也包含进来,如果两个页面的编译指令发生冲突,那么页面就会出错。但动态包含则不会包含目标页面的其他编译指令。
静态包含是直接把要包含的页面原样嵌入总的页面后再统一编译,而动态包含总的页面和要嵌入的页面是分开编译的。
jsp是建议凡是*.jsp的页面如果要被另一个页面包含,那么应该用<jsp:include ...>动态包含,如果只是html或者是一段文本,那么用动态包含和静态包含都可以。因此原则上我们都倾向于使用<jsp:include>动态包含。