JSP指令
指令是JSP语法元素的第一种类型。它们指示JSP转换器如何翻译JSP页面为Servlet。JSP定义了多个指令,但只有page和include最重要。而taglib、tag、attribute以及variable暂时不讨论。
一.page指令
可以使用Page指令来控制JSP转换器转换当前JSP页面的某些方面。例如,可以告诉JSP用于转换隐式对象out的缓冲器的大小、内容类型,以及需要导入的Java类型,等。
page指令的语法如下:
<%@ page attribute1="value1" attribute2="value2" ...%>
attribute1、attribute2等是page指令的属性。如下是page指令属性的列表:
1.import:定义一个或多个本页面中将被导入和使用的Java类型。例如:import="java.util.List"将导入List接口。可以使用通配符“*”来引入整个包,类似import=“java.util.*”。可以通过在两个类型间加入“,”分隔符来导入多个类型。如:import=“java.util.ArrayList、java.io.PrintWriter”。此外,JSP默认导入如下包:java.lang、javax.servlet、javax.servlet.http、javax.servlet.jsp。
2.session:值为True,本页面加入会话管理;值为false则相反。默认值为True,访问该页面时,若当前不存在javax.servlet.http.HttpSession实例,则会创建一个。
3.buffer:以KB为单位,定义隐式对象out的缓冲大小。必须以KB后缀结尾。默认大小为8KB或更大(取决于JSP容器)。该值可以为none,这意味着没有缓冲,所有的、数据将直接写入PrintWriter。
4.autoFlush:默认为True。若值为True,则当输出缓冲满时会自动写入输出流。而值为False,则仅当调用隐式对象flush方法时,才会写入输出流。因此,若缓冲区溢出,则会抛出异常。
5.isThreadSafe:定义该页面的线程安全级别。不推荐使用JSP参数,因为使用该参数后,会生成一些Servlet容器已经过期的代码。
6.info:返回调用容器生成的Servlet类的getServletInfo方法的结果。
7.errorPage:定义出错时用来处理错误的页面。
8.isErrorPage:标识本页是一个错误处理页面。
9.contentType:定义本页面隐式对象response的内容类型,默认是text/html。
10.pageEncoding:定义本页面的字符编码,默认为ISO-8859-1。(需要改为UTF-8)
11.isELIgnored:配置知否忽略EL表达式。
12.language:定义本页面的脚本类型,默认为JAVA。
13.extends:定义JSP实现类要继承的父类。这个属性的使用场景罕见。
14.deferredSyntaxAllowedAsLiteral:定义是否解析字符串中出现的“#{”符号,默认为false。
15.trimDirectiveWhitespaces:定义是否不输出多余的空格/空行,默认为False。
例:
<%@page import="java.util.Date,java,util.ArrayList" %> <%@page import="java.text.DateFormat" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%>
二.include指令
可以使用include指令将其他文件中的内容包含到当前JSP页面中。一个jsp页面可以有多个include指令。若存在一个内容会在多个不同的页面中使用或一个页面不同位置使用的场景,则该内容模块化到一个include文件非常有用。
include指令的语法如下:
<%@ include file="url"%>
url为包含文件的相对路径,若URL以一个斜杠(/)开始,则该URL为文件在服务器上的绝对路径,否则为当前JSP页面的相对路径。
例:
a.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'include1.jsp' starting page</title> </head> <body> aaaaaaa <%--静态包含 --%> <%-- @ include file="/b.jsp" --%> <%--动态包含 --%> <jsp:include page="/b.jsp"></jsp:include> </body> </html>
b.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'b.jsp' starting page</title> </head> <body> bbbbbbbbbbb </body> </html>
注意:a.jsp和b.jsp必须位于相同的目录下。