周 永 岳 静
文章编号:1672-5913(2009)02-0127-03
摘要:本文讲述了在面向对象编程语言Java的教学中,如何通过使用有效的教学方法和技巧,让学生从理论上能够很好地理解三层架构,从实践上能够很好地运用三层架构进行网络及数据库程序开发。
关键词:Java教学;三层架构;网络程序
中图分类号:G642
文献标识码:B
Java是近年来非常流行的编程语言,其安全性和可移植性是两个最大的优点,并且是纯粹的面向对象语言。因为Java语言的实用和受欢迎程度,越来越多的高校都选择了Java这门编程语言给学生讲授。虽然Java摒弃了C和C++语言中一些复杂的语法格式,不少人认为它是简单的,但实际上,对于没有面向对象理论的学生,仍然需要花费比较多的时间才能入门。笔者已连续七年从事Java教学,并在教学中不断地探索和总结,找出了一些很好的、能引导学生进入Java殿堂的方法。下面以Java教学中较困难的三层架构为例进行说明。
1概述
三层架构是目前流行的架构设计模式,它由表示层、业务逻辑层和数据访问层三个层次结构组成。通常情况下我们所说的三层架构,实际上并不是指确定的数值“三”,三代表“多”,三层架构实际上叫做多层架构。在本文中,只论述真正只有三层的架构,即“客户端—中间层服务—后台数据库服务器”这样的架构,主要探讨在Java这门特定的语言中如何更好地向学生传授三层架构的编程理念与方法。
2让学生从感性上认识三层架构
Java是面向对象的语言,但很多教师在教学的时候却忽略了他们“面向的对象”,即坐在教师面前的学生,不注意因材施教。如果是对于已经具有面向对象思想的学生,在讲解很多的内容时可以比较轻松的带过;但对于初次碰到面向对象编程语言的学生,在讲授过程中,教师必须要让他们先理解面向对象,然后才能讲在Java中的对象是怎么样的。同样的道理,在进行三层架构编程的教学时,如果学生连三层架构都认识不清,如何能学好这方面的编程呢?
教师首先可以通过“问答式教学”让学生了解,传统的两层架构的缺点。可以这样引导学生:将大家已经编写好的访问数据库的程序,转换成Applet在网页中运行。已知在本地计算机测试能够成功运行,那么,当把Applet传到Web服务器上,其他的用户通过你编写的网页能否正常的访问数据库呢?学生思考一下便知道,在本地计算机上能够成功是因为正确的配置了ODBC数据源。但是,浏览网页的用户并没有相应的配置数据源,也没有访问数据库的驱动程序。在这些计算机上,就无法连接到后台数据库。
教师在讲授比较复杂的内容的时候,最好不要先讲一大堆理论,而是最好先让学生建立一种感性上的认识。教师要么通过生动的语言,要么通过形象的比喻,让学生建立感性认识。对于三层架构,可以这样比喻:两层架构是学生直接把作业交给教师;三层架构是学生把作业交给课代表,之后由课代表交给教师。在两层的情形中,每一个学生都要知道老师的办公室在什么地方;而在三层的情形中,普通学生无需知道老师的办公室在什么地方,只需课代表知道就可以了。
3让学生从理论上认识三层架构
在传统的两层架构中,只有客户端和后台数据库,这就要求两点:一是客户端必须具有数据访问的引擎,这样才能连接数据库;二是每一个客户端都需要知道后台数据库的位置。而对于三层架构,客户端把数据发送到中间层服务器,中间层服务器再负责和后台数据库之间的数据传递。显然地,三层模型具有很大的优点。对客户端而言,它不需要数据访问引擎,它也不需要知道后台数据库在什么地方。客户只需要知道中间层服务器在什么地方就可以了。这种实现方案,实际上提高了系统的安全性:对客户端而言,服务器是隐藏的,客户不知道服务器的具体位置。图1是三层架构程序的示意图:
在让学生从总体上了解了三层架构之后,接下来,需要讲解和三层架构编程相关的一些概念。学生必须掌握这些知识,才能进行后续的实际编程。要给学生讲解的几个概念是:协议、套接字、IP地址和端口。
协议:当计算机之间进行通讯的时候,需要遵循一定的规则。数据以包的形式从一台机器发送到另一台。这些规则管理数据的打包、数据传输速度,以及重新创建数据将其恢复成原始形式。这些规则被称为网络协议。网络协议是通过网络进行通讯的系统所遵循的一系列规则和惯例。网络协议如TCP/IP、UDP、Apple Talk和NetBEUI。Java提供了一个丰富的、支持网络的类库,这些类使得应用程序能方便地访问网络资源。Java提供了对用户报文协议(UDP)及传输控制协议/因特网协议(TCP/IP)的支持。
套接字:传输控制协议(TCP)提供了一条可靠的、点对点的通讯通道,客户机/服务器应用程序可以用该通道相互通讯。要通过TCP进行通讯,客户机和服务器程序建立连接并绑定套接字。套接字用于处理通过网络连接的应用程序之间的通讯。客户机和服务器之间更深入的通讯通过套接字完成。Java被设计成一种网络语言。它将连接功能封装到套接字类里,而使得网络编程更加容易。套接字类(即java.net.Socket类)用于创建一个客户套接字,而服务器套接字类(即java.net.ServerSocket类)创建一个服务器套接字。
IP地址和端口:TCP协议需要两个数据项:IP地址和端口号。互联网设备都带有一个称为IP地址的逻辑地址。IP地址具有特定的形式,每个IP地址都是32位的数值,表示4个范围在0到255之间的数值。目前采用的32个二进制位进行编码的IP地址又被称为IPv4标准,下一代编码将采用IPv6标准,以128个二进制位进行编码。端口号是一个逻辑概念,不同的端口用来响应不同的服务,常用的端口如21、80、110等。可以这样理解:IP地址让我们找到特定计算机,而端口号让我们找到计算机上的程序进程。
4让学生掌握Java中三层架构程序开发的方法
下面以NIIT提供的Java教材为例,讲解三层架构程序的开发。软件需求是:用户在界面中输入数据,数据以对象的方式发送给中间层服务器,中间层服务器验证数据后,连接到数据库服务器并执行存储操作。以下是教学中的要点。
4.1了解要用到的相关类和方法
(1) 服务器使用的类:
创建服务器的过程就是创建在特定端口监听客户机请求的ServerSocket对象的过程。当收到一个合法请求时,服务器套接字获得客户机创建的Socket对象。服务器和客户机之间的通讯通过套接字发生。服务器套接字等待来自整个网络的请求。它根据请求完成操作,并将结果返回到客户机。ServerSocket类在客户机/服务器应用程序中代表服务器。ServerSocket类提供在特定端口上创建套接字的构造函数。如果传入端口的参数值为0,则在自由端口上创建套接字。
ServerSocket的构造方法:
public ServerSocket(int port) throws IOException
功能:创建服务器套接字,并绑定到指定的端口上。例如:ServerSocket server=new ServerSocket(5460);
注意:该类在构造的时候,可能导致例外的发生。例如,指定的端口已经被占用。
(2) 客户端使用的类:
创建一个套接字客户机的第一步是创建Socket对象。Socket类的构造函数接收两个参数 IP地址和服务器监听的端口号。
Socket clientSocket =
new Socket(“202.202.96.35”,5460);
在上述代码片段中,主机名是“202.202.96.35”,端口号5460是服务器监听所在的端口。
4.2了解封装数据的方法
创建网络服务器时,服务器程序如何与客户进行交流?也就是服务器如何知道客户所传递的数据到底是什么格式?客户机与服务器的数据传递的前提包括:
(1) 二者在数据的发送和接收上必须保持一定的格式,相互间能识别;
(2) 要保持格式的一致性应事先约定;
(3) 实现一致的方法是,客户端在发送数据时,将数据封装到一个类里面。服务器端接收到数据后,把收到的数据强制转换为相应类型;
(4) 要达到上述目的应该使用java.io包下的ObjectInputStream、ObjectOutputStream类。
4.3 写程序时的步骤
(1) 用来封装要传递数据的类。下面是一个例子:
import java.io.*;
public class MyFriend extends Object
implements Serializable
{
String vName;
String cSex;
String dBirth;
String cPhone;
}
(2) 编写接收和存储数据的类(Connect)
用一个客户请求套接字作为构造参数,之后读取收到的数据并进行格式化(造型操作)。
ObjectInputStream streamClient= new ObjectInputStream(inFromClient.getInputStream())
MyFriend data=(MyFriend)
streamClient.readObject();
(3) 编写监听端口、响应客户请求的类(AppServer)
服务器程序通过ServerSocket类监听客户的请求,由于客户不止一个,所以,服务器程序应该是一个多线程的程序。通过extendsThread方法可以让服务器类实现多线程。
(4) 编写客户端程序
4.4调试时的注意事项
对于客户端而言,客户程序中要指定中间层服务器的IP地址和端口,通过IP地址和端口连接到中间层服务器。对于中间层服务器而言,它要接受客户端传递来的数据,所以必须运行在和客户端约定好的一个端口上。另外,中间层负责访问后台数据库服务器,所以必须保证ODBC的成功配置。调试的时候必须注意启动顺序:第一,后台数据库(如SQL Server)正在运行;第二,中间层服务器启动,开始侦听来自客户的请求;第三,运行客户端。
5小结
以上以三层架构为例,展示了如何更好地将知识传授给学生。教师要很好地完成传道授业的重任,除了在专业领域提高深度与广度外,还需要相当的责任感。要用心去准备每一堂课,要和学生换位,站在他们的角度,考虑选择怎么样的讲授方法。此外,教师还应该在自己的教学中不断总结,让自己不断提高。
参考文献
[1] 张席,王志强. 国内外Java教学模式的比较与探讨[J]. 计算机教育,2007,(1).
[2] 王红.“Java 语言程序设计”课学生能力的培养[J]. 计算机教育,2007,(8).
[3] 教育部人事司. 高等教育心理学[M]. 北京:高等教育出版社,2004.
[4] 覃昆,张蓉蓉. 基于B/S结构、三层架构和ASP.NET 2.0技术的基层党组织协同管理系统设计与实现[J]. 贵州大学学报(自然科学版),2008,(1).
[5] 孙卫琴. Java面向对象编程[M]. 北京:电子工业出版社,2008.