<%! 变量,方法和类声明区 (Declarations) %>
在此所声明的变量,方法和类都会被保留成唯一的一份,直到此
JSP程序停止执行为止,都会一直存在;也就是说,所有请求服务都是共用这一份,它是同时被共享的。例如:
<%!
int i;
void method(){}
%>
<%
程序代码区 (Scriptlets) %>
可放入任何标准的JAVA
程序代码。
<%= 输出表达式 (Expressions) %>
必须是字符串或执行的结果可以被转成字符串类型。例如:
<%= "任何字符" %>
<%-- 注解区 (Comments) --%>
注解的内容是不会被执行的。而除了这种方式之外,你也可以用下面两种方式来注解:
<% // 注解 %>
<% /* 注解 */ %>
page编译指令
Page编译指令是用来设定JSP程序个别的属性和它与JSP Container要如何沟通,也就是告诉JSP Engine该如何执行这个JSP
程序,以服务来自客户端的请求。
语法
<%@ page Attribute_List %>
Attribute_List :: { language = "scriptingLanguage" }
{ extends = "className" }
{ import = "importList" }
{ session = "true|false" }
{ buffer = "none|sizekb" }
{ autoFlush = "true|false" }
{ isTreadSafe = "true|false" }
{ info = "infoText" }
{ errorPage = "errorPageURL" }
{ isErrorPage = "true|false" }
{ contentType = "contentTypelnfo" }
language="scriptingLanguage"
设定所用的描述语言,默认值是"java",也是目前唯一有效的设定值。
extends="className"
设定所产生出来的class所要继承的java类别,这个属性一般都不需要去设定它,即使要设定,也必须非常小心,否则可能会影响JSP Engine的正常执行。默认值是HttpJspBase,它本身是实作HttpJspPage界面的类,可以参考javax.servlet.jsp.*所提供的API。
import="importList"
设定这个JSP
程序所要用到的JAVA API或是自行定义的类。默认值是java.language.*,javax.servlet.*,javax.servlet.http.*,javax.servlet.jsp.* 和javax.servlet.jsp.tagext.*类。import是唯一可以重复设定的属性。
session="true|false
定义这个JSP程序是否要用到session。默认值是"true",session的功能是用来保留当多个JSP程序互动时所要同时参考到的对象;session对象的类类型是HttpSession。如果没有改变默认值的话,就可以直接在JSP
程序内使用它,用它所提供的方法putValue()与getValueI()方法来存取所保留对象。
buffer="nonelsizekb
定义这个JSP
程序所需要的缓冲区大小,单位是kb。默认值大小根据jsp1.1的规格说明是不小于8kb。
autoFlush="true|false"
定义这个JSP程序所用的buffer满时,是否自动将所产生内容输出到客户端,默认值是"true"。如果改变它的值为"false",则当buffer内容超出其所设定的值大小时,会产生overflow的exception。要特别注意的是当buffer设为"none",autoFlush不能不设成"false",否则会产生JSP
程序转换时期的错误。
isThreadSafe=""true|false"
定义JSP Engine 执行JSP
程序的方式,默认值是"true",这是告诉JSP Engine以多线程的方式同时服务多个来自客户端的请求,也就是说,这些请求会被JSP Engine以交互轮流的方式来执行完成。
如果isThreadSafe设成"false",则JSP Engine会为所产生出来的JAVA类实作一个SingleThreadModel界面,只要类实作了这个界面,就会以单线程的方式来服务多个来自客户端的请求,意即