- Java Web開發(fā)就該這樣學(xué)
- 王洋編著
- 6字
- 2018-12-30 08:32:47
第1章 認(rèn)識Tomcat
1.1 什么是Web Server
今天來討論Web對大多數(shù)人來說都不是多么陌生的概念,我們在電腦中打開瀏覽器,在地址欄中輸入http://www.sohu.com,就能夠看到搜狐公司提供給我們的網(wǎng)頁,來思考一下在你的操作背后,計算機(jī)本身以及Internet為我們在做些什么事情。
首先是瀏覽器,經(jīng)過Java部分編程的學(xué)習(xí),你不應(yīng)該對計算機(jī)里面的任何程序有所敬畏,那些程序都是和你一樣的程序員編寫出來的,理論上只要你愿意,花些時間你也可以編寫出相似的程序!
那么,如果由你來編寫一個瀏覽器,你會做些什么?我們能夠想象,用戶輸入的http://www.sohu.com是一個網(wǎng)址,它對應(yīng)了一個IP地址,通過網(wǎng)址得到一個IP地址,并不是一件多么難的事情,互聯(lián)網(wǎng)上的DNS服務(wù)就可以提供這樣的轉(zhuǎn)換。作為一個程序員,得到一個IP地址后,會創(chuàng)建Socket對象和對方連接上,目的是為了得到一個特定的網(wǎng)頁,我們常常能夠在瀏覽器的地址欄中看到這樣的網(wǎng)址:http://www.360buy.com/product/258313.html,意思是我要看京東網(wǎng)站上的258313.html這個文件的內(nèi)容。這是由于一個網(wǎng)站上的網(wǎng)頁文件太多了,所以還會有路徑結(jié)構(gòu)。
http://www.sohu.com這樣的網(wǎng)址請求是個例外,你并沒有指定要看哪個網(wǎng)頁,通常網(wǎng)站會提供一個默認(rèn)的網(wǎng)頁,如果沒有指定,就將這個默認(rèn)的網(wǎng)頁傳送給你。無論是哪種形式,我們將瀏覽器中輸入的地址稱為URL。
我們不看這樣的例外情況,來想一下,如果要看258313.html這個網(wǎng)頁,是不是要通過Socket將這個請求傳送到京東的網(wǎng)站服務(wù)器去呢。
京東的網(wǎng)站服務(wù)器一定是一臺計算機(jī),但是只有計算機(jī)是不夠的,計算機(jī)上需要運(yùn)行一個程序,我們能夠理解,這個程序?qū)⑹欠?wù)器端的Socket應(yīng)用,里面有ServerSocket,這個程序?qū)⒈O(jiān)聽在一個端口,大家約定了提供Web服務(wù)的端口是80,當(dāng)然也可以改變這個約定,那么在瀏覽器訪問的時候,就要額外指定新的端口號,如果不這樣做,就意味著瀏覽器訪問的是80端口。
服務(wù)器的程序?qū)⒔邮盏綖g覽器發(fā)出的請求,然后它用IO流到自己所管理的目錄中找到這個258313.html文件,將這個文件的內(nèi)容讀到內(nèi)存中,然后通過網(wǎng)絡(luò)發(fā)送給你的瀏覽器,瀏覽器得到了這個文件的內(nèi)容,將按照html的規(guī)則顯示出來。這就是一次最簡單的Web訪問的過程,如圖1-1所示。

圖1-1
作為一個計算機(jī)的使用者,瀏覽器是一個非常常用的程序,有很多公司會把這樣的程序做成產(chǎn)品,所以現(xiàn)在我們已經(jīng)不需要來編寫這樣的程序了。
那么服務(wù)器程序在互聯(lián)網(wǎng)世界中,是不是也是非常常見的程序呢,其實(shí)編寫服務(wù)器程序更加有利可圖,所以現(xiàn)在在市場上有很多服務(wù)器端的軟件產(chǎn)品,這些產(chǎn)品被統(tǒng)稱為Web Server。
- Visual C++串口通信開發(fā)入門與編程實(shí)踐
- Python從小白到大牛
- PHP程序設(shè)計(慕課版)
- Python深度學(xué)習(xí)
- Learning SAP Analytics Cloud
- 鋒利的SQL(第2版)
- 網(wǎng)絡(luò)爬蟲原理與實(shí)踐:基于C#語言
- 零基礎(chǔ)學(xué)Python數(shù)據(jù)分析(升級版)
- Python圖形化編程(微課版)
- 零代碼實(shí)戰(zhàn):企業(yè)級應(yīng)用搭建與案例詳解
- App Inventor少兒趣味編程動手做
- C++ System Programming Cookbook
- AutoCAD基礎(chǔ)教程
- Unity 3D UI Essentials
- HTML5/CSS3/JavaScript技術(shù)大全