第一章JSP概述
1.1 什么是JSP
JSP(JavaServer Pages) 是由Sun公司倡导、多家公司参与, 于1999年推出的一种动态网页技术标准.它是基于Java Servlet的WEB开发技术,利用这一技术可以开发动态的、高性能的WEB应用程序.在HTML文件中加入Java程序片段和JSP标记,就构成了JSP网页.在技术方面, JSP与ASP非常相似.
1.2 JSP的优势
JSP技术主要有以下优点:
1.JSP代码跨平台, 即一次编写,处处运行
众所周知,由于微软的垄断性,它的产品可移植性做得十分差,ASP也不例外,在Windows平台下编写的ASP代码,很难拿到别的平台下运行,相反,JSP使用的是Java 语言,它继承了Java语言的特点——―一次编写,处处运行‖,这种概念正越来越深远地影响着因特网行业的交互式Web页面的设计理念。JSP页面可以非常容易地跨平台、跨Web 服务器软件来设计和开发源码。
2.JSP组件跨平台
JSP组件(企业JavaBeans、JavaBeans或定制的JSP标签)都是跨平台可重用的。企业JavaBeans组件可以访问传统的数据库,并能以分布式系统模式工作于Solaris、Linux、UNIX和Windows平台。
3.支持多种网页格式
目前, JSP技术支持的网页格式还没有一个明确的标准。一般来说,JSP技术既可以支持HTML/DHTML的传统浏览器文件格式,又可以支持应用于无线通信设备如移动电话、PDA等设备进行网页预览的WML文件格式,还可以支持其他一些B2B电子商务网站应用的XML格式。
4.JSP标签可扩充性
尽管ASP和JSP都使用标签与脚本技术来制作动态Web网页,JSP技术允许开发者扩展JSP标签,定制JSP标签库,所以网页制作者充分利用与XML兼容的标签技术强大的功能,大大减少对脚本语言的依赖。由于定制标签技术,使网页制作者降低了制作网页的复杂度。
5.健壮性与安全性
由于JSP页面使用的脚本语言是java语言, 因此,它就具有java技术的所有好处,包括健壮的存储管理和安全性.
1.3 JSP的劣势
1. JSP技术极大的增加了产品的复杂性.为了获得系统的跨平台功能和产品伸缩能力,java系统开发了多种产品,如,JRE、JDK、J2EE、EJB、JSWDK、JavaBeans ,只有有效地将它们组合在一起,才能产生强大的功能.
2. java的高效率运行需要占用大量的内存和硬盘空间. 一方面,java的高速运行是通过 .class文件常驻内存来实现的.另一方面,还需要硬盘空间来存储一系列的.java 文件和.class文件以及对应的版本文件.
3. JSP程序调试困难.JSP页面执行时, 首先被转换为 .java文件(Servlet), 然后将.java文件编译为字节码文件. 这样,出错信息实际上指向的是转换后的那个.java文件(Servlet), 而不是JSP本身.
1.4 JSP与ASP比较
总的来说,JSP和ASP在技术方面有许多相似的地方。它们都是基于Web的应用程序开发方案,它们都是在Web服务器端执行的程序.ASP在网页制作中占据了一定的地位,但是其本身还是有很大缺点. JSP出现在ASP之后,兼顾了ASP的很多优点,同时也克服了ASP的一些缺点,是一种比较成热的网页开发程序语言。以下是五个方面的比较:
1. 具有相同的程序结构:开发的WEB应用程序,都是将用户界面和业务逻辑分开.
2. 采用不同的编程语言: JSP采用的是java语言; ASP采用的是JavaScript或VBScript脚本语言.
3. 可支持的WEB服务器:JSP支持流行的Web服务器,如Apache,Resin,Tomcat和Microsoft lIS. 而ASP只支持Microsoft IIS或者Personal WebServer。
4. 可支持的操作系统平台: JSP与平台无关,可以在所有支持Java的平台上运行,包括Linux,Unix,Windows及WindowsNT.而ASP只支持Windows.
1.5 JSP、ASP测试报告
?在ASP盛行的今天,JSP在执行效率方面是否有优势? 下面是第三方的测试数据:
?首先测试的是JSP,测试采用20000*20000次循环运算,该程序只用了不到3秒
的时间就运行结束了。
?下一步测试的是ASP,测试采用20000*20000次循环运算,运行时间竟然达到6
分零7秒
?另外,数据库的链接速度也是影响浏览速度的重要环节,接下来我们又对数据库链
接做了测试。测试程序在此省略.
?对Oracle 8进行1000次Insert,Update,Select,Delcte操作,JSP需
要13秒,ASP需要73秒.
1.6 JSP技术前景
目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet方案。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet
的Web Sphere。它们都是通过CGI来提供支持的。但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统软件。
本章小结
JSP是Sun公司推出的一种Web开发技术。JSP网页由HTML标记、JSP标签和Java 程序片段组成。
与ASP相比,JSP在可移植性,平台独立性,及程序性能具有更大的优越性。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet技术,JSP应该是未来发展的趋势。
心得体会
(1)JSP与ASP比较:JSP技术比ASP技术要复杂得多,功能也相对强大。但也基于这个原因ASP相对JSP要容易上手,运行速度也比较快。考虑到成本问题,一般开发中小型网站多数选用ASP,但开发的是大型或是超大型,JSP的优势就比较明显了。
(2)Java语言与JavaScript脚本语言的区别:Java与JavaScript分别是两个公司开发的两个不同的产品,作用与用途不一样。Java是Sun公司推出的面向对象的程序设计语言;JavaScript是Netscape公司为扩展Netscape Navigator功能的产品。简单来说,JavaScript不是Java的子集。
第二章JSP相关知识
2.1 应用程序体系结构
随着WEB技术的出现。早期网络的集中计算逐渐被分布式计算所代替。WEB技术是一种分布式计算技术,使用这种技术构建企业应用时,通常需要开发大量的程序,把这些程序分布在不同的计算机上,在应用中承担不同的职责。如,有的程序展示用户界面,有的程序进行逻辑计算,有的程序进行数据处理。企业级应用系统通常分成两层、三层或N层架构。下面介绍应用程序的三层和二层架构模型。
2.1.1 三层架构模型
?按照程序承担的不同角色,把应用程序分为三层:
1.数据表示层:提供用户数据输入界面和数据展示界面,运行在客户机上。
2.逻辑计算层:提供数据计算功能,运行在应用服务器上。
3.数据处理层:提供数据库处理功能,运行在数据库服务器上。
1 三层架构模型
应用程序的三层架构模型,如图2-1所示。
数据展示层逻辑计算层数据处理层客户机应用服务器数据库服务器
图2-1三层架
?客户机:本地用户使用的计算机,利用客户软件请求应用服务器提供服务。
?应用服务器:接受客户请求进行数据计算,并把计算结果返回给客户。JSP页面使
用的应用服务器,一般由JSP引擎、Servlet引擎和WEB服务器组成。
?数据库服务器:提供数据处理和事务处理.当前流行的数据库服务器有Oracle、
Infomix,、Sysbase,、Sqlserver2000.
2.B/S/S架构和C/S/S架构
根据客户端软件的运行机制不同,三层架构又分为C/S/S架构和B/S/S架构.在WEB 应用中,最早流行的是C/S/S架构,后来逐渐被B/S/S架构代替.采用C/S/S架构,则每台客户机都必须安装客户端软件,安装维护困难,成本高;采用B/S/S架构,客户端软件安装在应用服务器上,安装维护方便,成本低。
?客户端:简写C(Client),展示数据层的软件安装在客户机上,运行时不需要浏
览器支持.
?浏览器:简写B(Browser),展示数据层的软件部署在应用服务器上,通过客户请
求,下载到客户机的浏览器上执行,需要浏览器支持.
?服务器:简写S(Server),表示应用服务器或者数据库服务器.
2.1.2 二层架构模型
?在二层架构模型中,由同一程序来实现逻辑计算层与数据处理层,即,把逻辑层与
数据处理层合并为一层.这时,应用服务器和数据库服务器可能是同一台计算机.根
据客户端软件的性质,可分为C/S 结构和B/S 结构.
? 下面是二层架构模型,如图2-2所示
2.1.3 JSP 技术支持的架构模型
? JSP 技术开发的程序结构只能是B/S/S 结构或B/S 结构。下面是JSP 技术支持的
一般层次模型,如图2-3所示。
? 通常情况下,JSP 页面由展示用户界面的HTML 标记和进行数据计算两部分组成,
因此数据展示层代码和数据计算代码可能处在同一JSP 页面,它们都部署在WEB 服务器端。
? JSP 页面的三种形式:
1. JSP 页面=HTML 标记+java 程序片
2. JSP 页面=HTML 标记+Servlet 模块
3. JSP 页面=HTML 标记+Bean
一般来说,java 程序片、Servlet 模块实现逻辑计算功能,Bean 实现数据处理功能,HTML 标记实现数据展示功能。JSP 页面中的java 程序片最终被JSP 引擎转译为Servlet 模块,当客户发出Servlet 请求时,由Servlet 引擎将这些应用Servlet 模块载入内存运行,以处理客户请求。
2.2 应用程序服务器
上面介绍了程序体系结构,下面讨论程序运行的主要平台,即应用程序服务器的组成和作用。JSP 技术支持的应用服务器一般由JSP 引擎、Servlet 引擎和WEB 服务器组成。JSP 引擎将JSP 页面转译并编译为相应的字节码文件(Servlet 应用模块),Servlet 引擎将客户的请求传递给相应的Servlet 模块;WEB 服务器接受客户的请求,并把处理的结果返回给客户。
2.2.1 web 服务器
? web 服务器是一种请求/响应模式的服务器。即由客户机向服务器提出服务请求,
服务器接到请求后,进行服务处理,将处理的结果返回给客户机(响应)。客户机与服务器间的通讯协议是HTTP 协议。
逻辑计算与数据
客户机 应用服务器
图2-2二层架构模型
图2-3 JSP 技术支持的一般模型
? 1.请求/响应模式,如图2-4所示
2.2.1 web 服务器
2.流行的web 服务器
WEB 服务器有很多,流行的WEB 服务器有WebLogic 、WebSphere 和Tomcat 三种。这三种服务器都带有JSP 引擎和Servlet 引擎。
2.2.2 JSP 引擎和Servlet 引擎
? JSP 引擎和Servlet 引擎都是系统模块(为应用程序提供服务的模块),也属于
Servlet 模块,它随着WEB 服务器启动载入内存,也随着WEB 服务器关闭而释放。Servlet 模块分两类:一类是应用Servlet,它是JSP 页面转译并编译的结果,即应用程序员编写的Servlet ;另一类是系统Servlet,如JSP 引擎、Servle 引擎。
? JSP 引擎 的作用是当客户向服务器发出JSP 页面请求时,将JSP 页面转译为
Servlet 源代码,然后调用javac 命令,把Servlet 源代码编译为相应的字节码,并保存在相应目录中。
? Servlet 引擎的作用是管理和加载应用Servlet 模块.当客户向相应的应用
Servlet 发出请求时,Servlet 引擎把应用Servlet 载入虚拟机运行,由应用Servlet 处理客户请求,将处理结果返回客户。
2.3 HTTP 协议
客户与WEB 服务器通讯是通过HTTP 协议来完成的。HTTP 协议是基于请求/响应模式,即客户与服务器的每一次交互往往始于客户提出一个请求,服务器给出响应后结束。客户向服务器传递的信息称为HTTP 请求包,服务器向客户传递的信息称为HTTP 响应包.
1.HTTP 请求包
下面是HTTP 请求包的主要组成:
? 请求方法:要求服务器执行的动作或者服务。例如,get 请求,表示客户希望下载
资源。
? URI :资源所在的位置.
? MIME 格式信息:要求客户向服务器发送信息时应采用的文件类型。
? 协议版本号:请求包所用的HTTP 协议版本,通常为HTTP/1.0或HTTP/1.1.
2.HTTP 响应包
下面是HTTP 响应包的主要内容
? 状态行:表明服务器处理客户请求是否成功的信息.
? MIME 格式信息:要求服务器向客户传递信息时采用的文件类型.
3.HTTP 协议的事务处理过程
HTTP 的一次简单的事务处理包括5个步骤:
① 建立连接
HTTP 协议是一种无状态协议,对于每一次请求都要建立一个新的连接.
② 发送请求
客户向服务器发送一个请求,请求某种类型的服务.
W E B 服务器 ②处理 客户机 ①请求
③响应
③提供服务
服务器为这个HTTP请求提供服务,即开发人员编写一个Servlet模块来处理这个HTTP请求.
④发送响应
服务器对请求处理完以后,将处理结果返回给客户。
⑤关闭连接
客户的请求、服务器的响应处理完后,关闭连接。
HTTP请求包中可使用的请求方法有GET、POST、PUT、DELETE、OPTIONS。相应地,处理这些请求的Servlet模块中也有以上几个处理方法,由这些方法的代码部分来处理客户的请求。
本章小结
WEB应用程序体系结构分为二层架构、三层架构及N层架构。JSP应用程序运行的服务器,即应用服务器主要由web服务器、JSP引擎和Servlet引擎构成。客户端与服务器端通讯是通过HTTP协议来完成的。
心得体会
(1)JSP技术是应用在Web上,基本都是用B/S(Browser/Server)架构。
(2)通过了解应用程序体系结构,可以让我们进一步了解JSP的运行机制,真正了解JSP 运行的平台, 通过学习HTTP协议,让我们懂得客户与服务器之间是如何通讯的。
第三章JSP运行环境
3.1 安装和配置JDK
JDK(Java Developer Kit, Java开发工具包)是Sun公司提供的Java开发工具。开发JSP必须使用JDK工具包,它包含Java编译器、解释器和虚拟机(JVM),为JSP页面文件、Servlet程序提供编译和运行环境。JSP引擎使用JDK提供的编译器,将Servlet 源代码文件编译为字节码文件。Servlet引擎使用JDK提供的虚拟机(JVM)运行servlet 字节码文件。
3.1.1支持JDK的操作系统
Java语言是一种跨平台的语言,几乎所有的操作系统支持JDK工具包,如Windows2000、Windows NT、Linux、Unix等操作系统都支持JDK。
3.1.2 下载JDK
?JDK是Sun公司免费提供的Java开发工具,请读者在Sun公司网站下载。下面是
下载J2SE1.4.2版本的JDK工具包网址:
?https://www.doczj.com/doc/fe9691089.html,/products/archive/j2se/1.4.2/index.html
?下载的文件名是j2sdk-1_4_2-windows-i586.exe,大小约为43Mb。
3.1.3 Windows2000下安装和配置JDK
?下载JDK后就可以安装和配置JDK.
1.安装JDK
2. 配置环境变量
安装完JDK后,需要配置环境变量。配置环境变量目的有三个:第一,让操作系统自动查找编译器、解释器所在的路径;第二,设置程序编译和执行时需要的类路径;第三,Tomcat 服务器安装时需要知道虚拟机所在的路径。
3.2 安装和配置WEB服务器
WEB服务器是JSP网页运行的不可缺少的支撑平台,它的主要功能是对客户的请求进行处理和响应.WEB服务器有多种,本书选用的WEB服务器是Tomcat5.0.28
3.2.1 下载Tomcat
Tomcat服务器是Sun公司在JSWDK(JavaServer Web Development Kit)的基础上发展而来的一个优秀的Web服务器,它是由JavaSoft和Apache开发团队共同开发的产品.Tomcat服务器自带JSP引擎和Servlet引擎.读者可以下载版本号是5.0.28的Tomcat。下载网址是:
https://www.doczj.com/doc/fe9691089.html,/dist/jakarta/tomcat-5/v5.0.28/bin/。
3.2.2 Windows2000下安装Tomcat
下载完Tomcat后就可以安装Tomcat.安装Tomcat时,系统会自动安装Jsp引擎和Servlet引擎.
安装完Tomcat后,下面测试Tomcat是否安装成功。打开IE浏览器,在地址栏内输入‖http://localhost:8080‖或者输入‖http://127.0.0.1:8080‖。其中,‖localhost‖或‖127.0.0.1‖表示本地主机,‖8080‖表示访问的Tomcat服务器的端口号,‖http://localhost:8080‖表示通过8080端口号访问本地主机上的Tomcat 服务器。如果显示如图3-20所示的页面,表示Tomcat安装成功。否则需要重新安装。3.2.3 Tomcat的目录结构
?在编写JSP页面前,首先了解Tomcat的目录结构和作用。Tomcat的目录结构如
表3-1所示。(略)
1.注意\common、\server、\shared三个目录的区别
?\common目录下的文件可以被Tomcat服务器系统程序和所有JSP页面程序访问。
?\server目录下的文件只能被Tomcat服务器系统程序访问。
?\shared目录下的文件只能被JSP页面程序访问
2.Tomcat默认web服务目录
?Tomcat服务器的默认web服务目录是:\Tomcat 5.0\webapps\ROOT。通常将
JSP页面程序保存在该目录下。用记事本编辑一页面程序example.jsp,代码如
下:
<%
out.print("I am example program !") ;
%>
?将example.jsp程序拷贝到 \Tomcat 5.0\webapps\ROOT目录下,在浏览器
地址栏输入以下网址:http://localhost:8080/example.jsp ,运行结果如
图3-21所示。
3.建立自已的web目录
?开发人员可以将JSP页面程序部署在Tomcat服务器的默认web目录下,也可以
部署在自已创建的web目录下。下面是创建web目录的步骤:
1).在服务器上创建自已的目录
?如,创建一目录: E:\test\10
2).配置web目录
?用记事本打开 \Tomcat 5.0\conf目录下的文件server.xml, 在该文件末尾,
有一标识符― ―,在该标识符前面添加以下语句:
该语句的作用是将目录 "e:/test/10" 设置为web目录,将该目录下JSP页面程序
的执行路径设置为 "/10" 。属性docBase的值为"e:/test/10" 指定web目录的物理
路径,属性path的值为‖/10‖,它指定执行"e:/test/10"目录下JSP页面程序时的
路径(可自行设定)。
现在,建立了自已的web目录 "e:/test/10" ,并修改和保存了server.xml文件。将example.jsp页面程序拷贝到"e:/test/10"目录下面,重新启动Tomcat服务,最后,在浏览器地址栏输入以下网址:http://localhost:8080/10/example.jsp,运
行结果如图3-22所示。
3.2.4 配置Tomcat
在默认情况下,Tomcat服务器的服务端口号是‖8080‖,默认web服务目录是‖\Tomcat 5.0\webapps\ROOT‖。在实际应用中,有时需要更改这两个配置:一个
是改变服务端口号,一个是改变Web默认服务目录.
1.修改服务端口号
假设希望将服务器端口号8080改为8090。使用记事本或其它文本编辑器打开server.xml文件,定位到94行的port=‖8080‖处,将此处修改为port=‖8090‖。
修改完毕,保存该文件,然后重启Tomcat服务器,这样Tomcat就使用8090端口提供
服务了。
?说明:本书后面全部程序均在8090端口下运行。
2.修改Tomcat默认web服务目录
?假设希望将Tomcat默认web服务目录设置在c:/jsp目录下。使用记事本或其它
文本编辑器打开server.xml文件,定位到Host name处,其语句如下:
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> ?将appBase的属性值‖webapps‖改为―c:/jsp‖,修改后的语句如下: unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 然后,在‖c:/jsp目录下创建子目录‖ROOT‖,在‖ROOT‖目录下建立子目录‖WEB-INF‖ (注意,目录是区分大小写的) ,完成以上步骤后, Tomcat的默认web 服务目录已改为:‖c:\jsp\ROOT‖。将example.jsp文件拷贝到该目录下,在浏览器地址栏输入以下网址:http://localhost:8090/example.jsp ,测试新的默认web 目录。 ?注意:server.xml修改后,必须重新启动Tomcat服务器,才能使修改生效。 3.2.5 创建自已的运行环境 本书中,Tomcat服务端口号统一使用‖8090‖,并创建8个web服务目录,用于保存各章的JSP页面程序。 测试web目录 ⑴.用记事本写一简单程序。程序名称是ex3_1.jsp。
<%
out.print("Hello World!") ;
%>
⑵.将程序保存在web服务目录―e:/test/3‖下
⑶.在浏览器中输入―http://localhost:8090/3/ex3_1.jsp‖
3.3 JSP页面执行流程
?一个JSP页面有多个客户访问,下面是第一个客户访问JSP页面时,JSP页面的
执行过程。
1.客户通过浏览器向服务器端的JSP页面发送请求
2.JSP引擎检查JSP文件对应的servlet源代码是否存在,若不存在转向第4步,否则执行下一步
3.JSP引擎检查JSP页面是否修改,若未修改,转向第5步,否则执行下一步。
4.JSP引擎将JSP页面文件转译为servlet源代码(相应的.java代码)
5.JSP引擎将servlet源代码编译为相应的字节码(.class代码)
6.JSP引擎加载字节码到内存
7.字节码处理客户请求,并将结果返回给客户。
下面是JSP页面的执行流程如图3-24所示:
?在不修改JSP页面的情况下,除了第一个客户访问JSP页面需要经过以上几个步骤
外,以后访问该JSP页面的客户请求,直接被发送给JSP对应的字节码程序处理,并将处理结果返回给客户。在这种情况下,JSP页面既不需转译也不需编译,JSP
页面执行效率非常高。
?注意:要使修改后的JSP页面有效,必须重新启动服务器,以便重新加载修改后的
JSP页面。
以3.2.5节的ex3_1.jsp文件为例,说明JSP页面转译和编译后文件的保存目录和JSP页面对应Servlet源代码形式。
我们知道,Ex3_1.jsp保存在―e:/test/3‖目录下,经过JSP引擎转译后的servlet 源代码和编译后的字节码文件分别是ex3_005f1_jsp.java和ex3_005f1_jsp.class,它们由服务器自动部署在\Tomcat 5.0\work\Catalina\localhost\3\org\apache\jsp目录下。
本章小结
本章首先介绍了JDK开发包的安装和配置,随后介绍了Tomcat服务器的安装和配置,接着介绍了web默认目录和新建web服务目录的步骤,最后介绍了JSP页面执行流程。为后面的学习打下了基础。
心得体会
(1)JSP的配置环境比较复杂,安装Tomcat服务器时选择JVM路径要小心,有时候会默认在..\jre的目录下,这样会导致以后的调试不成功。应该改成JDK的目录下,例如:C:\j2sdk1.4.2
(2)设置server.xml后,必须重新启动Tomcat服务器才能生效。
(3)Java语言是区分大小写的,刚上手时要注意。
第四章JSP页面组成
4.1 Java程序片
一般来说,使用java程序片实现逻辑计算。Java程序片有三种形式:实体定义、表达式和java代码块。使用实体前,首先要定义实体。下面是java程序片的定义和使用的语法格式。
实体定义
1. 实体定义包括:变量定义、方法定义、类定义。
⑴.变量定义
可以在‖<%!‖ 和‖%>‖标记符之间定义变量,在这种标记符之间定义的变量,通过JSP引擎转译为java文件时,成为某个类的成员变量,即全局变量。变量的类型可以是java语言允许的任何数据类型。这些变量在所定义的JSP页面内有效,即在本JSP页面中,任何java程序片中都可以使用这些变量。
例如:
<%!
int x, y=120,z;
String str=‖我是中国人‖;
Date date;
%>
在‖<%!‖ 和‖%>‖标记符之间定义了5个变量,这5个变量都是全局变量。
(2).方法定义
在‖<%!‖ 和‖%>‖标记符之间定义方法。这些方法在所定义的JSP页面内有效,即在本JSP页面内,任何java程序片都可以调用这些方法。例如,定义一个方法,求n!.
<%!
long jicheng(int n) {
long zhi=1;
for (int i=1;i<=n;i++) zhi=zhi*i;
return zhi ;
}
%>
(3).类定义
在‖<%!‖ 和‖%>‖标记符之间定义类。这些类在所定义的JSP页面内有效,即在本JSP 页面内,任何java程序片都可以使用这些类创建对象。例如,定义一个圆类,求圆的面积和周长.
<%!
public class Circle {
double r;
Circle(double r){
this.r=r;
}
double area(){
return Math.PI*r*r;
}
double zhou(){
return Math.PI*2*r;
}
}
%>
2.表达式
可以在‖<%=‖ 和‖%>‖标记符之间插入一个表达式,这个表达式必须能计算出数据值。(注意:‖<%=‖是一个完整的符号,‖<%‖ 和‖=‖不能有空格)。表达式的值由服务器负责计算,并将计算结果以字符串形式发送到客户端显示。例如:求x=a+b+c的值。<%!
int a=30;
int b=40;
int c=50;
%>
<%= a+b+c %>
表达式―<%= a+b+c %> ―的作用,相当于先计算‖a+b+c‖的值,然后把结果输出到客户端。
3. Java代码块
可以在‖<%‖和‖%>‖标记符之间包含多个java语句,构成java代码块。一个JSP 页面可以有许多java代码块,JSP引擎按顺序执行这些java代码块。在java代码块中定义的变量通过JSP引擎转译为java文件时,这些变量成为某个方法的变量,即局部变量。局部变量在本JSP页面内的所有java代码块中起作用(JSP页面转译为servlet源代码时,JSP页面内的所有java代码块合并到同一方法中)。
[例子 4.1] 计算并输出表达式的值。程序ex4_1.jsp代码如下:
<%!
int d; //定义全局变量d
%>
[例子 4.2] 统计访问某页面的客户人数
问题分析
由于多个客户点击同一页面文件,只要在JSP页面程序中定义一个全局变量,作为统计客户的计数器,每当页面被点击执行时,使该变量加1。然后输出该计数器的值.
程序结构
程序名:ex4_2.jsp
程序算法
1.定义全局变量count并初始化.即count=0
2.页面每次被点击时使变量count加1,即count++
3.把计数器的值输出到客户端,即 <%=count %>
程序代码
<%@ page contentType="text/html;charset=GB2312"%>
<%!
int count=0;
%>
<%
count++;
%>
您是第<%=count %>个访问本站的客户。
4.1.2 求N!
[例子 4.3] 求10!,并输出该值。
问题分析
首先定义一个求N!的方法,然后通过java代码调用该方法计算10!的值,并输出到客户端
程序结构
程序名:ex4_3.jsp
程序算法:
1.定义方法long jiecheng(int n),该方法求n!。
2.调用方法jiecheng(10),计算10!的值。
3.通过表达式输出10!的值,即 <%= jiecheng(10)%> 。
程序代码:
<%@ page contentType="text/html; charset=GB2312" %>
<%!
long jiecheng(int n)
{
long zhi=1;
for (int i=1;i<=n;i++)
zhi=zhi*i;
return zhi ;
}
%>
10!的阶乘是:<%=jiecheng(10) %>
4.1.3 计算圆的面积和周长
[例子4.4] 由客户提供圆的半径,计算圆的面积和周长
问题分析:
可以先定义一个圆类,该类包含计算面积和周长的方法。通过表单获得用户输入的圆的半径r,然后以半径r为参数创建一个圆对象,计算圆的面积和周长,最后输出计算结果。程序结构
程序名:ex4_4.jsp
程序算法:
1.定义圆类Circle。
2.使用表单创建用户输入界面,获得圆的半径r
3.调用构造方法创建一个圆,计算圆的面积和周长
4.输出圆的面积和周长
4.1.4 求1到N的连续和
[例子4.5]求1到100的连续和,并输出到客户端。
问题分析
可以先定义一个求和的方法,然后调用该方法计算结果,并将结果输出到客户端。
程序结构
程序名:ex4_5.jsp
程序算法
1.定义求和方法: long continueSum(int n)
2.调用求和的方法计算: sum=continueSum(100)
3.输出 sum
4.1.5 输出表达式
[例子4.6] 计算并输出表达式
程序结构:
程序名:ex4_6.jsp
程序代码:
<%@ page contentType="text/html;charset=GB2312" %>
3的平方是:
<%=Math.pow(3,2)%>
5的平方根等于
<%= Math.sqrt(5) %>
4.2 JSP标签
一般使用JSP标签控制页面属性。JSP标签分为JSP注释、指令标签和动作标签三类。指令标签有page、include和taglib。动作标签主要有include、param、forward、plugin、useBean。
语法格式
1.JSP注释
注释本身不产生语句功能,只用来增强JSP文件的可读性,便于用户维护JSP文件。JSP 注释分两种:HTML注释和JSP注释。
(1)HTML注释
JSP页面使用这种注释时,客户端通过浏览器查看JSP源文件时,能够看到HTML注释文字。其语法格式是:
(2)JSP注释
使用这种注释时, JSP引擎编译该页面时会忽略JSP注释。下面是其语法格式:
<%-- 要注释的内容、文字、说明写在这里 --% >
2. page指令标签
page指令主要用来定义整个JSP页面的各种属性。一个JSP页面可以包含多个page 指令,指令中,除了import属性外,每个属性只能定义一次,否则JSP页面编译将出现错误。下面是page指令格式:
<%@ page
[language=‖java‖]
[extends=‖classname‖]
[import=‖packname/classname‖]
[session=‖true/false]
[buffer=‖none/sizekb]
[autoFlush=‖true/false‖]
[isThreadeSafe=‖true/false‖]
[info=‖info_text‖]
[errorPage=‖error_url‖]
[isErrorPage=‖true/false‖]
[contentType=‖MIME_type‖]
[pageEncoding=‖ ―]
%>
本标签由多个属性名=‖属性值‖对构成,通过这种方式设置页面的属性。
?language 属性
–用来设置JSP网页使用的程序语法,目前JSP只支持Java语言.
?import 属性
–加载非默认的Java包或类。例如JavaBean等
?contentType 属性
–设置JSP网页的文件格式与编码所使用的字符集。
?session 属性
–值可以为true或false,用来设置JSP网页是否使用内建的session 对象与功能,默认为true.
?buffer 属性
–设置JSP网页使用的缓冲区大小,此属性的默认值为8kb,设置时可以是auto,或大于8kb的值。
?autoFlush
–值为true或false,表示是否在缓冲区中的存储窨已满时,自动将信息输出至客户端,默认值为true.
?info 属性
–设置一个代表目前这个JSP网页信息,设置为一字符串,可以程序中使用getServletInfo()方法来取得。
?extends 属性
–设置JSP程序解释成servlet后所继承的父类,一般不需要设置。
?errorPage
–可以在每个JSP网页中设置errorPage=―error.jsp― ,表示有异常错误时,错误信息由error.jsp来显示,通常为相对路径。
?isErrorPage
–设置网页是否可显示其他网页所产生的异常信息,默认值为false。例如:在error.jsp页面中要设置其属性为true,表示本页为显示异常错误信
息的页面。
3. include指令标签
?该指令标签的语法格式如下:
<%@ include file=‖文件名字‖ %>
?该指令标签的作用是在该标签的位置处,静态插入一个文件。所谓静态插入指用被插
入的文件内容代替该指令标签与当前JSP文件合并成新的JSP页面后,再由JSP引擎转译为java文件。
?被插入的文件要求满足以下条件:
(1) 被插入的文件必须与当前JSP页面在同一WEB服务目录下。
(2) 被插入的文件与当前JSP页面合并后的JSP页面必须符合JSP语法规则。
?例如, 下面的程序是实现相同功能的两种程序结构:第一种程序结构中,使用了
include指令标签,即在example4_1.jsp页面中静态插入一个Computer.jsp 文件。第二种程序结构中(example4_1_1.jsp),没有使用include指令标签。
下面是实现这两种程序结构的代码。
第一种程序结构
本程序由两个文件组成,它们是example4_1.jsp页面和Computer.jsp页面。
第二种程序结构
本程序直接将example4_1.jsp页面内容和Computer.jsp页面内容合并在一起,构成页面example4_1_1.jsp。
5. include动作标签
include动作标签的语法格式如下:
或者
该标签的作用是当前JSP页面动态包含一个文件,即将当前JSP页面、被包含的文件各自独立转译和编译为字节码文件。当前JSP页面执行到该标签处时,才加载执行被包含文件的字节码。
6. param动作标签
? param动作标签的语法格式是:
?该标签经常与jsp:incluede、jsp:forward、jsp:plugin标签一起使用, 将
param标签中的变量值传递给动态加载的文件。
7. forward动作标签
forward动作标签的语法格式:
或者
该指令的作用是:当前页面执行到该指令处后转向其它JSP页面执行。
8. plugin动作标签
plugin动作标签的语法格式:
该动作标签指示JSP页面加载 Java plugin 插件,该插件由客户负责下载,并使用该插件运行java applet小应用程序。
9.useBean动作标签
该标签创建并使用一个javaBean,在第8章介绍。
4.2.1 计算三角形面积并对程序进行注释
[例子4.7]由用户输入三条边的长度,判断这三条边能否构成一个三角形,若能构成三角形,则输出三角形的面积和周长。
问题分析:
通过表单获得三角形三条边的值,然后根据三角形面积计算公式计算面积,最后输出计算结果。
程序结构:
程序名:ex4_7.jsp。
程序算法:
1.创建表单。表单中包含三个文本框,从三个文本框获取三条边的长度。
2.判断三条边能否构成一个三角形,如果不能构成三角形,则输出信息‖不能构成三角形‖。
3.如果能构成一个三角形,则计算三角形的面积并输出。
4.2.2 在jsp页面中静态包含文件
[例子4.8]计算某数据的平方根
问题分析:
在一个页面中使用指令标签‖include‖,静态包含另一页面文件。
程序结构:
程序包含两个文件。example4_1.jsp页面静态包含Computer.jsp页面。
程序算法
example4_1.jsp :
使用‖include‖指令标签静态包含页面Computer.jsp
Computer.jsp:
1.创建表单,该表单包含一个文本框,从文本框获取正整数。
2.计算整数的平方根
3.输出平方根
4.2.3 动态加载页面并传递数据
[例子4.9] 求1到300的连续和
问题分析:
本程序由两个页面构成,由主页面动态加载次页面,并传递参数300给次页面,由次页面实现求和功能。
程序结构:
页面ex4_9.jsp动态加载页面addPage.jsp,并将数据300传递给变量computer。程序算法
ex4_9.jsp:
1.动态加载页面addPage.jsp。
2.给参数Computer传递数据300。
addPage.jsp:
1.获得参数Computer的值
2.求1到computer的和
3.输出数据
4.2.4 重定向页面并传递数据
[例子4.10]输出随机数(0~1)
问题分析:
本程序由两个页面构成,由一个主页面产生随机数并传递给另一重定向页面,重定向页面获得随机数并输出此数据。
程序结构:
主页面ex4_10.jsp重定向到redirect.jsp页面。
程序算法:
ex4_10.jsp:
1. 产生随机数number,
2. 转向页面redirect.jsp
redirect.jsp:
1.获得number值
2.输出number的值
4.3 HTML标记
一般使用HTML标签创建用户界面,实现输入数据和展示数据。HTML标记包括表单和组件。按照组件的不同作用,把组件分为三种类型:第一种类型组件是控件,这种控件的作用是提交或重置表单数据。第二种类型组件是数据输入组件。第三种类型组件是格式化组件。控件有两种:提交表单数据的控件和重置表单数据的控件。数据输入组件有:文本框、密码框、复选框、单选框、列表框、文本区。格式化组件有:LABEL组件和和表格。LABEL组件主要起说明作用,表格主要用于数据展示格式化。
1.表单
表单本身是一个框架,它把提交控件、数据输入组件和格式化组件组合在一起,构成用户输入界面,其作用是利用提交控件,将表单中的数据(数据输入组件接受数据)提交给服务器。表单的基本语法如下:
2.文本框
一般来说,用户通过文本框输入各种数据.文本框的一般语法格式是:
3.密码框
密码框是一种特殊的文本框,输入的信息用‖*‖回显,防止他人偷看口令。密码框的一般语法格式是:
4.复选框
当一个题目中可以选择多个答案时,就使用复选框。复选框的一般语法格式:
5.单选框
当一个题目中的答案只能多选一时,就使用单选框。单选框的一般语法格式:
6.列表框
下拉式列表和滚动式列表框通过
…….
7.文本区
该组件在表单中指定一个能输入多行文本的文本区。其语法格式是:
8.表格
表格经常用于对显示信息和输入信息的格式进行排版。下面是表格的基本语法:
数据11 | …数据1n |
10.提交、重置数据的控件
当用户按下该控件后,表单所包含的数据被提交到服务器。下面是提交控件的语法:
4.3.1 用选择框提交信息
[例子4.12]创建一用户界面,提供你的性别信息和爱好信息.
4.3.3用列表框提交信息
[例子4.14]求1到n的连续和、平方和、立方和。其中n的取值有10,20,30,40,50,100。
本章小结
JSP页面由三类元素组成,它们是Java程序片、JSP标签和HTML标记。JSP标签控制JSP页面属性;HTML标记创建用户界面;java程序片实现逻辑计算和逻辑处理。
JSP技术概述 一、JSP的好处 二、JSP页面最终会转换成servler。因而,从根本上,JSP页面能够执 行的任何任务都可以用servler来完成。然而,这种底层的等同性并不意味着servler和JSP页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。毕竟,在特定平台上能够用Java编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。 和单独使用servler相比,JSP提供下述好处: 三、λJSP中HTML的编写与维护更为简单。JSP中可以使用常规的HTML: 没有额外的反斜杠,没有额外的双引号,也没有暗含的Java语法。 四、λ能够使用标准的网站开发工具。即使对那些对JSP一无所知的 HTML工具,我们也可以使用,因为它们会忽略JSP标签(JSP tags)。 五、λ可以对开发团队进行划分。Java程序员可以致力于动态代码。Web 开发人员可以将经理集中在表示层(presentation layer)上。对于大型的项目,这种划分极为重要。依据开发团队的大小,及项目的复杂程度,可以对静态HTML和动态内容进行弱分离(weaker separation)和强分离(stronger separation)。 六、在此,这个讨论并不是让您停止使用servlets,只使用JSP。几乎 所有的项目都会同时用到这两种技术。针对项目中的某些请求,您可能会在MVC构架下组合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是servlet并不能填满您的工具箱。 二、JSP相对于竞争技术的优势 许多年前,Marty受到邀请,参加一个有关软件技术的小型(20个人)研讨会.做在Marty旁边的人是James Gosling--- Java编程语言的发明者。 隔几个位置,是来自华盛顿一家大型软件公司的高级经理。在讨论过程中,研讨会的主席提出了Jini的议题,这在当时是一项新的Java技术.主席向该经理询问他的想法.他继续说,他们会持续关注这项技术,如果这
针对以下题目请选择正确的答案(每道题目有一个或多哥正确的答案)。每一道题目,所有答案都选对,则该题加分,所选答案错误或不能选出所有正确答案,则该题不得分。 1)在JSP中,要定义一个方法,需要用到以下()元素。(选择一项) a) <%= %> b) <% %> c) <%! %> d) <%@ %> 2)JSP页面经过编译之后,将创建一个()。(选择一项) a) applet b) servlet c) application d) exe文件 3)当JSP页面执行自定义标签,遇到结束标签时将调用()方法执行处理。(选择一项) a) doStartTag() b) doEndTag() c) doInitBody() d) doAfterBody() 4) 在J2EE中,test.jsp文件中有如下一行代码:(选择一项)
JSP实用教材复习资料 第一章 1.为进行JSP开发,安装JDK后应该进行那些设置? 答:设置path环境变量为:java_home\bin; Classpath为:java_home\jre\lib\rt.jar;.; Java_home为:D:\java 2.运行startup.bat文件启动Tomcat服务器的好处是什么? 答:使用startup.bat启动Tomcat服务,以确保Tomact服务器使用的JDK是java_home设置的JDK。 使用startup.bat启动Tomcat服务,会占用一个MS-DOS窗口,如果关闭窗口将关闭Tomcat 服务。 3.Hello.jsp和hello.jsp是否是相同的jsp文件名? 答:不是 4.请在C:\下建立一个名字为Game的目录,并将该目录设置为一个Web服务器目录,然后编写一个简单的JSP页面,保存到该目录中,让用户使用虚拟目录moon访问该JSP页面。答:作为一个实验题。 修改Tomcat服务器安装目录下conf目录中的server.xml文件来设置新的Web服务目录。在前加入: 1、什么是JSP的预编译特征? 答:JSP 页面在被服务器执行前,都是已经被编译好的,并且通常只进行一次编译,即在JSP 页面被第一次请求时进行编译,在后续的请求中如果JSP页面没有被修改过,服务器只需要直接调用这些已经被编译好的代码,这大大提高了访问速度。 2、开发JSP 程序可采用哪几种开发模式?分别介绍他们的优缺点。 答:①单纯的JSP 页面编程 优点:容易实现。通过应用JSP中的脚本标识,可直接在JSP页面中实现各种功能。 缺点:将大部分的Java代码与HTML代码混淆在一起,程序结构混乱,维护调试不便。 ②JSP+JavaBean 编程 优点:网站的业务逻辑和显示页面进行分离,程序结构比较清晰。 缺点:将流程控制放到JSP 中,JSP 不能单纯作为显示功能。 ③JSP+JavaBean+Servlet 编程 优点:层次关系明显、组件分工明确。由Servlet来执行业务逻辑并负责程序的流程控制,JavaBean组件实现业务逻辑,充当着模型的角色,JSP用于页面的显示。 缺点:虽然遵循了MVC设计模式,但需要设计MVC各对象之间的数据交换格式与方法,需要花费更多的时间在系统设计上;对开发人员能力要求较高,不适合JSP 初学者。 ④MVC模式: 将业务逻辑代码与外观呈现分离,能更容易地根据需求的改变来改进程序。 3、JSP 页面由哪些元素组成? 答:JSP页面元素包括:JSP中的指令标识、HTML标记语言、嵌入的Java代码片段、JSP表达式(、动作标识、JSP脚本标识、JSP注释)等 4、有几种方法可实现在页面中来包含文件?如何实现?它们有什么区别? 答: 《JSP实用教程(第三版)》课后答案 第1章 JSP简介 1.安装Tomcat引擎的计算机需要事先安装JDK吗? 答:需要。 2.怎样启动和关闭Tomcat服务器? 答:bin目录下使用startup.bat启动Tomcat服务器。bin目录下使用shutdown.bat 关闭Tomcat服务器。 3. Boy.jsp和boy.jsp是否是相同的JSP文件名字? 答:不是 4. 请在D:\下建立一个名字为water的目录,并将该目录设置成一个Web服务目录,然后编写一个简单JSP页面保存到该目录中,让用户使用虚拟目录fish 来访问该JSP页面。 答:设置方法: ①建立D:\ water目录; ②修改server.xml文件,在上一行添加: 动态网页概念: ◆动态的核心:提供响应的信息。 ◆动态网页技术:CGI、ASP、PHP、JSP。 ◆安装配置JSP运行环境。JSP服务器:操作系统+JDK+JSP引擎 本教学采用: ◆JDK1.6+Tomcat6 + Dreamweaver 处理动态JSP代码构造静态网页 ◆JSP服务器配置 四个环境变量:ClassPath、JAVA_HOME、TOMCAT_HOME、PATH ◆运行JSP程序 工程文件:存放在工作空间,无法运行 工程文件要发布到Tomcat服务器才能运行,如发布到“Tomcat\webapps\workdir”目录下,则: 浏览器地址栏输入:http://localhost:8080/workdir/你的JSP文件名 通用HTML HTML文档的基本结构: HTML文件开始 jsp问答题复习
JSP实用教程第三版课后复习资料
JSP复习重点
JSP复习资料 一、填空: 1、 Tomcat服务器的默认端口是8080 。 2、 jsp主要内置对象有: application 、 config 、 exception 、out 、 page 、 pageContext 、 request 、response 、 session 。 3、application (application,session)对象是所有客户共同拥有,而session(application,session)对象则是每个客户专用的。 4、 JDBC的主要任务是:建立与数据库的连接、向数据库发起查询请求、处理数据库返回结果 5、一个Bean由三部分组成实现java,io.serializable接口、提供地参数的构造方法、提供getter()和setter()方法访问它的属性。 6、 Servlet的生命周期分三个时期:初使化、服务、销毁。 7、 JSP开发网站的两种模式分为JSP+JavaBean 和JSP+JavaBean+Servlet 8、对于同一用户,要想在不同的页面之间共享数据,可有以下几种方法:把数据保存的session 中, 通过Cookie ,通过隐含的表单把数据提交到下一页面,通过ServletContext对象,通过Application 对象,通过文件系统或数据库。 9、运行servlet需要在___ web.xml注册。 10、JSP是Html和Java 的结合。 11、JSP是运行在Web服务器上的JSP语言。* 12、Web服务器是一个servlet容器,它的作用是发布网页。 13、JSP的内部对象可以直接使用,它是由servlet容器创建的。 14、获取表单