jsp的编译指令是通知jsp引擎的消息,它不直接生成输出。编译指令都有默认值,因此开发人员无须为每一个指令设置值。
编译指令的格式如下:
page
|
该指令是针对当前页面的指令
|
include
|
用于指定如何包含另一个页面
|
tablib
|
用于定义和访问自定义标签
|
<%@ 编译指令名 属性名="属性值"........ %>
page指令
page指令通常位于jsp页面的顶端,对同一个页面可以有多个page指令。page指令的语法格式如下:
<%@page
[language="java"]
[extends="package.class"]
[import="package.class | package.*},......"]
[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"]
%>
language: 声明当前jsp页面使用的脚本语言的种类, 该属性的值通常是Java
extends:确定jsp程序编译时所产生的Java类,需要继承的父类,或者需要实现的接口的全限定类名
import:用来导入包,下面几个包是自动导入的不需要显示导入{
java.lang.* && javax.servlet.* && javax.servlet.jsp.* && javax.servlet.http.*}
session:设定这个jsp页面是否是要http session
buffer:指定输出缓冲区的大小。输出缓冲区的jsp内部对象:out对象用于缓存jsp页面对客户浏览器的输出,默认值为8kb,可以设置为none,也可以
设置为其他的值,单位为kb
aotuFlush:当输出缓冲区即将溢出时,好似否需要强制输出缓冲区的内容。设置为true时为正常输出,如果设置为false,会在buffer溢出时产生异常
info:设置改jsp程序的信息,也可以看做其说明,可以通过Servlet.getServletInfo()方法获取该值。如果在jsp页面中,可直接调用getServletInfo()方发
获取该值,因为jsp页面的实质就是Servlet。
errorPage:指定错误处理页面。如果本程序产生了异常或者错误,而该jsp页面没有对应的处理代码,则会自动调用该指令所指定的jsp页面。使用jsp页
面时,可以不处理异常,即使是checked异常。
isErrorPage:设置本jsp页面是否为错误处理程序。如果该页面本身已是错误处理页面,则无须使用errorPage属性。
contentType:用于设定生成网页的文件格式和编码方式,即MIME类型和页面字符集类型,默认的MIME类型是text/html;默认的字符集为ISO-8859-1
include指令
include指令可以将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句。
这是个静态的include语句,不会检查所包含jsp页面的变化。
include既可以包含静态的文本,也可以包含动态的jsp页面。静态的编译指令include,是将被包含的页面加入进来,生成一个完整的页面
include编译指令的语法:
<%@include file="relativeURLSpec"%>
如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include语句。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ include file="index.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>脚本测试</title>
</head>
<body>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","chenkeyu");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
%>
<table bgcolor="9999dd" border="1">
<%
while(rs.next())
{
%>
<tr>
<td><%=rs.getString(2) %></td>
<td><%=rs.getString(3) %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
运行结果: