JSP页面由元素和模板数据组成,元素师必须由JSP容器处理的部分,而末班数据时JSP容器不处理的部分。
例如:JSP页面中的HTML中的内容,这些内容会直接发送到客户端。
在JSP2.0中,元素有三种:指令元素、脚本元素和动作元素
指令元素(directive element)
指令元素主要用于转换阶段提供整个JSP页面的相关信息,指令不会产生任何的输出到当前的输出流中。
指令元素的形式如下:<%@directive { attr="value"}*%>
在起始符号<%@之后和结束符&>之前可以加空格也可以不加。
指令元素有三种:page,include ,taglib
2.include 指令用于在JSP页面静态包含一个文件,这个文件可以是JSP,或者是HTML网页,过着文本文件,或者一段java代码。
<%@ include file="relativeURLspec"%>
在XML中使用的是:
<jsp:directive. include file="relativeURLspec"/>
例如:index.jsp
<html>
<body>
<center> Now time is: <%=new java.util.Date()%>
<hr>
<%out.println("helloworld");%>
<br>
<%@ include file="date.jsp"%>
</center>
</body>
</html>
data.jsp:
<%=new java.util.Date().toLocaleString()%>
被包含的文件最好不要包含<html>,<body>等标签,这样会影响到原来的JSP文件。
在变量方面,被包含的文件最好不要有源文件的变量和方法。
1.page指令
page指令作用于整个JSP页面中,定义了许多与页面相关的属性,这些属性将被用于与JSP容器通信
<%@ page attr1="value1" attr2="value2"...%>
在JSP中还提供了XML的语法格式的page指令
<jsp:directive.page attr1="value1" attr2="value2"..../>
page有15个属性
language="scriptingLanguage"该属性用于指定脚本元素中使用的脚本语言,默认为java,
extends="className"该属性用于指定JSP页面转换后的Servlet类从哪一个类集成,属性的值是完整的限定类名。
定义整个JSP页面的全局属性。
JSP语法:
<%@ page
[ language="java"]
[ extends="package.class"]
[ import= "{ package.class | package.* }, ..." ]
[ 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"] %>
例:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*, java.lang.*" %>
<%@ page buffer="8kb" autoFlush="false" %>
<%@ page errorPage="error.jsp" %>
描述:
Page指令的作用范围是整个JSP文件和该JSP文件用include指令或<jsp:include>包含进来的任何静态文件,整个JSP文件和这些静态文件一起叫做一个"平移单元". 注意:Page指令不适用于任何动态的包含文件。你可以在一个"平移单元"使用多个Page指令。但是每一个属性你只能使用一次,除了import(因为import属性和JAVA程序语言的import语句很类似,你能够多次使用它,就象在JAVA语言中你能够多次使用import命令一样)。不论你将Page指令放到JSP文件或被包含的文件的任何一个位置,它的作用范围都是整个"平移单元".然而,一个好的编成风格是常常将它放到文件的顶部.
language="java"
在JSP文件的脚本段、声明和表达式中使用的语言。现只允许用"JAVA"。
extends="package.class"
该属性用于指明JAVA类文件超类全名。使用该属性时要小心,因为,它会限制JSP引擎编译文件的能力。
import= "{ package.class | package.* }, ..."
JSP文件中导入的一个或多个用逗号隔开的包的列表。这些包(和它们的类)可以在JSP文件的脚本段、表达式、声明和标签中使用。你必须将import属性放到调用被到入的类的标签前面。如果你想导入多个包,你可以在import后面用逗号将每个包隔开即可,或你可以在一个JSP文件中使用多个import.
session="true|false"
该属性用于确定JSP页面是否使用HTTP session.假如这个值是true, 则sesssion引用的是当前或新的session. 假如这个值是false,则在JSP文件中,不能使用session对象。 默认值是true.
buffer="none|8kb|sizekb"
设置buffer缓冲区的大小,当out对象将被编译的JSP页面向客户Web浏览器端输出时使用。它的默认值是8kb.假如你指定了buffer缓冲区的大小,这个输出量将不低于你指定的大小。
autoFlush="true|false"
该属性指出:当缓冲区充满时,是否自动刷新。如果值为true(默认值为true),则自动刷新。如果值为false,则当缓冲区溢出时,将会产生错误。而且如果buffer属性的值设为none,autoFlush属性的值不能设为false.
isThreadSafe="true|false"
假设这个值设为true,多个线程能同时访问一个JSP页面。假如这个值为false,对一个JSP页面,JSP引擎一次只能响应一个用户的请求。默认值为true。
info="text"
关于作者、版本和著作权等信息,可以通过javax.sevlet.Servlet.getServletInfo()方法查到该信息的详细情况。
errorPage="relativeURL"
该属性用于设置处理例外事件的JSP文件的路径名。假如这个路径名以"/"开始,则这个路径名是JSP应用文档根目录而言的,而且由Web服务器决定。否则,这个路径是相对于当前JSP文件而言的。
isErrorPage="true|false"
JSP文件是否显示错误页面。 如果这个值为true,你可以使用例外exception对象。如果这个值为false(默认值也为false),在JSP文件中,不能使用exception对象。
contentType="mimeType [ ;charset =characterSet ]" |
"text/html;charset=ISO-8859-1"
JSP文件中使用的MIME type和character encoding(字符编码)是用于响应客户端的请求。你可以使用JSP引擎中有效的任何MIME type或character set(字符集).默认的MIME type是text/html,而且默认的字符集合是ISO-8859-1