<%=expression%>
<%="Hello World!" %>
JSP脚本程序
<% Scriptlet %>
<% if (I>5){%>
<p >不可能!</p>
<%}else{%>
<p>正常值范围!</p>
<%}%>
JSP隐藏注释
<%--comment--%>
<%--此注释不会在原代码中不显示--%>
定义变量或方法
<%!JavaCode%>
<%! Date dates = new Date();
int loopVar = 1;
%>
<%! private static int accessCount=0;%>
<% ++loopVar ;%>"
JSP指令标志(directive)
“<%@”和“%>”之间为JSP指令,常用下列三种指令:
<%@ page import = "java.util.*" language = "java " session = "true" %>
<%@include file="包含文件的URL"%>
<%@taglib uri="URIToTagLibrary" prefix="tagPrefix"%>
1.page(页面)指令
page(页面)指令语法格式如下:
<%page
[language="java"]
[extends="package.class"]
[import="{package.class │package.*}, ┄"]
[session="true │false"]
[buffer="none│8kb│sizekb"]
[autdFlush="true│false"]
[isThreadSafe="true │false"]
[info="text"]
[errorPage="relativeURL"]
[contentType="mimeType[;charset=characterSet]"│"text/html;charset=ISO-8859-1']
[isErrouPage="true│false"]
%>
%@page%指令定义对整个JSP页面有效,同样包括静态的包含文件。但是<%@page%>指令不能作用于动态的包含文件,比如<jsp:include>。在一个页面中的可使用多个 <%@page% >指令,其中的属性只能设置一次,但import属性除外。因为 import属性和 Java 中的import语句差不多,可以多次设置。
无论%@page%指令放在JSP文件的哪个地方,它的作用范围都是整个页面,不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的头部。
JSP页面指令是一种功能比较复杂的指令,这主要与它所要支持的繁多的属性有关。具体如下:
language ="java"
该属性用来指定编写JSP 的程序语言的类型,其缺省值为“java”。由于目前惟一的可以使用的就是说Java语言,故此属性往往不用设置。
extends="package.class"
该属性用来指定JSP编译时需要继承的Java父类,它会限制JSP的编译能力,应慎使用之。
import="{package.class│package.* },┄"
该属性用来定义输入引用的Java包(package)或(class) 。这是惟一可以同一个JSP页面中重复出现的属性设置。
下面的包在JSP编译时已经默认输入了,所以就不需要再说明。
java.lang.*
javax.servlert.*
javax.servlet.jsp.*
javax.servlet.http.*
session="true│false"
该属性取值为"true "(缺省值)表明预定义的 session变量总能被访问。取值为 false则说明 session不能被使用,否则就会导致 JSP编译错误。
buffer="none│8kb│sizekb"
该属性规定了“JspWriter”类型的预定义对象out的缓冲区大小, "JspWriter"对象用于处理执行后的JSP对客户浏览器的输出。缺省值因其服务器而定。但总不小于 8kb。
autoFlush="true│false"
该属性规定了缓冲区的设置,如果缓冲区溢出,则需要强制输出;如果其值被定义为true (默认值),则输出正常;若被设置为false,则缓冲区溢出,就会导致一个意外错误的发生。需要值得注意的是如果把buffer设置为none,那么就不能把autoFlush设置为false。
isThreadSafe="true│fals"
该属性取值为true, JSP 能够同时处理多个用户的请求,如果设置为false, JSP只能一次处理一个请求。
info="text"
该属性用于定义可从Servlet.getServletInfo方法取回字符串。
errorPage="relativeURL"
该属性定义了当前未捕获的异常事件的JSP页面。
isErrorPage="true│false"
该属性用来指定当前页是否可以作为其他JSP页面的异常处理页面,如果被设置为 true 就能使用exception对象。缺省值是 "false"。
contentType="mimeType[;charset=characterSdt]" │"text/html;charset=ISO-8859-1"
该属性用来定义输出的MIME类型,缺省值是:text/html,缺省字符集为:ISO-8859-1。例如%@page
contentType="text/plain%" 和<% response.set contentType="(text/plain)";%>相当。
例5-8 page(页面)指令示例
<%@ page import="java.util.*,java.lang.*" %>
<%@ page buffer="8kb" autoFlush="false" %>
<%@ page errorpage="error.jsp" %>
<%@page contentType="text/plain%" %>
2.include指令
include指令语法格式如下:<%@include file="relativeURL"% >
其中:include指令使JSP页面编译成 Servlet时包含其他文档的文本。这里使用的URL服务器所在的根目录。被包含文件的文本用JSP 页面的地址表示。若在URL前加上“/”号,则基地址为服务器所在的根目录。被导入文件的文本将被普通JSP页面文本编译成Servlet。所以,被导入文件本身必须符合语法规范的HTML文件或JSP文件。
<%@include % >指令将会在JSP编译时输入一个包含文本或代码的文件,当使用 <%@include %> 指令时,这个包含的过程是静态的。静态的包含就是指这个被包含的文件将会被导入到JSP文件中去,这个包含的文件可以是 JSP文件、 HTML 文件、文本文件。如果包含的是JSP文件,这个包含 JSP的文件的代码将会被执行。
如果仅仅只是用 include来包含一个静态文件。那么这个包含的文件所执行的结果将会插入到JSP中放<%@inclued %>的地方。一旦包含文件被执行完,那么主JSP文件的过程将会被恢复,继续执行下一行。
包含文件可以是html文件、 jsp文件、文本文件、或者只是一段 Java代码,但是注意在这个包含文件中不能使用 <html>、</html>、<body>、</body>标志,;因为这将会影响在原 JSP文件中同样的标志,这样做有时会导致错误。
有一些<%@include%> 指令的行为是以特殊的JSP 编译条件为基础的。比如:这个被包含的文件必须对客户都开放且必须有效,或者它有安全限制,如果这外包含文件改变,包含此文件的JSP文件将被重新编译。
例如:
file="relativeURL"
"error.jsp"
"/templates/onlinestore.html""/beans/calendar.jsp"
如果这个路径以“/”开头,那么这个路径主要参照JSP应用的上下关系路径,如果路径是以文件名或目录名开头,那么这个路径就是正在使用 JSP文件的当前路径。
在JSP页面中,包含指令最常见的用途就要数网页航条了,由于一个网站的主导航条栏往往是统一的,所以主导航栏一般被写成一张单独的网页,然后通过框架结构与其他网页拼接。由于框接可能带来的诸多的不便。如用户难以对框架内网页做书签等,包含指令就成了实现导航栏的最佳机制。见例5-9。
例5-9建立include.jsp文件,其内容如下:
<html>
<head><title>Include测试</title></head>
<body bgcolor="white">
<font color="blue">
<h1>
当前的日期和时间是:
</h1>
<%@ include file="date.jsp" %>
</font>
</body>
</html>
建立date.jsp文件,其内容如下:;
<%@ page import="java.util.* " %>
<%= new java.util.Date() %>