脚本元素——向JSP文件产生的servlet文件中插入代码,主要有三种形式
表达式 <%= expression %>
<%和=之间不能有空格。expression必须能求值,服务器计算出值后以字符串形式发送到客户端显示
程序片<% code %>
一个JSP页面可以有许多,它们将被插入到生成的servlet文件的_jspService方法中
每次客户端请求都会新开一个线程,调用servlet的service方法,service方法再调用_jspService方法
声明语句<%! Declaration %>
声明的内容包括变量和方法,将被插入到生成servlet的类体中,在_jspService方法之外,成为类变量和类方法,直到服务器关闭才被释放
当多个客户请求一个JSP页面时,多个线程将共享这些变量和方法,因而任何一个用户对这些变量操作的结果,都会影响到其他用户
指令标签
将影响由JSP页产生的servlet的总体结构
其格式为<%@ directive attribute1="value1" , attribute2="value2" ,┄ %>
directive代表指令名称
attribute代表该指令中可选的属性名称
value代表属性值并且总是用单引号或双引号括起来,要想在属性值value中输出引号,可在该引号前用一个反斜杠“/”
在JSP中,有三种类型的指令
page
include
taglib
page指令
可放在文档内的任何位置,该指令对整个页面有效
可以定义一个或多个大小写敏感的属性,包括import、contentType、isThreadSafe、Session、buffer等
import属性
为JSP页面引入Java核心包中的类,这样就可以在脚本部分使用这些类,如: <%@ page import="java.io.*" %>
可以为import属性指定多个值,这些值用逗号分割,这样就可以引入若干个包或类,如:
<%@ page import="java.io.*", "java.awt.*", "java.util.Date"%>
JSP页面默认import属性已经有如下的值:"java.lang.*",
"javax.servlet.*","javax.servlet.jsp.*","javax.servlet.http.*“
除import属性外,Page指令的其它属性只能指定一个值
contentType属性
定义JSP页面相应的MIME(Multipurpose Internet Mail Extension,多用途Internet 邮件扩展)类型和JSP页面字符编码
其属性使用以下两种格式之一
<%@ page contentType="MIME-Type ;charset=Character-Set"%>
或者
<%@ page contentType="MIME-Type"%>
例如
<%@ page contentType="application/vnd.m s-ex cel; charset=GB2312" %>
其属性默认值为
<%@ page contentType = "text/ html; charset=ISO-8859-1" %>
isThreadSafe属性
用来设置JSP页面是否可多线程访问
设为true时,JSP页面能同时响应多个客户的请求
设为false时,同一时刻只能处理一个客户的请求,其它客户须等待
其默认值为true
session属性
表示当前的JSP页面是否参与HTTP会话
设为true时,可以使用内置的javax.Servlet.HttpSession类型的一个名为session的对象
设为false时,则该对象不被创建
默认值为true
buffer属性
指定jsp内置输出流out变量使用的缓冲区的尺寸,如果设置为none,则不使用缓冲区
默认值是8kb
out变量是JspWriter类型的,JspWriter是java.io.Writer类的子类。累计输出内容超过了这里设定的大小、完成了此页、或者输出被明确清除(如使用response. flushBuffer),文档才被发送给客户显示
例如 <%@ page buffer="16kb" %>
autoflush属性
控制out的缓冲区在装满时的处理,默认为true
设为true时,装满时则自动清除缓冲区
设为false时,装满后则会出现异常
buffer的值是none时将autoflush设为false是不合法的
info属性
定义了一个通过getServletInfo方法可从servlet中检索到的串
格式为 <%@ page info=" some Message" %>
isErrorPage属性
指明当前页是否能充当其它JSP页面的错误页。采用以下两种格式之一
<%@ page isErrorPage="true" %>
或者
<%@ page isErrorPage="false"%> <%-- Default --%>。
errorPage属性
指定一个处理当前页未被捕获的任何异常的页面
格式为 <%@ page errorPage="Relative URL" %>
这个URL指定的错误页的isErrorPage属性必须被设为true方可使用
include指令
与page指令不同,该指令应该放在你想要将外部文件插入的位置,它可以将文件整体插入到该处
其格式为 <%@ include file="fileName" %>
Jsp文件被转换成servlet文件时,外部文件就被插入了,然后统一进行编译
当外部文件发生改变时,当前页面无法得到通知,要想得知外部文件的任何改变,当前页面必须重新编译,由上一节jsp的操作过程可知,必须重新保存该jsp文件
taglib指令
JSP1.1规范中新增的
指定一个标记库,用于扩充标准的JSP标记集
完成三个任务
首先,它通知JSP服务器,页面使用一个标记库
其次,它指定包含标记库标志符的特殊jar文件的位置
最后,它指定一个用于唯一区分这些新标记的标记前缀
格式为:<%@ taglib uri="someuri " prefix="somename" %>
uri属性:一个引用标记库描述符文件(后缀名为TLD:Tag Library Descriptor)的绝对或相对URL
prefix属性:指定一个将要在TLD文件定义的标记名前面使用的前缀
如果TLD文件定义了一个名为tag1的标记,并且prefix属性的值设为test,那么实际的标记名将为test:tag1