亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java教學(xué)中三層架構(gòu)之講授技巧

        2009-02-24 07:02:48
        計(jì)算機(jī)教育 2009年2期
        關(guān)鍵詞:三層架構(gòu)

        周 永 岳 靜

        文章編號(hào):1672-5913(2009)02-0127-03

        摘要:本文講述了在面向?qū)ο缶幊陶Z言Java的教學(xué)中,如何通過使用有效的教學(xué)方法和技巧,讓學(xué)生從理論上能夠很好地理解三層架構(gòu),從實(shí)踐上能夠很好地運(yùn)用三層架構(gòu)進(jìn)行網(wǎng)絡(luò)及數(shù)據(jù)庫程序開發(fā)。

        關(guān)鍵詞:Java教學(xué);三層架構(gòu);網(wǎng)絡(luò)程序

        中圖分類號(hào):G642

        文獻(xiàn)標(biāo)識(shí)碼:B

        Java是近年來非常流行的編程語言,其安全性和可移植性是兩個(gè)最大的優(yōu)點(diǎn),并且是純粹的面向?qū)ο笳Z言。因?yàn)镴ava語言的實(shí)用和受歡迎程度,越來越多的高校都選擇了Java這門編程語言給學(xué)生講授。雖然Java摒棄了C和C++語言中一些復(fù)雜的語法格式,不少人認(rèn)為它是簡單的,但實(shí)際上,對(duì)于沒有面向?qū)ο罄碚摰膶W(xué)生,仍然需要花費(fèi)比較多的時(shí)間才能入門。筆者已連續(xù)七年從事Java教學(xué),并在教學(xué)中不斷地探索和總結(jié),找出了一些很好的、能引導(dǎo)學(xué)生進(jìn)入Java殿堂的方法。下面以Java教學(xué)中較困難的三層架構(gòu)為例進(jìn)行說明。

        1概述

        三層架構(gòu)是目前流行的架構(gòu)設(shè)計(jì)模式,它由表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層三個(gè)層次結(jié)構(gòu)組成。通常情況下我們所說的三層架構(gòu),實(shí)際上并不是指確定的數(shù)值“三”,三代表“多”,三層架構(gòu)實(shí)際上叫做多層架構(gòu)。在本文中,只論述真正只有三層的架構(gòu),即“客戶端—中間層服務(wù)—后臺(tái)數(shù)據(jù)庫服務(wù)器”這樣的架構(gòu),主要探討在Java這門特定的語言中如何更好地向?qū)W生傳授三層架構(gòu)的編程理念與方法。

        2讓學(xué)生從感性上認(rèn)識(shí)三層架構(gòu)

        Java是面向?qū)ο蟮恼Z言,但很多教師在教學(xué)的時(shí)候卻忽略了他們“面向的對(duì)象”,即坐在教師面前的學(xué)生,不注意因材施教。如果是對(duì)于已經(jīng)具有面向?qū)ο笏枷氲膶W(xué)生,在講解很多的內(nèi)容時(shí)可以比較輕松的帶過;但對(duì)于初次碰到面向?qū)ο缶幊陶Z言的學(xué)生,在講授過程中,教師必須要讓他們先理解面向?qū)ο?,然后才能講在Java中的對(duì)象是怎么樣的。同樣的道理,在進(jìn)行三層架構(gòu)編程的教學(xué)時(shí),如果學(xué)生連三層架構(gòu)都認(rèn)識(shí)不清,如何能學(xué)好這方面的編程呢?

        教師首先可以通過“問答式教學(xué)”讓學(xué)生了解,傳統(tǒng)的兩層架構(gòu)的缺點(diǎn)??梢赃@樣引導(dǎo)學(xué)生:將大家已經(jīng)編寫好的訪問數(shù)據(jù)庫的程序,轉(zhuǎn)換成Applet在網(wǎng)頁中運(yùn)行。已知在本地計(jì)算機(jī)測(cè)試能夠成功運(yùn)行,那么,當(dāng)把Applet傳到Web服務(wù)器上,其他的用戶通過你編寫的網(wǎng)頁能否正常的訪問數(shù)據(jù)庫呢?學(xué)生思考一下便知道,在本地計(jì)算機(jī)上能夠成功是因?yàn)檎_的配置了ODBC數(shù)據(jù)源。但是,瀏覽網(wǎng)頁的用戶并沒有相應(yīng)的配置數(shù)據(jù)源,也沒有訪問數(shù)據(jù)庫的驅(qū)動(dòng)程序。在這些計(jì)算機(jī)上,就無法連接到后臺(tái)數(shù)據(jù)庫。

        教師在講授比較復(fù)雜的內(nèi)容的時(shí)候,最好不要先講一大堆理論,而是最好先讓學(xué)生建立一種感性上的認(rèn)識(shí)。教師要么通過生動(dòng)的語言,要么通過形象的比喻,讓學(xué)生建立感性認(rèn)識(shí)。對(duì)于三層架構(gòu),可以這樣比喻:兩層架構(gòu)是學(xué)生直接把作業(yè)交給教師;三層架構(gòu)是學(xué)生把作業(yè)交給課代表,之后由課代表交給教師。在兩層的情形中,每一個(gè)學(xué)生都要知道老師的辦公室在什么地方;而在三層的情形中,普通學(xué)生無需知道老師的辦公室在什么地方,只需課代表知道就可以了。

        3讓學(xué)生從理論上認(rèn)識(shí)三層架構(gòu)

        在傳統(tǒng)的兩層架構(gòu)中,只有客戶端和后臺(tái)數(shù)據(jù)庫,這就要求兩點(diǎn):一是客戶端必須具有數(shù)據(jù)訪問的引擎,這樣才能連接數(shù)據(jù)庫;二是每一個(gè)客戶端都需要知道后臺(tái)數(shù)據(jù)庫的位置。而對(duì)于三層架構(gòu),客戶端把數(shù)據(jù)發(fā)送到中間層服務(wù)器,中間層服務(wù)器再負(fù)責(zé)和后臺(tái)數(shù)據(jù)庫之間的數(shù)據(jù)傳遞。顯然地,三層模型具有很大的優(yōu)點(diǎn)。對(duì)客戶端而言,它不需要數(shù)據(jù)訪問引擎,它也不需要知道后臺(tái)數(shù)據(jù)庫在什么地方??蛻糁恍枰乐虚g層服務(wù)器在什么地方就可以了。這種實(shí)現(xiàn)方案,實(shí)際上提高了系統(tǒng)的安全性:對(duì)客戶端而言,服務(wù)器是隱藏的,客戶不知道服務(wù)器的具體位置。圖1是三層架構(gòu)程序的示意圖:

        在讓學(xué)生從總體上了解了三層架構(gòu)之后,接下來,需要講解和三層架構(gòu)編程相關(guān)的一些概念。學(xué)生必須掌握這些知識(shí),才能進(jìn)行后續(xù)的實(shí)際編程。要給學(xué)生講解的幾個(gè)概念是:協(xié)議、套接字、IP地址和端口。

        協(xié)議:當(dāng)計(jì)算機(jī)之間進(jìn)行通訊的時(shí)候,需要遵循一定的規(guī)則。數(shù)據(jù)以包的形式從一臺(tái)機(jī)器發(fā)送到另一臺(tái)。這些規(guī)則管理數(shù)據(jù)的打包、數(shù)據(jù)傳輸速度,以及重新創(chuàng)建數(shù)據(jù)將其恢復(fù)成原始形式。這些規(guī)則被稱為網(wǎng)絡(luò)協(xié)議。網(wǎng)絡(luò)協(xié)議是通過網(wǎng)絡(luò)進(jìn)行通訊的系統(tǒng)所遵循的一系列規(guī)則和慣例。網(wǎng)絡(luò)協(xié)議如TCP/IP、UDP、Apple Talk和NetBEUI。Java提供了一個(gè)豐富的、支持網(wǎng)絡(luò)的類庫,這些類使得應(yīng)用程序能方便地訪問網(wǎng)絡(luò)資源。Java提供了對(duì)用戶報(bào)文協(xié)議(UDP)及傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)的支持。

        套接字:傳輸控制協(xié)議(TCP)提供了一條可靠的、點(diǎn)對(duì)點(diǎn)的通訊通道,客戶機(jī)/服務(wù)器應(yīng)用程序可以用該通道相互通訊。要通過TCP進(jìn)行通訊,客戶機(jī)和服務(wù)器程序建立連接并綁定套接字。套接字用于處理通過網(wǎng)絡(luò)連接的應(yīng)用程序之間的通訊??蛻魴C(jī)和服務(wù)器之間更深入的通訊通過套接字完成。Java被設(shè)計(jì)成一種網(wǎng)絡(luò)語言。它將連接功能封裝到套接字類里,而使得網(wǎng)絡(luò)編程更加容易。套接字類(即java.net.Socket類)用于創(chuàng)建一個(gè)客戶套接字,而服務(wù)器套接字類(即java.net.ServerSocket類)創(chuàng)建一個(gè)服務(wù)器套接字。

        IP地址和端口:TCP協(xié)議需要兩個(gè)數(shù)據(jù)項(xiàng):IP地址和端口號(hào)。互聯(lián)網(wǎng)設(shè)備都帶有一個(gè)稱為IP地址的邏輯地址。IP地址具有特定的形式,每個(gè)IP地址都是32位的數(shù)值,表示4個(gè)范圍在0到255之間的數(shù)值。目前采用的32個(gè)二進(jìn)制位進(jìn)行編碼的IP地址又被稱為IPv4標(biāo)準(zhǔn),下一代編碼將采用IPv6標(biāo)準(zhǔn),以128個(gè)二進(jìn)制位進(jìn)行編碼。端口號(hào)是一個(gè)邏輯概念,不同的端口用來響應(yīng)不同的服務(wù),常用的端口如21、80、110等。可以這樣理解:IP地址讓我們找到特定計(jì)算機(jī),而端口號(hào)讓我們找到計(jì)算機(jī)上的程序進(jìn)程。

        4讓學(xué)生掌握J(rèn)ava中三層架構(gòu)程序開發(fā)的方法

        下面以NIIT提供的Java教材為例,講解三層架構(gòu)程序的開發(fā)。軟件需求是:用戶在界面中輸入數(shù)據(jù),數(shù)據(jù)以對(duì)象的方式發(fā)送給中間層服務(wù)器,中間層服務(wù)器驗(yàn)證數(shù)據(jù)后,連接到數(shù)據(jù)庫服務(wù)器并執(zhí)行存儲(chǔ)操作。以下是教學(xué)中的要點(diǎn)。

        4.1了解要用到的相關(guān)類和方法

        (1) 服務(wù)器使用的類:

        創(chuàng)建服務(wù)器的過程就是創(chuàng)建在特定端口監(jiān)聽客戶機(jī)請(qǐng)求的ServerSocket對(duì)象的過程。當(dāng)收到一個(gè)合法請(qǐng)求時(shí),服務(wù)器套接字獲得客戶機(jī)創(chuàng)建的Socket對(duì)象。服務(wù)器和客戶機(jī)之間的通訊通過套接字發(fā)生。服務(wù)器套接字等待來自整個(gè)網(wǎng)絡(luò)的請(qǐng)求。它根據(jù)請(qǐng)求完成操作,并將結(jié)果返回到客戶機(jī)。ServerSocket類在客戶機(jī)/服務(wù)器應(yīng)用程序中代表服務(wù)器。ServerSocket類提供在特定端口上創(chuàng)建套接字的構(gòu)造函數(shù)。如果傳入端口的參數(shù)值為0,則在自由端口上創(chuàng)建套接字。

        ServerSocket的構(gòu)造方法:

        public ServerSocket(int port) throws IOException

        功能:創(chuàng)建服務(wù)器套接字,并綁定到指定的端口上。例如:ServerSocket server=new ServerSocket(5460);

        注意:該類在構(gòu)造的時(shí)候,可能導(dǎo)致例外的發(fā)生。例如,指定的端口已經(jīng)被占用。

        (2) 客戶端使用的類:

        創(chuàng)建一個(gè)套接字客戶機(jī)的第一步是創(chuàng)建Socket對(duì)象。Socket類的構(gòu)造函數(shù)接收兩個(gè)參數(shù) IP地址和服務(wù)器監(jiān)聽的端口號(hào)。

        Socket clientSocket =

        new Socket(“202.202.96.35”,5460);

        在上述代碼片段中,主機(jī)名是“202.202.96.35”,端口號(hào)5460是服務(wù)器監(jiān)聽所在的端口。

        4.2了解封裝數(shù)據(jù)的方法

        創(chuàng)建網(wǎng)絡(luò)服務(wù)器時(shí),服務(wù)器程序如何與客戶進(jìn)行交流?也就是服務(wù)器如何知道客戶所傳遞的數(shù)據(jù)到底是什么格式?客戶機(jī)與服務(wù)器的數(shù)據(jù)傳遞的前提包括:

        (1) 二者在數(shù)據(jù)的發(fā)送和接收上必須保持一定的格式,相互間能識(shí)別;

        (2) 要保持格式的一致性應(yīng)事先約定;

        (3) 實(shí)現(xiàn)一致的方法是,客戶端在發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)封裝到一個(gè)類里面。服務(wù)器端接收到數(shù)據(jù)后,把收到的數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為相應(yīng)類型;

        (4) 要達(dá)到上述目的應(yīng)該使用java.io包下的ObjectInputStream、ObjectOutputStream類。

        4.3 寫程序時(shí)的步驟

        (1) 用來封裝要傳遞數(shù)據(jù)的類。下面是一個(gè)例子:

        import java.io.*;

        public class MyFriend extends Object

        implements Serializable

        {

        String vName;

        String cSex;

        String dBirth;

        String cPhone;

        }

        (2) 編寫接收和存儲(chǔ)數(shù)據(jù)的類(Connect)

        用一個(gè)客戶請(qǐng)求套接字作為構(gòu)造參數(shù),之后讀取收到的數(shù)據(jù)并進(jìn)行格式化(造型操作)。

        ObjectInputStream streamClient= new ObjectInputStream(inFromClient.getInputStream())

        MyFriend data=(MyFriend)

        streamClient.readObject();

        (3) 編寫監(jiān)聽端口、響應(yīng)客戶請(qǐng)求的類(AppServer)

        服務(wù)器程序通過ServerSocket類監(jiān)聽客戶的請(qǐng)求,由于客戶不止一個(gè),所以,服務(wù)器程序應(yīng)該是一個(gè)多線程的程序。通過extendsThread方法可以讓服務(wù)器類實(shí)現(xiàn)多線程。

        (4) 編寫客戶端程序

        4.4調(diào)試時(shí)的注意事項(xiàng)

        對(duì)于客戶端而言,客戶程序中要指定中間層服務(wù)器的IP地址和端口,通過IP地址和端口連接到中間層服務(wù)器。對(duì)于中間層服務(wù)器而言,它要接受客戶端傳遞來的數(shù)據(jù),所以必須運(yùn)行在和客戶端約定好的一個(gè)端口上。另外,中間層負(fù)責(zé)訪問后臺(tái)數(shù)據(jù)庫服務(wù)器,所以必須保證ODBC的成功配置。調(diào)試的時(shí)候必須注意啟動(dòng)順序:第一,后臺(tái)數(shù)據(jù)庫(如SQL Server)正在運(yùn)行;第二,中間層服務(wù)器啟動(dòng),開始偵聽來自客戶的請(qǐng)求;第三,運(yùn)行客戶端。

        5小結(jié)

        以上以三層架構(gòu)為例,展示了如何更好地將知識(shí)傳授給學(xué)生。教師要很好地完成傳道授業(yè)的重任,除了在專業(yè)領(lǐng)域提高深度與廣度外,還需要相當(dāng)?shù)呢?zé)任感。要用心去準(zhǔn)備每一堂課,要和學(xué)生換位,站在他們的角度,考慮選擇怎么樣的講授方法。此外,教師還應(yīng)該在自己的教學(xué)中不斷總結(jié),讓自己不斷提高。

        參考文獻(xiàn)

        [1] 張席,王志強(qiáng). 國內(nèi)外Java教學(xué)模式的比較與探討[J]. 計(jì)算機(jī)教育,2007,(1).

        [2] 王紅.“Java 語言程序設(shè)計(jì)”課學(xué)生能力的培養(yǎng)[J]. 計(jì)算機(jī)教育,2007,(8).

        [3] 教育部人事司. 高等教育心理學(xué)[M]. 北京:高等教育出版社,2004.

        [4] 覃昆,張蓉蓉. 基于B/S結(jié)構(gòu)、三層架構(gòu)和ASP.NET 2.0技術(shù)的基層黨組織協(xié)同管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 貴州大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,(1).

        [5] 孫衛(wèi)琴. Java面向?qū)ο缶幊蘙M]. 北京:電子工業(yè)出版社,2008.

        猜你喜歡
        三層架構(gòu)
        基于.NET電子網(wǎng)絡(luò)技術(shù)的高??蒲泄芾硐到y(tǒng)設(shè)計(jì)研究
        基于“三層架構(gòu)”理論的教學(xué)設(shè)計(jì)案例分析
        良好的信息系統(tǒng)體系結(jié)構(gòu)模式對(duì)網(wǎng)絡(luò)安全監(jiān)察與維護(hù)技術(shù)的方法的探討
        ASP.NET三層架構(gòu)體系分析與應(yīng)用
        培訓(xùn)機(jī)構(gòu)信息發(fā)布平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
        匯票管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        基于SSH 的實(shí)驗(yàn)室管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        基于ASP.NETAJAX技術(shù)的在線考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        基于三層架構(gòu)的煙草公司績效考核系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        基于三層架構(gòu)的青春勵(lì)志網(wǎng)站設(shè)計(jì)與開發(fā)
        天天躁日日操狠狠操欧美老妇| 极品少妇小泬50pthepon| 国产成年女人特黄特色毛片免 | 亚洲乱码av一区二区蜜桃av| 亚洲中文字幕无码av永久 | 亚洲av中文无码乱人伦在线r▽| 91精品国产免费久久久久久青草| 91国内偷拍一区二区三区| 亚洲精品国产第一综合色吧| 亚洲av无码av制服另类专区| 中文字幕无码专区一VA亚洲V专 | 日日碰狠狠添天天爽| 亚洲成人免费观看| 国产一级黄色性生活片| 337p日本欧洲亚洲大胆色噜噜| 亚洲国产精品福利片在线观看 | 国产精品丝袜一区二区三区在线| 亚洲国产一区二区三区| 欧美xxxx色视频在线观看| 无码日日模日日碰夜夜爽| 81久久免费精品国产色夜| 亚洲av中文无码乱人伦在线咪咕| 人妻熟妇乱又伦精品视频app| 亚洲成A人A∨久在线观看| 国产精品国产三级国产专区不| 免费无码中文字幕a级毛片| 91精彩视频在线观看| 97激情在线视频五月天视频| 18禁裸体动漫美女无遮挡网站| 成人精品综合免费视频| 亚洲无线码一区在线观看| 加勒比婷婷色综合久久| 亚洲av中文无码乱人伦在线播放| 成人xx免费无码| 日产一区二区三区的精品| 国产色在线 | 日韩| 国产3p视频| 国产av精品久久一区二区| 无码无套少妇毛多18p| 欧美色aⅴ欧美综合色| 亚洲一区二区三区av色婷婷|