网上订餐管理系统 第四章 系统实现主要技术
{
选择到尾页传递参数pageda=总页数 goto PageSet; }
页次=待显示页码 / 总页数页 ; if(总页数>0){
将记录指针定位到结果集的第一条记录上((待显示页码-1) * 一页显示的记录数 + 1); i = 0;
while(i<一页显示的记录数 && 数据库指针不在结果集尾部){ 输出要分页显示的数据库中的内容;
将数据库指针移动到当前行的下一行; i++; } }
第四章 系统实现主要技术
4.1 JavaServer Pages(JSP)技术简介
在开发JSP规范的过程中,Sun 公司与许许多多主要的Web服务器、应用服务器和开发工具供应商,还有各种各样富有经验的开发团体进行合作。最后找到了一种平衡了应用和页面开发的具有可移植性和易用性的开发方法,JSP技术特征在多个方面加速了动态Web页面的开发:
1) 将内容的生成和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容,这些内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格。生成内容的逻辑部分被封装在JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在Beans中,那么其他人,如Web管理人员和页面设计者,在编辑和使用JSP页面的时候,将不会影响到内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成客户端请求的内容,例如,通过访问JavaBeans组件,使用JDBC技术访问数据库或者其他文件,并且将结果以HTML(或者XML)页面的形式发送回浏览器。这将有助于作者保护自己的代码,并且又保证任何基于HTML的Web浏览器的完全可用性。 2) 强调可重用的组件
绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise
17
网上订餐管理系统 第四章 系统实现主要技术
JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理问题。开发人员能够共享和交换执行普通操作的组件,或者发布这些组件使更多的使用者或者客户团体能够使用。 3) 采用标识简化页面开发
Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是容易使用的、同时与JSP相关的XML标识中进行动态内容的生成时需要的。通过开发定制化标识库,JSP技术是可扩展的。今后,第三方开发人员和其他人员可以将常用的功能创建到自己的标识库。这使得Web页面开发人员能够象使用熟悉的工具一样来使用标识来执行特定功能的构件来工作。JSP技术很容易整合到多种应用体系结构中,以便使用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用中。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用开发。由于JSP页面的内置脚本语言是基于Java编程语言的,并且所有的JSP页面都能被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的厂家将对JSP的支持添加到他们的产品中,我们可以选择不同的服务器和工具,因为更改工具或服务器并不影响当前的应用。当与Java 2平台,企业版(J2EE)[8]和Enterprise JavaBean技术整合时,JSP页面提了供企业级的扩展性能,这对于在虚拟企业中部署基于Web的应用是必需的。
4.2 JSP 和其他类似或相关技术的一个简单比较
1) JSP和Active Server Pages(ASP)相比
Microsoft的ASP是一种和JSP类似的技术。JSP和ASP相比具有两方面的优点。首先,动态部分用Java编写,而不是VB Script或其他Microsoft语言,不仅功能更强大而且更易于使用。第二,JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。 2) JSP和纯Servlet相比
JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便,不必再用 println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。
3) JSP和JavaScript相比
JavaScript能够在客户端动态地生成HTML。虽然JavaScript很有用,但它只能
18
网上订餐管理系统 第四章 系统实现主要技术
处理以客户端环境为基础的动态信息。除了Cookie之外,HTTP状态和表单提交数据对JavaScript来说都是不可用的。另外,由于是在客户端运行,JavaScript不能访问服务器端资源,比如数据库、目录信息等等。
4.3 最佳JSP应用服务器Tomcat
大多数人(大概29%)都喜欢将Apache Tomcat当作JSP应用服务器使用。有人可能会说,它之所以受欢迎是因为这个服务器是免费和开放源代码的,但是真正的原因远不止这些。Apache Tomcat能够受欢迎,不仅是工作性能非常好,还有没有初始的开发成本开销等有力的竞争因素,但这不是决定因素。Tomcat 结构非常合理,更由于Tomcat 是Apache 组织的产品,这个组织有着雄厚的技术更新力量,并且Tomcat5.0 很好的支持了JSP2.0 规范,因此有着很好的发展前景。
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司以及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界内的地位。
Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:也处理Html页面,但是与Apache相比,它的处理静态Html的能力就不如Apache。
JDK 是SUN 公司的JAVA应用程序和组件的开发环境,是编译、测试工具,也是提供JAVA 程序的 JAVA 虚拟机平台,是调试和运行JSP 所不可缺少的工具[9]。
4.4 javaBean组件技术
1. 什么是JavaBean
软件开发的真正目的之一是利用在程序编码方面的投资,以便在同一公司或者不同公司的其他开发中重用程序编码,近年来,编程人员投入大量精力以便建立可重用的软件、可重用的软件组件,早期用在面向对象编程方面中的投资已经在Java、C#等编程语言的开发中充分实现,很多软件可以不用做很大的改变就可以运行在各种平台上。
JavaBeans描述了Java的软件组件模型,这个模型被设计成使第三方厂家可以生成和销售能够集成到其他开发厂家或者其他开发人员开发的软件产品的Java组件。
应用程序开发者可以从开发厂家购买现成的JavaBeans组件,拖放到集成开发环境的工具箱中,再将其应用于应用软件的开发,对于JavaBeans组件的属性、行为可以进行必要的修改、测试和修订而不必重新编写和编译程序。在JavaBeans模型中JavaBeans组件可以被修改或者与其他JavaBeans组件组合以生成新的JavaBeans组件或完整的Java应用程序。
Java应用程序在运行时,最终用户也可以通过JavaBeans组件设计者或应用程序开发者所建立的属性存取方法setXXX方法和getXXX方法修改JavaBeans组件的属
19
网上订餐管理系统 第四章 系统实现主要技术
性。这些属性可能是颜色和形状等简单属性,也可能是影响JavaBeans组件总体行为的复杂属性。
JavaBeans组件模型使得软件可以设计成便于修改和便于升级。每个JavaBeans组件都包含了一组属性、操作和事件处理器。将若干个JavaBeans组件组合起来就可以生成设计者、开发者所需要的特定运行行为,JavaBeans组件存放于容器或工具库中,供开发者开发应用程序。
JavaBeans就是一个可以复用软件模型。JavaBeans在某个容器中运行提供具体的操作性能。JavaBeans是建立应用程序的建筑模块。大多数常用的JavaBeans通常是中小型控制程序,但我们也可以编写包装整个应用程序运行逻辑的JavaBeans组件,并将其嵌入到复合文档中,以便实现更为复杂的功能。
一般来说JavaBeans可以表示为简单的GUI组件,可以是按钮组件、游标、菜单等等。这些简单的JavaBeans组件提供了告诉用户什么是JavaBeans的直观方法。但我们也可以编写一些不可见的JavaBeans,用于接受事件和在幕后工作,例如访问数据库执行查询操作的,JavaBeans它们在运行时刻不需要任何可视的界面。在JSP程序中所用的JavaBeans一般以不可见的组件为主。可见的JavaBeans一般用于编写Applet程序或者Java应用程序。
2.JavaBeans属性
JavaBeans的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是同一个概念,在程序中的具体体现就是类中的变量在。JavaBeans的设计中,按照属性的不同作用又细分为4类:Simple属性、Index属性、Bound属性与Constrained属性。 1) Simple属性
一个Simple类型的属性表示一个伴随有一对getXXX()、setXXX()方法的变量。属性的名称与和该属性相关的getXXX()、setXXX()方法相对应。例如:如果有setX()和getX()方法,则暗指有一个名为\的属性,如果有一个方法名为isX()则通常暗指\是一个布尔类型的属性。 2) 4 Indexed属性
一个Indexed类型的JavaBeans属性表示一个数组值。使用与该属性相对应的setXXX()方法和getXXX()方法可以存取数组中某个元素的数值。同时,我们也可以使用另两个同名方法一次设置或取得整个数组的值(即属性的值)。 3) 5 Bound属性
一个Bound类型的JavaBean组件的属性具有这样的特性:当该种属性的值发生变化时必须通知其它的JavaBeans组件对象。每次JavaBeans组件对象的属性值改变时,这种属性就引发一个PropertyChange事件(属性改变事件,在Java程序中,事件也被看作是一个对象)。这个事件中封装了发生属性改变事件的属性名、属性的原值、属性变化后的新值。这个事件将被传递到其它的JavaBeans组件中,至于接收事件的
20
网上订餐管理系统 第四章 系统实现主要技术
JavaBeans组件对象应该做什么动作由其自己定义。请看程序代码: import java。beans。*; public class JavaBean3 {
String ourString= \
private PropertyChangeSupport changes = new PropertyChangeSupport(this); public void setString(String newString) {
String oldString = ourString; ourString = newString;
changes。firePropertyChange(\}
public String getString() {
return ourString;
} public void addPropertyChangeListener(PropertyChangeListener l) {
changes。addPropertyChangeListener(l);
} public void removePropertyChangeListener(PropertyChangeListener l) {
changes。removePropertyChangeListener(l); } }
程序首先创建了PropertyChangeSupport类型的对象changes,这是最关键的一步操作,changes对象主要用于向监听者对象发送信息:当前的JavaBean对象已经发生了属性改变的事件。在JavaBean3.java程序中除了普通的存取JavaBeans属性值的setXXX()getXXX()等方法以,外还定义了如下的方法:
public void addPropertyChangeListener(PropertyChangeListener l); public void removePropertyChangeListener(PropertyChangeListener l);
第一个方法(addPropertyChangeListener()方法)其实是调用changes对象的addPropertyChangeListener()方法,使一个事件监听者对象和当前JavaBean对象绑定起来,并把它添加到监听者队列中去,充当当前JavaBean对象的事件监听者,如果当前JavaBean对象发生了属性值改变的事件,那么changes对象会依次通知监听者队列中的每一个对象,当然也通知了这个事件监听者对象,让它对这个事件做出反映 。
21
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库网上订餐JSP系统毕业论文(5)在线全文阅读。
相关推荐: