1. JSP的3个编译指令
JSP的编译指令是通知JSP引擎的消息,它不直接生成输出。编译指令都有默认值,因此无须为每个指令设置值。
常见的编译指令有:
- page:该指令是针对当前页面的指令。
- include:该指令用于指定包含另一个页面。
- taglib:用于定义和访问自定义标签。
使用编译指令的语法如下:
<%@ 编译指令名 属性名="属性值"...%>
1.1 page指令
page指令常位于JSP页面的顶端,一个JSP页面可以使用多条page指令。page指令的语法如下:
<%@ page
[language="Java"]
[extends="package.class"]
[import="package.class|package.*|..."]
[session="true|false"]
[buffer="none|8KB|size Kb"]
[autoFlush="true|false"]
[info="text"]
[errorPage="relativeURL"]
[contentType="mineType;[charset=characterSet]"|"text/html;charSet=ISO-8859-1"]
[pageEncoding="ISO-8859-1"]
[isErrorPage="true|false"]
%>
这些属性的意义分别如下:
- language:声明当前JSP页面使用的脚本语言的种类,默认是Java.
- extends:指定JSP页面编译产生的Java类所继承的父类,或所实现的接口。
- improt:用来导入包,默认导入的包有 —– java.lang.*、javax.servlet.jsp.*、javax.servlet.http.*.
- session:设定这个JSP页面是否需要HTTP Session。
- buffer:指定输出缓冲区的大小。输出缓冲区的JSP内部对象:out用于缓存JSP页面对客户端浏览器的输出,默认值是8KB,可以设置为none,也可设置为其他值,单位是KB。
- autoFlush:当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。设置为true时为正常输出;如果设置为false,则会在buffer溢出时产生一个异常。
- info:设置该JSP程序的信息,也可看作是说明,可通过Srevlet.getServletInfo()方法获得该值。
- errorPage:指定错误处理页面。如果本页面产生了异常或错误,而该JSP页面没有对应的处理代码,则会自动调用该属性所指定的JSP页面。
- isErrorPage:设置该JSP页面是否是错误处理页面。如果是错误处理页面,则通常不再需要指定errorPage。
- contentType:用于设定生成网页的文本格式和编码字符集,即MIME类型和页面的字符集类型,默认的MIME类型是text/html;默认的字符集类型是ISO-8859-1.
- pageEncoding:指定生成网页的编码字符集。
例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" info="this is a JSP" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=getServletInfo() %>
</body>
</html>
1.2 Include指令
使用include指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句。这是个静态include指令,它会将目标页面中的其他编译指令也包含进来,但是动态include则不会。
include既可以包含静态文本,也可以包含动态JSP页面,被包含页面会被加入到本页面,被包含页面可以不是一个完整的页面。include编译指令语法:
<%@include file="relativeURLSpec"%>
如果被嵌入的文件需要经常改变,建议使用操作指令,因为它是动态的include语句。
静态include:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@include file="page.jsp" %>
</body>
</html>
静态包含会将被包含页面的编译指令也包含进来,如果两个也面的编译指令冲突,则会出错。
1.3 taglib指令
该指令将在自定义标签处详细讲解