JSP 指令
JSP 指令是 JSP 的引擎。它们不直接产生任何可视的输出,只是指示引擎对剩下的 JSP 页面需要做什么。指令由 <%@ %> 标记。主要的两种指令是 page 和 include。
一、page 指令
<%@ page
[language="java"]
[extends="package.class" ]
[import="{package.class | .*}, ..." ]
[session="true|false" ]
[buffer="none|8kb|sizekb" ]
[autoFlush="true|false" ]
[isThreadSafe="true|false" ]
[info="text" ]
[errorPage="relativeURL" ]
[contentType="mimeType [ ;charset=characterSet ]" |"text/html ; charset=ISO-8859-1"]
[isErrorPage="true|false" ]
%>Code language: HTML, XML (xml)
1. import 引入包
<%@ page import="java.util.*" %>Code language: HTML, XML (xml)
import 属性是这几个属性中唯一一个可以在一个 JSP 中出现多次的属性。引入多个包:
<%@ page import="java.util.*, cn.bamn.*" %>Code language: HTML, XML (xml)
2. contentType 指定内容类型
<%@ page contentType="text/plain" %>Code language: HTML, XML (xml)
它指定输出的 MIME 类型。缺省为 text/html。MIME 类型有:text/plain、text/html(缺省类型)、image/gif、image/jpeg 等。
缺省的字符编码方式:ISO-8859-1。
当然也可以在代码段中设置:
<% response.setContentType("text/plain"); %>Code language: HTML, XML (xml)
<%@ page contentType="MIME-TYPE" %>
<%@ page contentType="MIME-Type; charset=Character-Set" %>Code language: HTML, XML (xml)
3. 是否线程安全 isThreadSafe
isThreadSafe = "true|false"。如果值为 true(缺省)表示:将进行普通的 Servlet 处理,多个请求将被一个 Servlet 实例并行处理,在这种情况下,编程人员需要同步访问多个实例变量。值为 false 时表示:Servlet 将实现单线程模式(SingleThreadModel),不管请求是顺序提交还是并发出现,都将提供不同的分离的 Servlet 实例。
4. session 配置
session = "true|false"。如果值为 true(缺省)表示:预定义变量 session(继承 HttpSession)应该绑定到一个已存在的 session,否则就应该创建一个并将之绑定。值为 false 时表示:将不使用 session 变量。
<% if(session.getValue("name")==null)
session.putValue("name","123456");
else
session.putValue("name",session.getValue("name")+"1");
%>
<% out.println(session.getValue("name"));%>Code language: JavaScript (javascript)
若 session="false",则会出现编译错误。
<%@ page session="true" %> <%--Default--%>
<%@ page session="false" %>Code language: HTML, XML (xml)
5. 设置缓存
buffer = "sizekb | none"。为 JspWriter 输出确定缓冲的大小。缺省由服务器而定,但至少要有 8kb。
<%@ page buffer="8kb" %>
<%@ page buffer="none" %>Code language: HTML, XML (xml)
6. 自动清空缓冲
autoFlush = "true|false"。如果值为 true(缺省)表示:当缓冲满时将自动清空;值为 false 时表示:当缓冲满时抛出一个异常,这很少使用。当 buffer="none" 时若用 false 值是不合法的。
<%@ page autoFlush="true" %> <%--Default--%>
<%@ page autoFlush="false" %>Code language: HTML, XML (xml)
7. 设置 servlet 父类
extends = "package.class"。这将为 Servlet 产生一个超类。请特别谨慎地使用这一功能,因为服务器也许已经定义了一个。
8. info
info = "message"。定义一个可以通过调用 getServletInfo 方法得到的字符串。这个没怎么使用。
<%@ page info="Some Message" %>Code language: HTML, XML (xml)
9. errorPage
errorPage = "URL"。指定一个 JSP 页面来处理任何一个可抛出的但当前页面并未处理的意外错误。如:
test.jsp:<%@ page errorPage="error.jsp" %>
10. isErrorPage
isErrorPage = "true | false"。指定当前页面是否可以处理来自另一个页面的错误,缺省为 false。
<%@ page isErrorPage="true" %>
<%@ page isErrorPage="false" %> <%--Default--%>Code language: HTML, XML (xml)
11. language
language = "java"。指出以下将使用的语言。不过,不必为这一属性费心,因为 java 既是缺省又是唯一合法的选择。
<%@ page language="java" %>Code language: HTML, XML (xml)