Download presentation
Presentation is loading. Please wait.
1
电子商务技术基础 张宝明
2
第1章 概论
3
§1.1 电子商务的基本概念 1.1.1 电子商务定义 E-commerce,1997年11月,国际商会在法国巴黎举行了世界电子商务会议
E-Business,IBM 二者区别
4
§1.1电子商务的基本概念 1.1.2 电子商务与技术的关系 “电子”的商务优势 更快 更广 更丰富 更互动 更低成本 速度更加快捷
联系更加广泛 信息更加丰富 沟通更加充分 成本更加低廉
5
§1.1电子商务的基本概念 电子商务以“商务为本” 讲求效益、追求利润是电子商务的第一要旨。
企业是电子商务的主角,企业是推动电子商务发展的重要动力。 设计和建设电子商务时,要从商务需求出发,要根据商务需求和商务目标确定所选用的技术,而不是从技术或模式出发。
6
§1.1电子商务的基本概念 1.1.3 电子商务中涉及的相关技术及其作用
7
§1.1电子商务的基本概念 1.1.4 电子商务系统 电子商务与电子商务系统 电子商务系统与传统管理信息系统
从广义上讲,电子商务系统是指支持商务活动的电子技术手段的集合;狭义上则指在Internet和其他网络的基础上,以实现企业电子商务活动为目标,满足企业生产、销售、服务等生产和管理的需要,支持企业的对外业务协作,为企业提供商业智能的信息系统。
8
§1.1电子商务的基本概念 结论: 电子商务系统是一个大系统。从业务流程上看,支持企业市场、销售、支付、客户等各个业务环节;从数据处理上看,分布式的结构以计算机网络为基础,涉及到商务逻辑的应用处理、联机事务处理OLTP(On Line Transaction Process)、联机事务分析OLAP(on Line Analysis Process)和商务智能、信息发布及表达。这一系统不仅需要和企业内部的信息流整合,而且需要集成外部的信息系统,所以,整个系统的业务关系是一种网状结构,各个处理部分之间存在业务上、数据上的交错。
9
§1.2 电子商务系统的体系结构 随着电子商务系统规模和复杂度的增长及电子商务技术,特别是网络能力的增强,电子商务系统的技术架构变得异常复杂,无论是纵向的功能层次,还是横向的应用分配,都在不断的丰富之中,并在系统整体中动态协调。这不仅使系统中的信息资源得到均衡有效的应用,而且为电子商务系统的各类技术提供了恰当的舞台。 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
10
§1.2电子商务系统的体系结构 1.2.1 电子商务系统的纵向功能结构(纵向功能层次) 电子商务系统纵向功能框架结构的演进 单机系统
电子商务系统的纵向功能结构(纵向功能层次) 电子商务系统纵向功能框架结构的演进 单机系统 基于网络系统 从横向看 从纵向看 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
11
§ 1.2电子商务系统的体系结构 1.2.1 电子商务系统的纵向功能结构(纵向功能层次) 电子商务系统纵向功能框架的结构与划分
电子商务系统的纵向功能结构(纵向功能层次) 电子商务系统纵向功能框架的结构与划分 电子商务应用(企业宣传、网上销售、网络银行等) 商务服务平台(CRM、SCM 、市场、社区等) 商务支持平台(内容管理、目录管理、搜索引擎等) 基础支持平台(应用开发环境与开发工具:VB、C++、java、JSP、Servlet等;高性能与高可靠性环境:负载均衡与错误恢复等;系统管理:主机管理、网络管理、安全管理;对象组件集成环境:JDBC、ODBC、EJB、XML等) 数据库平台 web信息平台 系统平台(操作系统、网络通信协议) 计算机硬件及网络基础设施 社会环境(法律、税收、政策、人才等) 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
12
§1.2电子商务系统的体系结构 1.2.2 电子商务系统的横向功能结构(横向功能分配) 横向功能结构的发展历史 客户/服务器体系结构
C/S的提出 C/S结构 C/S的发展轨迹 客户机 服务器 数据 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
13
a)主机系统模式 b)文件服务器模式 c)传统客户/服务器模式
数据管理 应用处理 数据描述 服务器 客户 缺点:此模式下,客户机和服务器之间的应用协作能力不强,服务器仅提供数据共享服务,并不提供计算能力的共享,联机事务处理的响应时间和网络上的无谓数据传输量大大增加,增加了网络负担,降低了响应速度。 优点:该模式中,数据处理任务分开在客户机和数据库服务器上进行,客户端负责用友好的界面与用户交互,从客户发往数据库服务器的只是查询请求;服务器专门负责数据库的操作、维护。从数据库服务器传回给客户的只有查询结果,减少了网络上的传输量,提高了整个系统的吞吐量和响应时间,并充分利用了网络中的计算资源。 主机 终端 用户 键盘输入 屏幕显示 文件服务器 网络工作站 读取文件 写入文件 数据库服务器 客户机 服务请求 服务结果 a)主机系统模式 b)文件服务器模式 c)传统客户/服务器模式
14
§ 1.2电子商务系统的体系结构 1.2.2 电子商务系统的横向框架结构(横向功能分配) 横向框架结构的发展历史 电子商务系统的体系结构
电子商务应用系统对体系结构的挑战 与传统C/S相比,电子商务系统的主要特性体现在Internet技术的使用上,其结果是系统应用范围扩张,用户数目和类型具有很大的不确定性,由此带来了以下的问题: 维护困难 费用增加 培训困难 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
15
§ 1.2电子商务系统的体系结构 1.2.2 电子商务系统的横向功能结构(横向功能分配) IE 电子商务系统的体系结构
电子商务应用系统对体系结构的挑战 三层客户/服务器结构 (或B/W/D结构) 多层客户/服务器结构 Web 服务 核心商务 数据库 Internet IE 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
16
Web服务器 逻辑表达及动态网页服务器 应用服务器 系统集成服务器 数据库 Web访问 负载均衡 优势 : 可伸缩性 可管理性 安全性
17
§ 1.2电子商务系统的体系结构 1.2.3 电子商务系统的实现要素 商务表达层 商务逻辑层 数据层 客户端 表达逻辑 服务器端 表达逻辑
商务表达层 商务逻辑层 数据层 客户端 表达逻辑 服务器端 表达逻辑 数据存取 商务逻辑 胖客户 表达逻辑 商务表达平台 商务支持平台 数据存取平台 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。 应用服务器 伙伴 银行 CA Web及表达层应用 支持平台及工具 互联及集成工具 Extranet 客户端 浏览器 Internet Intranet 应用程序 企业应用及数据
18
商务表达层:电子商务系统与用户进行交互的界面,主要为用户提供使用的接口,具体由客户端浏览器或专用的应用程序以及服务器端的相关软件实现。在物理上,它牵涉到前台、后台、前后台之间的通信设备;在技术上,它一般要求能支持多种标准数据格式、支持多种主流的数据终端、支持用户的个性化要求等。 商务逻辑层:描述商务处理过程和商务业务规则,是整个商务模型的核心。该层所定义的功能是系统开发过程中需要实现的重点,也是系统建造过程中的重点和难点。企业的商务逻辑可以划分成两个层次:一个层次是企业的核心商务逻辑,需要通过开发相应的电子商务应用程序实现;另一个层次是支持核心商务逻辑的辅助部分,包括商务平台(例如内容管理、知识管理、搜索引擎、目录管理、用户管理等)和系统平台(例如应用集成中间件、负荷均衡、集群结构、故障恢复、系统管理)。 数据层:为商务逻辑层提供数据支持。一般地,这一部分为商务逻辑层中的各个应用软件提供各种后端数据,这些后端数据具有多种格式、多种来源,例如企业内部数据库、企业ERP系统的数据、EDI系统的数据、企业外部的合作伙伴与商务中介的数据。因此在技术上,要求能将这些不同的数据来源、不同的数据格式、不同的数据交换方式集成到整个系统中去。 在现实世界中,支持上面的技术平台主要有二种:基于microsoft的.NET架构(DNA)和sun公司的J2EE架构。
19
§ 1.3电子商务系统的平台与技术分析 前言 目前,可作为开放式企业应用集成的规范和平台的技术主流有两种,一种是微软公司的Windows DNA平台,其核心规范为COM+;另一种是Sun公司的J2EE(Java 2 Platform Enterprise Edition)平台,其核心规范是EJB。虽然这两种集成平台和分布式计算技术都能满足实施开放式企业应用集成的需求,但是从规范的开放性、支持异构性、可移植性、支持的广泛性、对企业现有系统的继承性和技术优势等方面比较,J2EE和EJB比Windows DNA和COM+更具优势。此外,EJB和J2EE还直接支持CORBA规范,可以更好地与企业已有的分布式应用系统集成。对企业现有的各种应用系统,其供应商为了能够支持EJB和J2EE,都在根据J2EE的中间件规范开发与J2EE平台集成的标准中间件。因此,EJB和J2EE是一种更理想的集成平台和规范。 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
20
§ 1.3电子商务系统的平台与技术分析 1.3.1 J2EE产生背景
企业应用系统的开发一直面临的重大挑战 Java的出现 J2EE平台的出现 一方面,企业应用系统面对的是一个异构的分布式环境,它必须支持与已有系统的集成性和与其它系统的互操作性;另一方面,作为为客户、合作伙伴和企业内部提供信息服务的平台,企业系统还必须具有高可用性、安全性、可靠性和可伸缩性等特点。这些特点再加上复杂多变的用户需求和不断伸缩的交付时间,使得企业系统的开发过程变得越来越困难。开发商和广大程序员一直在努力推动和殷切期待一个成熟、标准的企业平台来简化和规范企业应用系统的开发和部署。Java技术的出现,尤其是J2EE平台的推出正是这种努力的结果,也使得企业系统的开发由此变得更加快速和方便。 Sun公司的J2EE平台是在1997年的Java One大会上宣布的,J2EE定义了开发和运行企业级应用的标准。随着J2EE的出现,Java语言的功能和工具得到了极大的扩充、丰富和发展,可以用于复杂的、多层次及分布式的电子商务和企业级应用。J2EE架构与技术为组件开发模型提供广泛的支持,同时也提供一组开发工具和服务,以便开发模块化的、可重用的和平台独立的各种组件技术的业务逻辑。 Java于1996年由Sun公司推出,当时它的主要用途是制作产生动态网页的Applet。后来,人们发现Java的“一次开发,多次运行”、纯面向对象的特性、垃圾回收机制和内置的安全性特别适合于开发企业应用系统。于是企业应用开发商纷纷在Java标准版的基础上各自扩展出许多企业应用API,其结果导致基于Java的企业应用呈爆炸性增长。但是各企业系统API之间又不能相互兼容,破坏了Java的平台独立性。鉴于此,Sun公司联合IBM、Oracle、BEA等大型企业应用系统开发商共同制定了一个基于Java组件技术的企业应用系统开发规范,该规范定义了一个多层企业信息系统的标准平台,旨在简化和规范企业应用系统的开发和部署。这一规范和其定义的平台就构成了J2EE。 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
21
§ 1.3电子商务系统的平台与技术分析 1.3.2 J2EE平台简介 J2EE平台架构 (组件、容器、API、访问、协议) Applet容器
Application容器 应用组件 JDBC RMI-IIOP JNDI JMS Web容器 JSP Servlet Java mail JAF JTA EJB容器 Enterprise Bean DB 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
22
容器是指为特定组件提供服务的一个标准化的运行环境,Java虚拟机就是一个典型的容器。组件是一个可以部署的程序单元,它以某种方式运行在容器中,容器封装了J2EE底层的API,为组件提供事务处理、数据访问、安全性、持久性等服务。在J2EE中,组件和组件之间并不直接访问,而是通过容器提供的协议和方法来相互调用。组件和容器间的关系通过“协议”来定义。容器的底层是J2EE服务器,它为容器提供J2EE中定义的各种服务和API。一个J2EE服务器(即应用服务器)可以支持一种或多种容器。每个容器的服务包括两部分:J2SE(Java 2 Platform Standard Edition)和一组扩展的服务。这是因为J2EE是以Java标准版为基础的,各容器在J2SE之上再根据需要提供一些扩展性的服务,如目录服务、事务管理、数据访问、消息机制、安全性等。 J2EE定义了4种类型的组件:Applet组件、Application客户组件、Web组件、EJB(Enterprise JavaBeans)组件。其中Applet组件和Application客户组件在客户端运行,J2EE通过Java插件为Applet提供运行环境,Application客户的容器就是本地Java虚拟机。Web及EJB组件在服务器端运行。J2EE中又包含两种类型的Web组件:JSP和Servlet。它们是web服务器的功能扩展,都能生成动态的Web页面。不同的是JSP是将Java代码嵌入到HTML中,与ASP相似;而Servlet是单独的java类,它动态生成的HTML文件返回给客户。Web组件的容器比较典型的就是基于Java的Web服务器。
23
§ 1.3电子商务系统的平台与技术分析 J2EE平台架构 J2EE本身是一个标准,而不是一个产品 ,由四个部分组成:
J2EE规范。该规范定义了J2EE平台的体系结构、平台角色及J2EE中每种服务和核心API的实现要求。它是J2EE应用服务器开发商的大纲。 J2EE兼容性测试站点。Sun公司提供了一个测试J2EE应用服务器是否符合J2EE规范的站点,对通过该站点测试的产品,Sun公司将发放兼容性证书。 J2EE参考实现。即J2EE SDK,它既是Sun公司自己对J2EE规范的一个非商业性实现,又是为开发基于J2EE企业级应用系统原型提供了一个免费的底层开发环境。 J2EE实施指南。即BluePrints文档,该文档通过实例来指导开发人员如何去开发一个基于J2EE的多层企业应用系统。 1879年,美国的詹姆斯.利迪和约翰.利迪兄弟制作的“拨盘式现金出纳记录机”是最早的收款机。当时这台手动式收款机的主要作用是做现金记录,也用于劳务管理,即作为一种防范措施,监督雇员的劳动。 20世纪60年代,电子技术高速发展,日本首先研制出电子现金出纳机,也就是现在的电子收款机ECR。它不仅能对现金、库存金额进行统计分析,而且能把商品分类、商品销售等复杂的各项经营信息管理起来。 我国在20世纪70年代的中期就开始了商业自动化的尝试,70年代开发了不少自动化的科技项目,如“立体自动化仓库”、“自动计量设备”、“自动售货机”等。同时于1978年在原国家科委和商业部的支持下,在湖北襄樊市成立了第一个商业自动化研究所。当时用国产的小型机对零售和仓库商品进行了模拟实验,这批项目中有成功、有失败,但多数未形成商品化的成果。直到1980年,我国第一台商业电子收款机由北京市商业机械研究所研究成功,标志着我国商业自动化进入实质启动阶段。1981年原商业部有关领导决定,由北京商业机械研究所具体承办进口日本收款机近4000台,以计划分配的形式销往全国主要城市各大商场使用,这批收款机可以说是我国商业自动化的种子,在我国商界起到了启蒙教育与宣传的作用。所后,上海与大阪结成友好城市,由大阪赠送的多台POS机,更有力的推动了我国商业活动自动化的发展。 20世纪40年代后期,美国乔.伍德兰德和贝尼.西方两位工程师就开始研究用代码表示食品项目以及相应的自动识别设备,并于1949年获得了美国专利。该图案很像微型射箭靶,称为“公牛眼”代码。 条码组成及分类 条码有一维和二维之分,其携带的信息量不同。一维条码由两侧静区、起始字符、数据字符、校验字符和终止字符组成。 目前,国际广泛使用的一维条码种类有EAN码、UPC码、39码、ITF25码、Codebar码、ISBN码、ISSN码。其中EAN码是当今世界上最广为使用的商品条码,已成为EDI电子数据交换的基础; 二维条码主要有PDF417码、Code49码、code16K码、Data Matrix码、MaxiCode码等,拥有很大的信息量,能够直接把使用一维条码时需存储于后台数据库中的信息包含在条码中,也可将照片、指纹等信息编制于条码中,增加了数据的安全性与完整性。
24
§ 1.3电子商务系统的平台与技术分析 J2EE平台架构 符合J2EE平台的产品
目前符合J2EE标准的产品有BEA公司的WebLogic,Sun公司的NetDynamics,IBM的WebSphere,还有包括著名数据库厂家Informix、Oracle、Sybase在内的上百个产品(
25
§ 1.4 Java技术基础 1.4.1 Java语言中的数据类型与运算符 几个简单的Java程序 Hello World!
// Welcome1.java // Text-printing program. 3 public class Welcome1 { 5 // main method begins execution of Java application public static void main( String args[] ) { System.out.println( “Hello World!!" ); 10 } // end method main 12 13 } // end class Welcome1
26
Begins class declaration for class Welcome1 每一个Java程序都必须至少有一个用户定义的类 格式
说明: 注释语句://或/*…*/ Begins class declaration for class Welcome1 每一个Java程序都必须至少有一个用户定义的类 格式 类名的命名规则 由 letters, digits,underscores ( _ )和 $组成; 不能由digit或spaces开头; Examples: Welcome1, $value, _value, button7,合法 7button ,非法 Java 是大小写敏感的( case sensitive),a1 和 A1不一样 public class Welcome1 {
27
保存文件: 文件名必须同类名,且扩展名为 .java Welcome1.java Java应用程序从main方法开始执行 语句以;结束
public class Welcome1 { 保存文件: 文件名必须同类名,且扩展名为 .java Welcome1.java Java应用程序从main方法开始执行 语句以;结束 public static void main( String args[] )
28
§ 1.4 Java技术基础 1.4.1 Java语言中的数据类型与运算符 几个简单的Java程序 两个数相加
29
1 // Fig. 2.9: Addition.java 2 // Addition program that displays the sum of two numbers. 3 4 // Java packages 5 import javax.swing.JOptionPane; // program uses JOptionPane 6 7 public class Addition { 8 // main method begins execution of Java application public static void main( String args[] ) { String firstNumber; // first string entered by user String secondNumber; // second string entered by user 14 int number1; // first number to add int number2; // second number to add int sum; // sum of number1 and number2 18 // read in first number from user as a String firstNumber = JOptionPane.showInputDialog( "Enter first integer" ); 21 // read in second number from user as a String secondNumber = JOptionPane.showInputDialog( "Enter second integer" ); 25 // convert numbers from type String to type int number1 = Integer.parseInt( firstNumber ); number2 = Integer.parseInt( secondNumber ); 29 // add numbers sum = number1 + number2; 32
30
// display result JOptionPane.showMessageDialog( null, "The sum is " + sum, "Results", JOptionPane.PLAIN_MESSAGE ); 36 System.exit( 0 ); // terminate application with window 38 } // end method main 40 41 } // end class Addition
32
§ 1.4 Java技术基础 1.4.1 Java语言中的数据类型与运算符 几个简单的Java程序 Java语言中的数据类型与运算符
基本的数据类型(8种:byte、char、short、int、float、long、double、boolean) 类(系统类与用户自定义的类)
33
基本数据类型 所占字节数 取值范围 表示方法示例 boolean 1bit true, false Boolean x=true; byte 1 -128~+127 byte x=13; char 2 '\u0000'~'\uFFFF' char x='a'; char y='\u0061'; char z='\\'; short -32768~+32767 short x=230; int 4 ~ int x=5; long 8 -263 ~ long x=45L; float float x=345.00f double double x=345.00
34
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class Student { private String No; private String name; private int age; public Student(String No , String name , int age) { this.No=No; this.name=name; this.age=age; } public void Display() { System.out.println("No="+No); System.out.println("name="+name); System.out.println("age="+age); public void Display(int x) { if(x==0) System.out.println("No="+No); if(x==1) System.out.println("name="+name); if(x==2) System.out.println("age="+age); if(x==4) System.out.println("Not correct!");
35
几个名词 数据隐藏 重载 构造函数 类图
36
运算符 部分举例与说明 算术运算符 + - * / 7/5结果为1;7.0/5结果为1.4 % 7%5结果为2 逻辑运算符 && true && true结果为true ;true &&false结果为false || false || true结果为true ;false ||false结果为false ! !false结果为true ; !true结果为false 位运算符 & 2&3结果为2 | 2|3结果为3 ~ ~2结果为-3 ^ 2^3结果为1 << 3<<2结果为12 >>(带符号位) -5>>2结果为-2 >>>(不带符号位) ((byte)-5)>>>2结果为63 关系运算符 == != > < >= <= 赋值运算符 =
37
§ 1.4 Java技术基础 1.4.2 类的继承与组合 继承:一个类可以在已有类的基础上进行扩展
38
1 2 3 4 5 6 7 8 9 10 11 12 Public class GraduateStudent extends Student { private String department; public GraduateStudent(String s1, String s2, int x, String dept) { super(s1,s2,x); department=dept;} public void Displayall() { Display(); System.out.println("department="+department); } public void Display(int x) {if(x==0||x==1||x==2) super.Display(); if(x==4) System.out.println("department="+department); Student GraduateStudent department:String Displayall():void Display(int):void 覆盖 :
39
§ 1.4 Java技术基础 1.4.2 类的继承与组合 继承 组合:类中的某些数据成员为为其它类的对象
40
public Student monitor; public GraduateStudent secretary;
1 2 3 4 5 6 7 8 public class Team { public Student monitor; public GraduateStudent secretary; public Team() { monitor=new Student("21B122","zhang3",12 ); secretary=new GraduateStudent("21B126","wang5",20,"Business department'); } Student Team GraduateStudent
41
§ 1.4 Java技术基础 1.4.3 类的多态 在Java中,用户所写的类都是某个类的子类,Java中最顶级的父类为Object类。类通过继承关系不断的向下“生长”,从而具有越来越多的“子孙”,各级“子孙”所具有的行为与属性都不完全相同,在程序中要区分这些不同层次的类需要花费很多的精力,类的多态性的出现,帮助减轻了这方面的负担。多态性能使程序将不同层次的子孙对象看作是同一个超类的不同对象,这些对象具有超类中的相同方法与属性,在程序中能加以引用;而到了实际运行时,却又执行的是各自拥有的方法。多态性使开发人员能够设计和实现易于扩展的系统
42
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 //源文件名:MorphTest.java class Student { private String No; private String name; private int age; public Student(String No , String name , int age) { this.No=No; this.name=name; this.age=age; } public void Display() { System.out.println("No="+No); System.out.println("name="+name); System.out.println("age="+age); } public void Display(int x) { if(x==0) System.out.println("No="+No); if(x==1) System.out.println("name="+name); if(x==2) System.out.println("age="+age); if(x==4) System.out.println("Not correct!"); } class GraduateStudent extends Student { private String department; public GraduateStudent(String s1, String s2, int x, String dept) { super(s1,s2,x); department=dept;} public void Displayall() { Display(1); Display(2); Display(3); System.out.println("department="+department); public void Display(int x) {if(x==0||x==1||x==2) super.Display(x); if(x==4) System.out.println("department="+department); public class MorphTest { public static void main(String[] args) { GraduateStudent stud1=new GraduateStudent("22B210","zhang3",20,"imformation"); Student stud2=new Student("22B215","wang5",12); Student stud1Ref=stud1; stud1Ref.Display(4); stud2.Display(4);
43
§ 1.4 Java技术基础 1.4.3 类的多态 抽象类 与接口 抽象类的定义 接口的定义
public abstract class AbstractPoint { private int x; private int y; public AbstractPoint(int a,int b) { x=a; y=b; } public void Shape(); public interface InterPoint { public static double pi= ;
44
抽象类的继承 接口的实现 public class RealPoint extends Point { public RealPoint(int a,int b) { super(a,b); } public void Shape() { System.out.println("a="+a+",b="+b);} } public class RealPoint implements InterPoint { private int x; private int y; { System.out.println("a="+a+",b="+b);}
45
§ 1.4 Java技术基础 1.4.4 Java的执行(经过的5个步骤) Edit Compile Load Verify Execute
Primary Memory . Disk Editor Compiler Class Loader 利用编辑器编写一个扩展名为 .java的源程序 编译器编译产生字节码,并以扩展名为.class的文件保存在磁盘上. 类装载程序从磁盘上读取包含字节码的.class文件,并把这些字节码放入内存中 Phase 1 Phase 2 Phase 3 Bytecode Verifier 字节码验证程序确认所有字节码都合法,并且不违背Java的安全限制 Phase 4 Interpreter 解释器读取字节码,并把它们翻译成计算机能够理解的语言,在程序执行的过程中有时需要保存数据值 Phase 5 1.4.4 Java的执行(经过的5个步骤) Edit Programmer writes program (and stores program on disk) Compile Compiler creates bytecodes from program Load Class loader stores bytecodes in memory Verify Verifier ensures bytecodes do not violate security requirements Execute Interpreter translates bytecodes into machine language
46
§ 1.4 Java技术基础 1.4.5 Java源程序 外部类 有名内部类 无名内部类
47
§ 1.4 Java技术基础 1.4.6 各种数据类型间的转换
48
§ 1.4 Java技术基础 1.4.7 一个文件输入输出实例 将某一文件中的内容复制到另一文件中 Import java.io.*;
public class CopyFile { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new FileReader("line.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("linenum.txt")); String s; while (br.ready()) { s=br.readLine(); bw.write(s); bw.newLine(); //equal to : bw.write(‘\n’); //Java中换行规则遵循Unix,为换行符‘\n’(LF),不同于windows下的回车+换行‘\r’+’\n’(CR+LF) } bw.close(); } }
49
§ 1.4 Java技术基础 1.4.7 一个文件输入输出实例 将键盘上输入的内容存放到某个文件中 import java.io.*;
public class CopyFile { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new FileWriter("linenum.txt")); String s; s=br.readLine(); while (s!=null) { bw.write(s); bw.write('\n'); //equal to: bw.newLine(); s=br.readLine(); } bw.close(); } }
50
§ 1.4 Java技术基础 1.4.7 一个文件输入输出实例 从某个Web服务器上读取一个HTML文件
import java.net.*; import java.io.*; public class CopyFile { public static void main(String[] args) throws IOException { final int HTTP_PORT=80; Socket socket=new Socket(" ",HTTP_PORT); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); out.write("GET /index.html HTTP/1.0\nHOST: \n\n"); out.flush(); String s; StringBuffer sb=new StringBuffer(); s=in.readLine(); while (s!=null) { sb.append(s); sb.append('\n'); s=in.readLine(); } out.close(); in.close(); System.out.println(sb.toString()); } }
51
§ 1.4 Java技术基础 1.4.8 一个窗口应用程序 import java.awt.event.*;
public class TestFrame extends JFrame { private int counter = 0; public TestFrame() { /* 使用匿名类添加一个窗口监听器 */ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("Exit when Closed event"); System.exit(0); //退出应用程序 } public void windowActivated(WindowEvent e) { setTitle("Test Frame " + counter++); // 改变窗口标题 } }); setResizable(false); // 设置窗口为固定大小 setSize(200, 250); }
52
§ 1.4 Java技术基础 1.4.8 一个窗口应用程序 public static void main(String[] args) {
TestFrame tf = new TestFrame(); tf.show(); } } //end class
53
§ 1.4 Java技术基础 1.4.8 一个窗口应用程序 框架Frame 监听器 Listener 事件Event
JFrame所发生的事件有: windowActivated(WindowEvent e) 窗口得到焦点时触发 windowClosed(WindowEvent e) 窗口关闭之后触发 windowClosing(WindowEvent e) 窗口关闭时触发 windowDeactivated(WindowEvent e) 窗口失去焦点时触发 windowDeiconified(WindowEvent e) windowIconified(WindowEvent e) windowOpened(WindowEvent e) 窗口打开之后触发 Jframe可使用语句setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE)来设置默认的窗口关闭事件处理
54
§ 1.4 Java技术基础 1.4.8 一个窗口应用程序 按钮
55
§ 1.4 Java技术基础 1.4.8 一个窗口应用程序 按钮 import javax.swing.*;
import java.awt.event.*; public class TestFrame extends JFrame { private int counter = 0; JButton jButton = new JButton("JButton"); //按钮 JToggleButton toggle = new JToggleButton("Toggle Button"); //切换按钮 JCheckBox checkBox = new JCheckBox("Check Box"); //复选按钮 JRadioButton radio1 = new JRadioButton("Radio Button 1"); //单选按钮 JRadioButton radio2 = new JRadioButton("Radio Button 2"); JRadioButton radio3 = new JRadioButton("Radio Button 3"); JLabel label = new JLabel("Here is Status, look here."); //不是按钮,是静态文本 public TestFrame() { /* 使用匿名类添加一个窗口监听器 */ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("Exit when Closed event"); System.exit(0); //退出应用程序 } public void windowActivated(WindowEvent e) { setTitle("Test Frame " + counter++); // 改变窗口标题 }); setResizable(false); // 设置窗口为固定大小 setSize(200, 250); this.getContentPane().setLayout(new java.awt.FlowLayout()); /* 为一般按钮添加动作监听器 */ jButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { label.setText("You clicked jButton"); /* 为切换按钮添加动作监听器 */ toggle.addActionListener(new ActionListener() { JToggleButton toggle = (JToggleButton) ae.getSource(); if (toggle.isSelected()) { label.setText("You selected Toggle Button"); } else { label.setText("You deselected Toggle Button"); /* 为复选按钮添加条目监听器 */ checkBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { JCheckBox cb = (JCheckBox) e.getSource(); label.setText("Selected Check Box is " + cb.isSelected()); /* 用一个按钮组对象包容一组单选按钮 */ ButtonGroup group = new ButtonGroup(); /* 生成一个新的动作监听器对象,备用 */ ActionListener al = new ActionListener() { JRadioButton radio = (JRadioButton) ae.getSource(); if (radio == radio1) { label.setText("You selected Radio Button 1"); } else if (radio == radio2) { label.setText("You selected Radio Button 2"); label.setText("You selected Radio Button 3"); }; /* 为各单选按钮添加动作监听器 */ radio1.addActionListener(al); radio2.addActionListener(al); radio3.addActionListener(al); /* 将单选按钮添加到按钮组中 */ group.add(radio1); group.add(radio2); group.add(radio3); this.getContentPane().add(jButton); this.getContentPane().add(toggle); this.getContentPane().add(checkBox); this.getContentPane().add(radio1); this.getContentPane().add(radio2); this.getContentPane().add(radio3); this.getContentPane().add(label); public static void main(String[] args) { TestFrame tf = new TestFrame(); tf.show();
56
§ 1.4 Java技术基础 1.4.8 一个窗口应用程序 文本输入框与密码输入框 面板、滚动面板、布局管理
JPanel和JScrollPane用于在窗口中布置和安排各种组件; 组件在JPanel和JScrollPane内的排列方式称为布局。布局可通过程序员手工布局,也可使用布局管理器来自动布局。 FlowLayout(JPanel默认)、BorderLayout(JFrame、JApplet默认)、GridLayout、BoxLayout
57
Any Questions or Comments?
Similar presentations