1、开发体系与环境配置 本章目标:静态网页与动态网页的概念 JSP与其他动态网页技术的区别 JSP运行环境的安装配置 JSP运行机制 JSP开发工具静态网页与HTML 静态网页由单纯的超文本标记语言(HyperTextMarkupLanguage,HTML)进行编写,在存储时以HTML方式(文件扩展名为.htm/.html)存储。网络中浏览的静态网页都是一个个的HTML文件,这些网页中可以包含文字、图片、动画和声音,以及能够跳转到其他文件的超级链接。所有的这些东西都是以超文本标记语言方式进行编写。HTML文件通过所包含的特殊命令,来告诉用户的浏览器应该如何显示文本、图像以及网页的背景。这些命令加入
2、到文本文件中,被称为HTML标记。如果在浏览器显示网页时查看网页的文本,可以看见在尖括号中的HTML标记。2动态网页 动态网页与静态网页从设计到实现都有所不同。动态网页是在HTML中使用特殊的程序编码来设计和完成。网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后Web发展的大趋势。编码可以使用编程语言,如C、Java、Visual Basic等,也可以使用专门的脚本(Script)语言,如VBScript、JavaScript、PHP等。这样,在存储时也就需要使用不同的文件扩展名,如.asp、.jsp、.php等。因此在浏览时,除了需要有浏览器的支持外,还需要有支
3、持相应的系统环境(如ASP、JSP或PHP)对其中的编码进行编译、解释,在经编译、解释后才能在浏览器中显示出正确的内容。JSP 简介 JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。JAVA平台相关的术语:(1)J2SE:Java 2 Standard Edition(JAVA 2标准版),适用于桌面系统的Java 2平台标准版,(2)J2EE:Java 2
4、 Enterprise Edition(JAVA 2企业版),是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。(3)J2ME:Java 2 Micro Edition(JAVA2精简版,也称为袖珍版),Java 2平台中适用于小型设备和智能卡的版本。(4)JSDK:Java Software Development Kit,和JDK以及J2SE等同。(5)J2SDK:Java 2 SDK,即Java 2软件开发工具包,包括运行环境、编译工具及其它工具、源代码等,基本上和J2SE等同。(6)JDK:JDK现在是指J2SDK(J2SE Development
5、 Kit),同时,J2RE也改称为JRE。(7)JRE:Java Runtime Environment(Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。(8)VM:Java虚拟机(Java Virtual Machine,JVM)是Java可移植性的关键。JSP是J2EE体系的一种技术,主要用于开发WEB应用。JSP的优势 程序可以跨台平执行。目前几乎所有平台上都可以见到一致的java servlet/jsp的Web Server/Application Serve系统。JSP可以让开发人员在任意环境做开发,在任意环境进行系统部署,在任意环境扩展
6、应用程序。多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具而且有许多可以免费得到,并且其中的许多已经可以顺利的运行于多种平台之下。强大的的可伸缩性。从只有一个小的jar文件就可以运行servlet/jsp到由多台服务器进行集群和负载均横,到多台Application进行事务处理、消息处理等。JSP的不足 跨平台的功能和极度的伸缩能力极大的增加了产品的复杂性。也就是说,它在扩展时需要分成多少块,那么java系统中就有多少种产品。所以用户要以看到jre、jdk、jsdk、jswdk等,实际上它们只要有效的搭配在一起,就可以产生强大的效能,密不可分,但这同时使应用程序变得非常复
7、杂。JSP程序调试困难。JSP页面首先被转化为一个.java文件(servlet),然后再被编译。这样,出错信息实际上指向的是经过转化的那个.java文件而不是jsp本身。J S P运行环境为了能够编写JSP程序,至少需要具备以下两个基本条件:p在计算机上安装Java 2,并进行相关的环境变量的设置。p在计算机上安装JSP引擎,比如J2EE服务器、Resin和Tomcat服务器等。安装J DK注意:CLASSPATH中的“.”它表示当前目录,一定要输入,否则会出现错误。将C:j2sdk1.4.2添加到Path中,除非是在最后,否则必须在后面加上“;”号必须打开新的命令提示符窗口,新环境变量设置
8、才能生效。变量名 变量值说明JAVA_HOMEC:j2sdk1.4.2JDK安装目录path%JAVA_HOME%binJAVA实用程序的位置CLASSPATH.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar类和包文件的搜索路径 安装和配置Tomcat服务器 注意:注意:如果Tomcat不能正常启动,检查JDK环境变量的设置 第一个JSP程序1.first.jsp%for(int i=0;i第一个JSP程序 2建立应用目录注意:目录名是区分大小写的,WEB-INF不能写成web-inf。JSP是用JAVA写的,所以它是大小写敏感的,用过其他编程语言的
9、人最容易犯这个错误。在Tomcat中,整个应用一般在/webapps目录下在浏览器的地址栏中输入的访问JSP的地址也是区分大小写的.如http:/localhost:8080/demo/t.jsp与http:/localhost:8080/Demo/t.jsp是不一样的浏览器在默认情况下会把浏览过的网页保存在缓冲区中,在调试时,一般不希望这样.把下面的脚本加入程序中,就可防止JSP或SERVLET中的输出被浏览器保存在缓冲区中 JSP运行机制 所有的JSP程序在首次载入时都被翻译成Servlet文件,然后再运行的,JSP引擎耀完成以下操作:判断与JSP文件对应的类的名字 如果该类不存在或比.j
10、sp文件的老,容器就会重新创建一个等价的Servlet类并编译它 如果Servlet类存在只是其实例并末运行,容器就载入该Servlet类并创建一个实例 容器启动一个线程在载入的实例中处理当前Http请求 服务器将运行结果以HTML形式作为响应返回给客户端浏览器。标记Servlet第一个请求产生应答以后的请求被转换为图1-19 JSP运行机制JSP开发工具-JCreatorJCreator是一个用于Java程序设计的集成开发环境,具有编辑、调试、运行Java程序的功能。JSP开发工具-Eclipse Eclipse是一个开放可扩展的集成开发环境(IDE),它不仅可以用于Java的开发,通过开发
11、插件,还可以构建其他的开发工具。Eclipse是开放源代码的项目,并可以免费下载,它的官方网址是http:/www.eclipse.org。JSP开发工具-Dreamweaver Dreamweaver是Macromedia公司开发的用于网站设计和网页制作的软件,它提供了强大的可视化布局工具、应用开发功能和代码编辑支持,使设计和开发人员能高效地设计、开发和维护基于标准的网站和应用程序。HTML基础 HTML概述 一个HTML文档的基本结构如下:HTML文件开始 文件头开始 文件头内容 文件头结束 文件体开始 文件体内容 文件体结束 HTML文件结束程序代码程序代码 2-1.htm标题标记 HT
12、ML中的标题元素使用格式:#代表1、2、3、4、5、6中一个。它支持ALIGN属性,用它可以指定排版格式,其属性值有:LEFT、RIGHT和CENTER。如果不给出ALIGN的属性值,缺省值为LEFT。程序代码程序代码 2-2.htm段落标记 分段元素P用来定义文档中的一个段落,段落的缩进、第一个字前面的空格及其他特性 通常由浏览器确定。是段落的结尾,单独一个会添加一个空行。程序代码程序代码 2-3.htm换行标记 换行元素BR在HTML文档中增加一个换行,指示浏览器执行一个换行动作,与P元素不同,它只是换行,其他字符和段落格式不变。BR元素没有结束标记。程序代码程序代码 2-4.htm段落级
13、标记 如果希望文本以预定义的格式显示,可以使用PRE元素。此元素用于定义文本的格式。文本在浏览器中显示时遵循在HTML源文档中定义的格式。程序代码程序代码 2-5.htm字体标记 标记用来设置文档的字体,通过改变其属性可以对字体进行不同的设置。其常用的属性包括:SIZE、COLOR和FACE。其中SIZE用来指定字符的大小,COLOR用来指定字符的颜色,FACE用来指定一种字体名或一种字体列表。程序代码程序代码 2-6.htm图片标记 IMG标记用于将图像插入到HTML文档中。可以将IMG标记放置在要显示图像的位置。语法为:其中SRC是属性,而值是指定图像文件位置的URL。IMG标记的ALIG
14、N属性可以用于调整图像相对于周围文本的对齐方式。程序代码程序代码 2-7.htm超级链接超链接主要通过锚点元素A来实现。A元素可以支持较多的属性,其中最重要的是HREF和NAME属性。1、HREF属性 如果A元素中包含HREF属性,则该元素的起始标记和结束标记之间的文本就变成了超文本(Hypertext)。在浏览器中,超文本通常会以不同颜色并带下划线的字符显示。格式为:或#identifier是NAME锚点。2、NAME属性 如果A元素带有NAME属性,则意味着此锚点是链接的目标。NAME属性的值是锚点的标志。此标志可以是任意字符串,但在HTML文档内必须惟一,NAME属性所代表的锚点在浏览器
15、中没有任何显示。程序代码程序代码 2-8.htm有序列表 有序列表是指各列表项之间是有顺序的,从1、2、3一直延伸下去。有序列表的基本格式为:其中,标签用来建立一个有序列表,用来增加列表项。开始标签和结尾标签都是必选的,即每个列表项的结束就是下一个列表项的开始,建好的整个列表项会与上下的文本之间有一个空行,列表项向右缩进并左对齐,各列表项之前都带有顺序号。程序代码程序代码 2-9.htm无序列表 无序列表是指各列表项间没有顺序关系,只是利用列表方法来呈现资料,在各条列前面均有一个项目符号。无序列表的基本格式为:其中 标签用来建立一个无序列表,用来增加列表项。无序列表通过或的type属性来定义左
16、端的符号类型,该符号可以是disc(实心圆点)、square(方块)、自定义图片等,默认为实心圆点。程序代码程序代码 2-10.htm块级元素 块级元素包括DIV和SPAN两种标记。DIV称为层标记,有时也称为块标记。利用DIV标记和CSS的定位技术可以做出相当出色的效果。可以定义跨段落的内容块;定义段落内的内容块程序代码程序代码 2-11.htm水平标尺 水平标尺标记用于在页面上绘制一条水平线。可借助于下列属性控制水平线。它只有开始标记,没有结束标记,且不包含任何内容程序代码程序代码 2-12.htmMARQUEE标记 使用的基本语法是:xx,显示的效果是xx就会从屏幕一边跑到另外一边。程序
17、代码程序代码 2-13.htm1.基本表格 表格是一种能够有效的描述信息的组织方式,由行、列和单元格组成。它可以将文字和图片等那同按照行和列排列起来,可以很好地控制页面布局。HTML中使用 标签创建表格,其基本格式为:表标记 行标记 单元格标记 标题标记 列标记程序代码程序代码 2-14.htm合并单元格1.在 或 标记中使用 COLSPAN 属性,可以设置单元格所跨的列数,例如COLSPAN=3表示跨3列。2.在 或 标记中使用 ROWSPAN 属性,可以设置单元格所跨的行数,例如ROWSPAN=3表示跨3行。程序代码程序代码 2-15.htm单元间隔和单元填充 CELLSPACING 属性
18、定义单元格之间的间距(以像素为单位)。CELLPADDING 属性定义表的单元格边界与单元格内容之间的间距(以像素为单位)。程序代码程序代码 2-16.htm框架结构 框架将 Web 浏览器分成多个不同的区域,每个区域都可以显示独立、可滚动的页面。例如,可以在网页中使用三个框架,一个显示标题,一个用作导航菜单,一个显示数据。使用了框架结构的HTML文档基本格式为:标题部分 其中,标签用来定义一个框架容器,标签用来定义每一个框窗内的参数属性。当用户使用的浏览器版本太低不支持框架功能时,将看到一片空白。为了避免这种情况,可使用这个标签。在框架页面中每个子窗口内对应一个FRAME语句,该语句中的SR
19、C属性指明了链接的HTML,该文件将显示在FRAME对应的窗口中。如果该HTML文件含有超链接,当用户单击该链接时,链接的网页在哪里显示呢?如果没有指定,则在原来的窗口中打开;如果要指定在哪个子窗口中打开,这时就需要使用TARGET属性来实现了。程序代码程序代码 2-17.htm top.htm bottom.htm表单 网页中具有可输入表项及项目选择等控制所组成的栏目称为表单,表单的功能是收集用户信息实现系统与用户交互。比如注册页面就是一个十分典型的表单页面。表单信息的处理过程如下:当单击表单中的提交按钮时,表单中的信息就会上传到服务器中,然后由服务器端的应用程序(例如CGI,ASP,PHP
20、,JSP等)进行处理,处理后将用户提交的信息存储在服务器端的数据库中,或者将有关信息返回到客户端浏览器上。表单语法表单语法如下:表单内容其中:l ACTION此属性指定处理提交的表单的脚本的位置。语法为:ACTION=URL,若是这个属性没有设定,网页本身会被当作action属性值。l MEDTHOD此属性指定向服务器发送数据的方法。如果值为GET,浏览器将创建一个请求,该请求包含页面URL、一个问号和表单的值。浏览器会将该查询返回给URL中指定的脚本,以进行处理。如果将值指定为POST,表单上的数据会作为一个数据块发送到脚本,而不使用任何请求字符串。l name代表表单的名称,JSP利用这个
21、名称,辨识网页中的特定表单区域。l 如表示表单中常用标记 表单中使用的主要元素包括以下3个。lINPUT:输入字段。lSELECT:定义可选择的若干选项,为列表框。lTEXTAREA:多行文本的输入字段。(1)INPUT INPUT是一个单一的标记,没有结束标记。语法格式:INPUT有6个属性:TYPE、NAME、SIZE、VALUE、MAXLENGTH和CHECKED。TYPE属性指明输入的类型,也决定了INPUT标记的表现形式,其余的属性根据TYPE的类型不同,含义也不同。TEXT类型。它是TYPE的默认类型。当TYPE取此类型时,INPUT其余属性的含义如下。NAME:将输入值传给CGI
22、程序时与输入值相对应的名称。SIZE:输入窗口的长度,默认值为20,以字节为单位。VALUE:设定预先在窗口显示的信息。MAXLENGTH:限制最多输入的字节数。PASSWORD类型与TEXT类型的使用相似,不同在于输入时不显示输入内容,而以“*回显。主要用在取得用户输入的密码,以避免密码被其它人看见。当TYPE取此类型时,INPUT其余属性的含义与TYPE取TEXT类型时其余属性的含义相同。RADIO类型 为用户提供单选按钮选择,即在多个选择中只能选择其中一项。由于选为用户提供单选按钮选择,即在多个选择中只能选择其中一项。由于选择惟一,因此择惟一,因此NAME属性取相同的值,属性取相同的值,
23、VALUE属性的值各不相同。当属性的值各不相同。当TYPE取此类型时,取此类型时,INPUT其余属性的含义如下。其余属性的含义如下。NAME:将输入值传给:将输入值传给CGI程序时与输入值相对应的名称。程序时与输入值相对应的名称。VALUE:每个选项对应的值。:每个选项对应的值。CHECKED:预选项目。(缺省选项)CHECKBOX类型 它为用户提供多选按钮进行选择,即在多个选择之间可以选择其中一它为用户提供多选按钮进行选择,即在多个选择之间可以选择其中一项或多项。由于每个选项都可以被选择,项或多项。由于每个选项都可以被选择,NAME属性取不同的值,属性取不同的值,VALUE属性的值可以相同也
24、可不相同。当属性的值可以相同也可不相同。当TYPE取此类型时,取此类型时,INPUT其其余属性的含义如下。余属性的含义如下。NAME:将输入值传给:将输入值传给CGI程序时与输入值相对应的名称。程序时与输入值相对应的名称。VALUE:每个选项对应的值。:每个选项对应的值。CHECKED:预选项目。:预选项目。SUBMIT类型 在浏览器窗口产生一个提交按钮。当用户用鼠标单击这个按钮后,则在浏览器窗口产生一个提交按钮。当用户用鼠标单击这个按钮后,则用户的输入信息即被传送到服务器。当用户的输入信息即被传送到服务器。当TYPE取此类型时,取此类型时,INPUT其余其余属性的含义如下。属性的含义如下。N
25、AME:提交输入信息,传给:提交输入信息,传给CGI程序时与提交按钮相对应的名称。程序时与提交按钮相对应的名称。VALUE:显示在按钮上的文字。默认为浏览器内部预定的值。:显示在按钮上的文字。默认为浏览器内部预定的值。RESET类型 让浏览器产生一个重置按钮。当用户单击这个按钮后,用户输入的信让浏览器产生一个重置按钮。当用户单击这个按钮后,用户输入的信息都会被全部清除,以便用户重新输入。当息都会被全部清除,以便用户重新输入。当TYPE取取RESET类型时,类型时,INPTU的的VALUE、NAME属性的值与属性的值与INPUT取取SUBMIT类型时的类型时的VALUE、NAME属性的值取法一样
26、。属性的值取法一样。HIDDEN类型将INPUT标记的区域隐藏起来,使之不出现在屏幕中。程序代码程序代码 2-18.htm(2)SELECT 在FORM中使用SELECT标记可以在浏览器窗口中显示一个下拉列表或带有滚动条的列表框,用户可以在列表中选择一个或多个选项。SELECT有开始标记和结束标记,全部选项包含在SELECT的开始和结束标记中。结构如下:其中,表示选项,有几个这种标记就有几个选项。选项的具体内容是放在每个OPTION后的,如果OPTION中有SELECTED属性,表明该项已经预选。SELECT带有NAME、SIZE、MULTIPLE三个属性。l NAME:作为输入信息的名称、列
27、表的名字。l SIZE:该属性控制可以同时显示在列表中的选项条数,默认值为1。l MULTIPLE:该属性允许用户可以选择多个选项,否则只能选择一项。(3)TEXTAREA 当输入文本超过一行时,可以使用文本框。文本框由TEXTAREA元素定义,常用属性如下:NAME:规定文本框的名字。ROWS:定义文本框的行数。COLS:定义文本框的列数。语法格式:对于文本框中较长的行,可以设置文本进行换行。文本换行由WRAP属性规定,WRAP=OFF,不换行;WRAP=SOFT,软换行(即显示时换行,但发送时实际不换行);WRAP=HARD,硬换行(即插入回车字符)。jsp 语法与内置对象本章目标 JSP
28、页面的基本结构 JSP指令 JSP动作 内置对象 表单数据的读取JSP页面的基本结构 JSP程序结构包括注释、声明、表达式和程序段。注释 注释是由程序员插入的、用于解释JSP源代码的句子或短语。注释不影响浏览器对页面的显示,但是可以有助于用户理解生成此页面的HTML和JSP源代码,注释有HTML 注释、隐藏注释、脚本注释三种类型。1HTML 注释1、HTML 注释类似于在 HTML 中使用的那些注释,格式为:可在其中包括动态内容,在浏览器的“查看源文件”可看到注释。2、隐藏注释隐藏注释不发给客户端,只能通过查看原始 JSP 文件查看,格式为:程序代码程序代码 3-1.jsp程序代码程序代码 3
29、-2.jsp3脚本注释java脚本中的注释,与java程序中的注释相同。语法形式为:/单行注释/*注释 */代码段JSP中的代码部分,是java程序的一段代码,几乎可以使用任何java语法,它可以使用jsp页面所定义的变量、方法、表达式或JavaBeans。脚本的语法格式为:可以在“”之间插入Java程序片,一个JSP页面可以有许多程序片,这些代码块将被JSP服务器按照顺序执行。程序代码程序代码 3-3.jsp声明 JSP中的声明可以用来定义变量,在声明元素中声明的变量和方法在JSP页面初始化时被初始化。JSP声明的语法格式为:其中declaration为声明的变量、方法的名称和内容。例:一个
30、简单的方法声明:在声明变量变量和方法时,需要注意以下几点:l 声明必须以;结尾。l 可以直接使用在中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。l 一个声明仅在一个页面中有效。程序代码程序代码 3-4.jsp程序代码程序代码 3-5.jsp表达式 表达式用于输出单个变量或某个计算的结果,可以将某个计算结果转换成一个字符串并且直接使用在输出网页上。表达式可以包含任何JAVA语言表达式,只要表达式可以求值。表达式的语法格式为:程序代码程序代码 3-6.jspJSP指令几个典型的JSP指令有page指令、include指令、taglib指令等。page 指令page指令用于定义JSP
31、文件中的全局属性,这些属性影响整个JSP文件(整个编译后的类文件)。属性描述缺省值language定义要使用的脚本语言。如果在将来定义要使用的脚本语言。如果在将来 JSP包容器支持多种语包容器支持多种语言时可使用它言时可使用它“Java”import定义以逗号分隔的类或包的列表,就像在通常的定义以逗号分隔的类或包的列表,就像在通常的 Java代码代码中所使用的中所使用的import语句那样语句那样缺省情况下忽略缺省情况下忽略,但但已经引入已经引入4个包个包buffer定义对客户的输出流的缓冲模型。如果值为定义对客户的输出流的缓冲模型。如果值为“none”,则没,则没有缓冲,而是所有的输出都被有
32、缓冲,而是所有的输出都被PrintWriter直接写到直接写到ServletResponse中。如果定义了缓冲区的尺寸(如中。如果定义了缓冲区的尺寸(如“24kb”),则将输出写到不小于该值的缓冲区中),则将输出写到不小于该值的缓冲区中与实现有关;至少与实现有关;至少为为 8KBautoFlush如果值为如果值为“true”,则当缓冲区满时,自动把输出缓冲输出,则当缓冲区满时,自动把输出缓冲输出给客户给客户如果值为如果值为“false”,则当缓冲区满时,会有一个运行时异常,则当缓冲区满时,会有一个运行时异常“true”isThreadSafe如果值为如果值为“true”,则,则JSP引擎会同时
33、向该页面发送多引擎会同时向该页面发送多个客户请求。个客户请求。如果值为如果值为“false”,则,则JSP引擎会对发送给该页面的客引擎会对发送给该页面的客户请求进行排队和处理,并且按照请求被收到的顺户请求进行排队和处理,并且按照请求被收到的顺序,在某个时刻只处理一个请求序,在某个时刻只处理一个请求(库操作)。库操作)。“true”contentType定义定义JSP的字符编码方式和的字符编码方式和JSP页面的应答的页面的应答的MIME类类型。它的形式可以为型。它的形式可以为MIMETYPE或或“MIMETYPE;charset=CHARSET”。MIMETYPE的缺的缺省值为省值为text/h
34、tml;CHARSET的的缺省值为缺省值为ISO-8859-1Info页面信息页面信息,通过页面的通过页面的Servlet.getServletInfo()来获得页来获得页面可以被访问的内容的类型。面可以被访问的内容的类型。无缺省无缺省extends转换成转换成servlet时指定父类时指定父类无缺省无缺省isErrorPage布尔值,为布尔值,为true,jsp容器会自动产生容器会自动产生Exception对象。对象。false由版本确定由版本确定include指令include指令被用来插入文本或者JSP文件,能将一个文件的内容包括在另一个文件中,语法为:该指令的作用是在JSP页面中该指令
35、出现的位置静态的插入一个文件。所谓静态插入,是指当前的JSP页面和被嵌入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新页面转换成Servlet。程序代码程序代码 3-7.jsp程序代码程序代码 nowtime.jsptaglib指令声明JSP文件使用了自定义的标签,同时引用标签库,也指定了它们的标签的前缀。语法格式如下:属性说明如下:l uri:解释为统一资源标记符,根据标签的前缀对自定义的标签进行唯一的命名。l URI可以是URL(Uniform Resource Locator)、URN(Uniform Resource Name)或一个路径(相对或绝对)。l prefix:在自
36、定义标签之前的前缀,比如,在中的public,如果l 这里不写public,则标签moon的定义是非法的。程序代码程序代码 3-8.jspJSP动作 JSP动作向其他服务器对象传输控制权或执行操作,主要包括:、等forword动作标记该动作将当前页面的执行过程终止,忽略它的输出,并且把请求转向一个新的页面。语法为:jsp:forward page=relativeURL|/或者jsp:forward page=relativeURL|jsp:param name=parameterName value=paramterValue|/其中page 属性指定替代地址,可为静态值,也可在请求时计算。
37、程序代码程序代码 3-8.jsp程序代码程序代码 disp.htm注意标签以后的代码,将不能执行。使用jsp:forward 语句时,JSP页面必须使用缓冲机制,不能将buffer属性设为none。否则它将清空缓存里的内容,浏览器里将得不到任何输出。include动作标记可将外部的静态或者动态资源包括在当前页面的输出结果中,动作语法如下:jsp:include page=relativeURL|flush=true/或者jsp:include page=relativeURL|flush=true jsp:param name=parameterName value=paramterValue
38、|/其属性含义如下:l page属性:要插入当前页面的文档属性:要插入当前页面的文档l flush属性:是否刷新当前页面的缓冲器属性:是否刷新当前页面的缓冲器,flush默认为默认为false,应该置为应该置为ture l:指定附加的:指定附加的 request 参数参数程序代码程序代码 3-9.jspparam动作标记 标记用于将附加 request 参数发送至转发的页,可与 和 标记一起使用。语法形式为:其中:l name 属性:指定参数的名称l value 属性:指定参数的值 程序代码程序代码 3-10.jsp程序代码程序代码 forfoward.jspplugin动作标记动作为Web开
39、发人员提供了一种在JSP文件中嵌入客户端运行的Java程序(如:Applet、JavaBean)的方法。该动作将导致在客户端浏览器中运行一个指定的applet或者JavaBean,并且如果在必要的时候还需要下载一个Java插件用来产生客户端浏览器的特别标记object或者embed,当jsp页面把结果发送到浏览器时,标记被替换成或者。程序代码程序代码 3-11.jsp程序代码程序代码 showmsg.java内置对象为了便于Web应用程序的开发,在JSP页面中内置了一些默认的对象,这些对象不需要预先声明就可以在脚本代码和表达式中直接使用。这些内置对象也称为隐含对象。JSP提供了以下9种 预先定
40、义的内置对象。隐含对象说明类 型request客户端的请求,如果客户的请求中有参客户端的请求,如果客户的请求中有参数,则该对象就有一个参数列表。数,则该对象就有一个参数列表。javax.servlet.http.HttpServletRequestresponse处理服务器端对客户端的一些响应处理服务器端对客户端的一些响应javax.servlet.http.HttpServletResponsepageContext提供了访问和放置页面中共享数据的方式提供了访问和放置页面中共享数据的方式javax.servlet.jsp.PageContextsession保存单个用户访问时的一些信息保存单
41、个用户访问时的一些信息javax.servlet.http.HttpSessionapplication保存网站的一些全局变量保存网站的一些全局变量javax.servlet.ServletContextout把信息回送到客户端的浏览器中把信息回送到客户端的浏览器中javax.servlet.jsp.JspWriterconfig代码段的配置对象代码段的配置对象javax.servlet.ServletConfigpageJSP页面本身页面本身java.lang.ObjectexceptionJSP页面运行时抛出的异常页面运行时抛出的异常java.lang.ThrowableRequest对象
42、 Request对象是实现 javax.servlet.HttpServletRequest 接口的类的一个实例,代表客户端的请求信息,主要用于接受客户端通过HTTP协议传送给服务器端的数据,比如:JSP文件目录、客户端的地址、以及服务器的端口等。程序代码程序代码 3-12.jsp方法名语法功能getParmaeterString getParameter(String usemame1);String getParameter(String userkey1);返回特定请求参数名的值,如果这个参数不存在则返返回特定请求参数名的值,如果这个参数不存在则返回空值。请求参数是指随请求一起发送的特殊
43、信回空值。请求参数是指随请求一起发送的特殊信息息getAttributeObject getAttribute(String name)以对象的形式返回特定名称的属性值。这个方法允许以对象的形式返回特定名称的属性值。这个方法允许Servlet引擎给出一个客户请求的特定信息。如果引擎给出一个客户请求的特定信息。如果所给名称的属性不存在,则返回空值。所给名称的属性不存在,则返回空值。getAttributeNamesEnumeration getAttributeNames()()返回一个请求中有效属性名的枚举。如果请求中不包返回一个请求中有效属性名的枚举。如果请求中不包含有效属性则返回一个空的枚
44、举对象。含有效属性则返回一个空的枚举对象。getContentLengthint getContentLength()()以字节为单位,返回一个请求中所包含内容的长度,以字节为单位,返回一个请求中所包含内容的长度,从请求对象的输入流中获得。从请求对象的输入流中获得。getContentTypeString getContentType()()返回一个请求中内容的返回一个请求中内容的MIME类型,如果类型未知,类型,如果类型未知,则为空值。则为空值。getCharacterEncodingString getCharacterEncoding()()返回一个字符串,表示字符编码方式。当返回一个字
45、符串,表示字符编码方式。当request没没有使用编码方式时,字符串为空。有使用编码方式时,字符串为空。getParameterNamesEnumeration getParameterNames()()返回一个包含字符串对象的枚举,其中的字符串标示返回一个包含字符串对象的枚举,其中的字符串标示request对象中的参数名。如果一个对象中的参数名。如果一个request对象中对象中没有参数或输入流为空时,则返回一个空枚举对没有参数或输入流为空时,则返回一个空枚举对象。象。getParameterValuesString getParameterValues(String name)返回值:返回
46、指定参数的所有值。返回值:返回指定参数的所有值。name为字符串,表示被请求的参数名。为字符串,表示被请求的参数名。返回针对一个请求参数的所有取值返回针对一个请求参数的所有取值的字符串数组,若参数不存在,则的字符串数组,若参数不存在,则返回空值。可利用此方法获得查询返回空值。可利用此方法获得查询字符串或字符串或post方法发送的方法发送的form数据数据中包括的值。若参数是单值的,数中包括的值。若参数是单值的,数组长度为组长度为1getServerPortint getServerPort()()返回接受此请求的端口号返回接受此请求的端口号getServerNameString getServ
47、erName()()返回接受此请求的服务器主机名返回接受此请求的服务器主机名getRemoteAddrString getRemoteAddr()()返回发送返回发送request的客户的的客户的IP地址地址getRemoteHostString getRemoteHost()()用以返回发送请求的客户机的全名用以返回发送请求的客户机的全名getRealPathString getRealPath(String path)用以获取实际路径用以获取实际路径setAttributesetAttribute(String str,Object obj)参数参数str,是一个标识属性名的字符串;,是一
48、个标识属性名的字符串;obj,是一个包含请求上下文的对象。,是一个包含请求上下文的对象。用以保存一个属性到请求上下文中,用以保存一个属性到请求上下文中,请求之中的属性被重置。请求之中的属性被重置。getCookiesCookie getCookies()()返回浏览器伴随此次请求所发送的所有返回浏览器伴随此次请求所发送的所有Cookie。如果浏览器未发送如果浏览器未发送Cookie,则返回空值。,则返回空值。getQueryStringString getQueryString()()返回一个字符串,表示请求返回一个字符串,表示请求URL后的查询字符串,后的查询字符串,若没有查询字符串,则返若
49、没有查询字符串,则返I空串。空串。getRequestURlString getRequestURI()()返回一个字符串,表示在返回一个字符串,表示在HTTP请求中获得第一行请求中获得第一行请求请求URL中的从协议名到询字符串之间的部分。中的从协议名到询字符串之间的部分。getSessionHttpSession getSession()()获得当前关联到请求的获得当前关联到请求的HttpSession对象对象Response对象 Response对象实现HttpServletResponse接口,可对客户的请求做出动态的响应,向客户端发送数据,如Cookie、HTTP文件头信息等,一般是H
50、ttpServlet.Response类或其子类的一个对象。程序代码程序代码 3-13.jsp程序代码程序代码 3-14.jsp方法用法addCookie(Cookie cookie)添加一个添加一个Cookie对象,用来保存客户端的用户信息,用对象,用来保存客户端的用户信息,用request的的getCookies()方法可以获得这个方法可以获得这个CookieaddHeader(String name,String value)添加添加HTTP文件头,该文件头,该header将会传到客户端去,如果有同将会传到客户端去,如果有同名的名的header存在,那么原来的存在,那么原来的header