Java编程学习摘要(10)JSP和Servlet [B]
8.JSP指令
从本质上讲JSP还是Java程序,因为它最终还是会被翻译成Servlet进而编译成class文件执行。但是由于JSP是嵌入式的Java程序,有些特殊的符号还是需要学习的。下面我们一一列举,读者不必深究,多使用之后就会熟悉。
(1)HTML注释(客户端查看源文件能看到)
JSP语法:
例1
例2
%> -->
在客户端页面源程序中显示为:
描述
可以在注释中使用任何有效的JSP动态表达式。当用户第一次调用该页面或该页面后来被重新调用时,该表达式将被赋值。
(2)JSP注释
JSP注释作为JSP页面的文档资料,但是该注释在客户端通过查看源文件的方法是看不到的。即该注释不发送到客户端。
JSP语法:
--%>
例子
注释测试
(3)声明
在JSP页面脚本语言中声明变量或方法
JSP语法:
声明;[声明;]+…… %>
例子:
%>
注意:
(i) 变量必须先声明,然后才能使用。
(ii) 声明必须以分号结尾,但是在表达式中则不用。
(iii) 通过page指令导入的包中已声明的变量或方法,可以在主JSP文件中直接使用它们。
(iv)一般情况下,一个声明的有效范围是本页面。但是,如果JSP源文件用指令或include指令包含一些静态文件,声明的有效范围将会扩大,也就是说:声明在该静态文件中也有效。但是如果JSP源文件中用指令包含进来一个动态文件,主JSP文件中的声明在该动态文件中将不起作用。
(4)表达式
在JSP脚本语言中,可以使用任何有效的表达式。
JSP语法:
%>
例子1:
%>
color="blue">
例子2:
随机显示一个数字:
color="blue">
描述
表达式用于求值,然后其值转化为字符串,而且插入在JSP文件中显示该表达式的地方,注意:不能使用分号作为表达式的结尾,然而,在脚本段标签中,表达式要求以分号作为结尾。
(5)脚本段
在JSP页面脚本语言中,包含一段有效的代码片段。
JSP语法:
%>
例1:
for(int i=0;i<8;i++)
{ out.println(i); }
%>
long n=6666;
application.setAttribute("maxNumber",Long.toString(n));
out.println(application.getAttribute("maxNumber"));
%>
描述
在脚本段能声明多个变量和方法。能使用任何有效的表达式。能使用任何JSP隐含的对象或任何用标签声明的对象。说明:假如脚本段有输出语句,则输出内容被存储在out对象中,通过out对象输出到JSP页面中。
下面是JSP中一些功能语句:
(1)Include指令:
作用:该指令用于包含一个文本或代码的文件。
JSP语法:
include file="relativeURL"%>
属性:file="relativeURL"(file是被包含文件的路径名,其值是一个URL指向文件的一部分,没有协议、端口号或域名)
例子:include.jsp文件内容为:
Include指令测试random.jsp中的随机显示的数为:
%>
random.jsp文件中内容为:
在页面中显示为:
random.jsp中的随机显示的数为: 2148.093521070482
(2)Page 指令
作用:定义整个JSP页面的全局属性。
JSP语法:
[ language="java"]
[ extends="package.class"]
[ import= "{ package.class | package.* }, ..." ]
[ session="true|false" ]
[ buffer="none|8kb|sizekb" ]
[ false" ]
[ isThreadSafe="true|false" ]
[ info="text"]
[ errorPage="relativeURL"]
[ contentType="mimeType [ ;charset=characterSet ]" |
"text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true|false"] %>
例:
%>
%>
%>
%>描述:
Page指令的作用范围是整个JSP文件和该JSP文件用include指令或包含进来的任何静态文件,不适用于任何动态的包含文件。可以使用多个Page指令。但是每一个属性只能使用一次,除了import。一个好的编成风格是常常将它放到文件的顶部。
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缓冲区的大小,这个输出量将不低于你指定的大小。
false"
该属性指出:当缓冲区充满时,是否自动刷新。如果值为true(默认值为true),则自动刷新。如果值为false,则当缓冲区溢出时,将会产生错误。而且如果buffer属性的值设为none,autoFlush属性的值不能设为false.
isThreadSafe="true|false"
假设这个值设为true,多个线程能同时访问一个JSP页面。假如这个值为false,对一个JSP页面,JSP引擎一次只能响应一个用户的请求。默认值为true。
info="text"
关于作者、版本和著作权等信息,可以通过javax.servlet.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
(3)
元素
作用:将客户端的请求转交给一个HTML文件、JSP文件或脚本段处理。
JSP语法:
/>
属性: page="{ relativeURL |
expression %> }"
该属性用于设置将要转交的文件的相关URL.
该URL不能包含协议名、端口号或域名,相对于当前JSP文件来说的。如果它是绝对地址(以"/"开始),该路径由你的Web或应用服务器决定。
例子:
/>
描述:
标签将请求对象从一个JSP文件转交给另一个文件处理。而引擎对主JSP页面下面的代码不再执行。
说明:如果JSP文件的输出被设置为缓冲输出(即使用默认的Page指令值或直接设置缓冲区的buffer大小),则在请求被转交之前,缓冲区被清空。如果输出被设置为非缓冲输出(即用Page指令设置buffer=none),而且输出区中已经有内容,则使用元素,将会导致非法例外。
(4) 元素
作用:取得Bean属性的值,以便在结果页面中显示。
JSP语法:
property="propertyName"/>
属性:name="beanInstanceName"
在标签中声明的Bean实例的名字。
property="propertyName" Bean属性的名字。
例:
Bean的程序代码为:
package AccessDatabase;
public class Readdate
{
private String username="changcheng";
public String void getUsername(){return username; }
}
JSP文件的内容为:
class="AccessDatabase.readdate" />
从Bean中取得属性名为username的值为:
/>
执行后显示结果为:
从Bean中取得属性名为user的值为:changcheng
描述:
在使用前,你必须使元素创建或调用一个Bean实例。标签是用于取得JavaBeans属性值,相当于调用Bean中的某个属性的getXXX()方法。说明:使用元素时如上例中:
name=" init " property="username"
/>,username必须是Bean(Readdate)中的属性,且该Bean中要有getUsername()方法,否则编译时会出错。
(5)
作用:在JSP文件中,包含一个静态或动态文件.
JSP语法:
/>
例子:
/>
/>
/>
属性:
标签允许你包含一个静态文件或动态文件。一个静态文件被执行后,它的内容插入在主JSP页面中。一个动态文件对请求作出响应,而且将执行结果插入到JSP页面中。
标签能处理两种文件类型,当你不知道这个文件是静态或动态的文件时,使用该标签是非常方便的。
当include动作执行完毕后,JSP引擎将接着执行JSP文件剩下的文件代码。
page="{ relativeURL |
}"
该属性指出被包含文件相关URL;该URL不能包含协议名、端口号或域名。该URL是绝对或相对于当前JSP文件来说的。如果它是绝对地址(以"/"开始),该路径由你的Web或应用服务器决定
flush="true"
在JSP文件中,常设置flush="true",因为它不是一个默认值。
(6)
元素
作用:下载一个plugin插件到客户端以便执行applet或Bean
JSP语法:
type="bean|applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName"]
[ archive="URIToArchive, ..." ]
[ align="bottom|top|middle|left|right" ]
[ height="displayPixels"]
[ width="displayPixels"]
[ hspace="leftRightPixels"]
[ vspace="topBottomPixels"]
[ jreversion="JREVersionNumber | 1.1"]
[ nspluginurl="URLToPlugin"]
[ iepluginurl="URLToPlugin"]>
[
[
例子:
codebase="/html">
元素在计算机启动时,给applet或Bean传递参数及其值。如果plugin没有启动,元素将给使用者提供一条反馈信息。如果plugin启动了但是applet或Bean没有启动,plugin常常弹出一个window窗口,为用户解释出错的原因。
属性:
type="bean|applet"
plugin将执行的对象的类型。你必须指定Bean或applet,因为这个属性没有默认值。
code="classFileName"
plugin将执行的JAVA类文件的名字。在文件名后面必须跟上.class扩展名。文件名是相对于codebase属性中命名的目录。
codebase="classFileDirectoryName"
包含applet代码的目录名的相对或绝对地址。如果没有提供该值,调用的JSP文件的路径将被使用。
name="instanceName"
Bean或applet实例的名字,相同的JSP文件通过它可以相互通信。
archive="URIToArchive,
..."
一个用逗号隔开的路径列表,该路径列表指出用类装载器装载的类文件的位置。类装载器是位于codebase属性中命名的目录。
align="bottom|top|middle|left|right"
applet或Bean中显示的图象的位置是相对于JSP结果页面中的这样的行来说的,该行是JSP文件中包含的行。
height="displayPixels"
width="displayPixels"
applet或Bean以像素为单位显示的初始高度和宽度,不包括applet或Bean弹出的任何窗口和对话框.
hspace="leftRightPixels"
vspace="topBottomPixels"
applet或Bean以像素为单位显示的图象的左右(或上下)之间间距的大小。一般是一个非常小的非零值。
jreversion="JREVersionNumber|1.1"
applet或Bean要求的JAVA运行时环境(JRE)的版本。默认的值是1.1
nspluginurl="URLToPlugin"
用户使用Netscape
Navigator浏览器时需下载JRE插件的URL。它是完整的URL地址,有协议名、端口号和域名。
iepluginurl="URLToPlugin"
用户使用Internet
Explorer浏览器时需下载JRE插件的URL.它是完整的URL地址,有协议名、端口号和域名。
[
【注意】相比HTML,jsp文件变得更短了,JSP的主体是HTML,嵌入的Java语句只负责动态效果,所以使用比Servlet方便的多。这里关键的一点是在头部设置页属性
page contentType="text/html; charset=gb2312"
%>,其中charset=gb2312就是告诉JSP引擎本地编码是gb2312,然后JSP引擎就会自动进行转换,不需要手工转了。