本章主要關(guān)注的是Java的幾個(gè)應(yīng)用網(wǎng)絡(luò)編程的場(chǎng)景,對(duì)于網(wǎng)絡(luò)編程沒(méi)有太多深入介紹,而Java本來(lái)也沒(méi)有多少針對(duì)網(wǎng)絡(luò)編程的特性。
雖然Java有個(gè)Applet的概念,但是真用這個(gè)的開(kāi)發(fā)的場(chǎng)景其實(shí)不多。
23.1 引言
服務(wù)器(server)程序?yàn)槠渌蛻舳耍╟lient)程序提供某種類(lèi)型的服務(wù),與客戶端程序通常位于不同的機(jī)器上。
一個(gè)程序可以既是服務(wù)器程序也是客戶端程序,主要是看它是在為其他程序服務(wù),還是在使用其他程序的服務(wù)。
甚至還可以整合其他服務(wù)器程序上的服務(wù),打包成自己的服務(wù),提供給客戶端程序使用。
23.2 applet
applet是一種Java程序,能夠從網(wǎng)頁(yè)中下載并在瀏覽器中運(yùn)行。因?yàn)镴ava運(yùn)行在虛擬機(jī)上,因此可以做到平臺(tái)獨(dú)立,使得程序與客戶機(jī)上的操作系統(tǒng)無(wú)關(guān)。
23.3 訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)
Java數(shù)據(jù)庫(kù)連接(Java Database Connectivity, JDBC):是Java訪問(wèn)數(shù)據(jù)庫(kù)的通用接口,數(shù)據(jù)庫(kù)管理系統(tǒng)提供JDBC驅(qū)動(dòng),從而保證應(yīng)用程序不需要關(guān)注不同數(shù)據(jù)庫(kù)的區(qū)別。
驅(qū)動(dòng)(driver)是一種軟件,能夠使得兩個(gè)程序進(jìn)行通信,或者幫助軟件與硬件通信。
23.4 Socket
Socket是一種軟件機(jī)制,能夠幫助程序員隱藏傳輸數(shù)據(jù)的細(xì)節(jié),類(lèi)似于高級(jí)文件處理類(lèi)幫助程序隱藏外部存儲(chǔ)器的細(xì)節(jié),
使得程序能夠基于流的方式來(lái)處理網(wǎng)絡(luò)連接上的數(shù)據(jù)的讀寫(xiě)。
自測(cè)題:
1. 客戶--服務(wù)器體系結(jié)構(gòu):
服務(wù)器(server)程序?yàn)槠渌蛻舳耍╟lient)程序提供某種類(lèi)型的服務(wù),與客戶端程序通常位于不同的機(jī)器上。
一個(gè)程序可以既是服務(wù)器程序也是客戶端程序,主要是看它是在為其他程序服務(wù),還是在使用其他程序的服務(wù)。
甚至還可以整合其他服務(wù)器程序上的服務(wù),打包成自己的服務(wù),提供給客戶端程序使用。
2. applet和應(yīng)用程序的區(qū)別:
applet和應(yīng)用程序都是一種Java程序。
applet是運(yùn)行在瀏覽器的JVM中;而應(yīng)用程序是運(yùn)行在操作系統(tǒng)的JVM中。
applet沒(méi)有main()方法,因?yàn)樗\(yùn)行在瀏覽器中,控制任務(wù)由瀏覽器負(fù)責(zé);應(yīng)用程序則包含main()方法,main()方法中可以控制程序的所有行為。
3. 專(zhuān)用的applet方法(與paint方法一起運(yùn)行)
init:applet被瀏覽器裝載(或者重新裝載)時(shí),首先調(diào)用的方法。
start:init方法被調(diào)用后調(diào)用的方法;每一次返回頁(yè)面使得applet可見(jiàn)時(shí),也會(huì)調(diào)用的方法。
paint:start方法被調(diào)用時(shí),立即調(diào)用的方法。
stop:當(dāng)applet被隱藏時(shí)(選擇了瀏覽器其他頁(yè)面),調(diào)用的方法。
destroy:當(dāng)applet被拋棄時(shí)(關(guān)閉了瀏覽器),調(diào)用的方法。
4. JDBC技術(shù)
Java數(shù)據(jù)庫(kù)連接(Java Database Connectivity, JDBC):是Java訪問(wèn)數(shù)據(jù)庫(kù)的通用接口,數(shù)據(jù)庫(kù)管理系統(tǒng)提供JDBC驅(qū)動(dòng),從而保證應(yīng)用程序不需要關(guān)注不同數(shù)據(jù)庫(kù)的區(qū)別。
5. Socket類(lèi)和ServerSocket類(lèi)的功能和用途。
Socket類(lèi)的基本功能:
* 連接到遠(yuǎn)程機(jī)器;
* 發(fā)送數(shù)據(jù);
* 接收數(shù)據(jù);
* 關(guān)閉一個(gè)連接。
ServerSocket類(lèi)的附加功能:
* 綁定一個(gè)端口;
* 在綁定的端口上監(jiān)聽(tīng)進(jìn)入的數(shù)據(jù);
* 在綁定的端口上接受遠(yuǎn)程客戶端的連接;
編程練習(xí):代碼附件
1. ChangingFaceApplet.java
2. MetricConverterApplet.java RedCircleApplet.java
3. ProductQuery.java
4. 挖坑。。。
5. JokeServer.java JokeClient.java RunJokeServer.java RunJokeClient.java
6. 挖坑。。。