當前位置:首頁 » 網頁前端 » web例子
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web例子

發布時間: 2022-12-31 12:50:36

① 簡述一下Java中的web容器,舉幾個例子也行

目前市場上常用的開源Java Web容器有Tomcat、Resin和Jetty。其中Resin從V3.0後需要購買才能用於商業目的,而其他兩種則是純開源的。可以分別從他們的網站上下載最新的二進制包和源代碼。
作為Web容器,需要承受較高的訪問量,能夠同時響應不同用戶的請求,能夠在惡劣環境下保持較高的穩定性和健壯性。在HTTP伺服器領域,Apache HTTPD的效率是最高的,也是最為穩定的,但它只能處理靜態頁面的請求,如果需要支持動態頁面請求,則必須安裝相應的插件,比如mod_perl可以處理Perl腳本,mod_python可以處理Python腳本。

上面介紹的三中Web容器,都是使用Java編寫的HTTP伺服器,當然他們都可以嵌到Apache中使用,也可以獨立使用。分析它們處理客戶請求的方法有助於了解Java多線程和線程池的實現方法,為設計強大的多線程伺服器打好基礎。

Tomcat是使用最廣的Java Web容器,功能強大,可擴展性強。最新版本的Tomcat(5.5.17)為了提高響應速度和效率,使用了Apache Portable Runtime(APR)作為最底層,使用了APR中包含Socket、緩沖池等多種技術,性能也提高了。APR也是Apache HTTPD的最底層。可想而知,同屬於ASF(Apache Software Foundation)中的成員,互補互用的情況還是很多的,雖然使用了不同的開發語言。

Tomcat 的線程池位於tomcat-util.jar文件中,包含了兩種線程池方案。方案一:使用APR的Pool技術,使用了JNI;方案二:使用Java實現的ThreadPool。這里介紹的是第二種。如果想了解APR的Pool技術,可以查看APR的源代碼。

ThreadPool默認創建了5個線程,保存在一個200維的線程數組中,創建時就啟動了這些線程,當然在沒有請求時,它們都處理「等待」狀態(其實就是一個while循環,不停的等待notify)。如果有請求時,空閑線程會被喚醒執行用戶的請求。

具體的請求過程是: 服務啟動時,創建一個一維線程數組(maxThread=200個),並創建空閑線程(minSpareThreads=5個)隨時等待用戶請求。 當有用戶請求時,調用 threadpool.runIt(ThreadPoolRunnable)方法,將一個需要執行的實例傳給ThreadPool中。其中用戶需要執行的實例必須實現ThreadPoolRunnable介面。 ThreadPool首先查找空閑的線程,如果有則用它運行要執行ThreadPoolRunnable;如果沒有空閑線程並且沒有超過maxThreads,就一次性創建minSpareThreads個空閑線程;如果已經超過了maxThreads了,就等待空閑線程了。總之,要找到空閑的線程,以便用它執行實例。找到後,將該線程從線程數組中移走。 接著喚醒已經找到的空閑線程,用它運行執行實例(ThreadPoolRunnable)。 運行完ThreadPoolRunnable後,就將該線程重新放到線程數組中,作為空閑線程供後續使用。

由此可以看出,Tomcat的線程池實現是比較簡單的,ThreadPool.java也只有840行代碼。用一個一維數組保存空閑的線程,每次以一個較小步伐(5個)創建空閑線程並放到線程池中。使用時從數組中移走空閑的線程,用完後,再「歸還」給線程池。

② Web 有哪些 Erlang 語言應用的例子

Mochiweb
一句話介紹: MochiWeb is an Erlang library for building lightweight HTTP servers.
Mochiweb在Erlang項目中被當做一個Web組件被廣泛使用(比如RabbitMQ的plug-in),它的設計相當收斂,除了基礎的Web請求處理沒有提供特別復雜的功能集(後面會提到其它Web Server).目前我已經在兩個項目中使用了Mochiweb,得心應手.
Mochiweb項目代碼有很多值得學習的地方,比如 mochiglobal [ 鏈接 ],Parameterized mole [鏈接]今年夏天我把Mochiweb代碼列印了一份,看得很是過癮.這里有一篇實戰風格的入門文章:A practical introction to MochiWeb - Alex Marandon[鏈接]
使用Rebar很容易編譯運行,裡面自帶一個簡單的Echo demo,你可以使用Rebar快速建立起來自己的站點框架,動手試試吧
項目地址:mochi/mochiweb · GitHub

Cowboy
一句話介紹: Cowboy is a small, fast and molar HTTP server written in Erlang.
使用Cowboy需要通過編寫Handler來定製如何處理Web請求.這是它設計上的一大特色.項目源碼自帶了N種版本的hello_world,也是可以非常快上手.編譯運行依然是rebar搞定,這個項目現在保持更新,每天都能收到github推送的代碼變更郵件.
項目地址:extend/cowboy 路 GitHub

YAWS
一句話介紹:Yaws is a HTTP high perfomance 1.1 webserver particularly well suited for dynamic-content web applications.
這個略顯怪異的名字是Yet another Webserver的縮寫.其提供的已經不是簡單的腳手架了,而是支持動態內容輸出,REST,文件上傳SOAP等等.在其官網上有豐富的文檔和樣例代碼.O'Reilly在2012年6月出版的 Building Web Applications with Erlang 一書中使用的就是YAWS.這本不足150頁的小冊子是很好的YAWS入門教程.估計國內出版社不會引進這樣一本冷冷的書,自己找電子版讀吧,很容易找到.
項目地址:Yaws

Misultin [停止更新]
一句話介紹: Misultin development has been discontinued.
是的,這個項目已經不再繼續更新了;停止更新的原因是作者認為各個Web server項目有"too much plication of efforts".作者在項目介紹中倒是簡單評價了Mochiweb和Cowboy:

Mochiweb has been around the block for a while and it's proven solid in proction, I can only recommend it for all basic webserver needs you might have. Cowboy has a very interesting approach since it allows to use multiple TCP and UDP protocols on top of a common acceptor pool. It is a very modern approach, is very actively maintained and many projects are starting to be built around it.
項目地址:ostinelli/misultin ¡ GitHub
看過Misultin作者的一番評論,其實可以回答不少人關於"用Mochiweb做Web項目很痛苦"的問題:如果你要做一個豐富多彩的Web站點,在Mochiweb提供的腳手架上,你要完成很多工作,顯然你需要其它選擇,呃,或許你需要選擇一個Web Framework了.對於大多數框架來說,其設計的總要目標就是開發效率和常見應用場景的支持.我們看看有哪些Erlang Web Framework可用吧!
Elrang Web Frameworks
除了http://Asp.net MVC,RoR之外,其實還有很多Web Framework可用,看看Erlang世界裡面的解決方案吧:

ChicagoBoss
一句話介紹:Chicago Boss is a server framework inspired by Rails and written in Erlang.
ChicagoBoss是現在非常活躍的Erlang Web Framework,在各種細節上都為新手准備的相當周到比如60秒快速上手教程什麼的.甚至它說自己區別於其它Erlang Web Framework的就是" it is easy to set up and use."它之間Web Server是選擇的Misultin現在已經遷移到Cowboy.前端MVC架構,內置消息隊列BOSSMQ,數據存儲方面選擇性也比較多:Mnesia MongoDB Mysql PostgreSQL Riak ,Tokyo Tyrant;模板方案依然是使用ErlyDTL.
另外,我覺得ChicagoBoss的文案是這些項目裡面寫的最棒的,直接命中你最想知道的兩個問題:
"Chicago Boss is a server framework inspired by Rails and written in Erlang. It offers all the conveniences of modern web development, including Comet. What sets Chicago Boss apart from other non-Erlang frameworks is that it can handle large amounts of traffic without any drop in performance. What sets Chicago Boss apart from other Erlang frameworks is that it is easy to set up and use."
項目地址:ChicagoBoss/ChicagoBoss 路 GitHub
入門PDF: http://www.evanmiller.org/chicago-boss-tutorial.pdf

Nitrogen

一句話介紹:Nitrogen Web Framework is the fastest way to develop interactive web applications in full-stack Erlang.
看群裡面討論,採用Nitrogen的項目也不在少數,這個項目動態模板方案不是採用ErlyDTL,而是自己有一套解決方案Nitrogen records [鏈接].網站上的常式和Step by Step教程足夠詳細,入門應該比較快.
項目地址:Nitrogen - Nitrogen Web Framework for Erlang

Zotontic
一句話介紹:Zotonic is the open source, high speed, real-time web framework and content management system, built with Erlang.
應該說Zotontic和其它框架的差異更多是在業務定位上了,提供了很多CMS直接可用的功能,查看其features列表能夠看到詳細介紹,注意:"Typically 10 times (and much more) faster than PHP content management systems." [鏈接]
Zotontic構建在Mochiweb和PostgreSQL之上.
項目地址:http://zotonic.com/

BeepBeep
一句話介紹: BeepBeep is a simple web application framework for Mochiweb inspired by Rails and Merb
BeepBeep 構建在 MochiWeb 和 ErlyDTL (後面會介紹) 基礎之上. 沿襲了mochiweb的優良傳統一鍵建站,基於ErlyDTL提供Django 模板的視圖展現.
這個項目已經09年之後就沒有實質性的更新,最近一次更新是2010年更新了一下README,慎重選擇吧.
還有一個項目ErlyWeb同樣是

③ web應用程序的上下文路徑指的是什麼路徑舉出web配置例子,謝謝

1.在%CATALINA_HOME%\conf\context.xml這個文件中,編輯Context元素屬性 例: <Context path="/MyPro" docBase="F:\MyProject\MyPro" reloadable="true"> </Context> path屬性代表web應用程序的上下文根路徑 docBase屬性指定了web應用程序的文檔基目錄 reloadable屬性,如果指定為true,Tomcat伺服器在運行時,會監視WEB-INF/classes和WEB-INF/lib目錄下的類的改變,如果發現有類被更新,Tomcat伺服器將自動重新載入該web應用程序。 2..%CATALINA_HOME%\conf\[enginename]\[hostname]xxx.xml,enginename是在server.xml文件中設置的<Engine>元素的name屬性的值,[hostname]是在server.xml文件中設置的<Host>元素的name屬性的值 這個xxx.xml文件的文件名「xxx」被作為web應用程序的上下文根路徑,而不管你在xxx.xml文件中的<Context>元素的path屬性是什麼

④ web應用程序的上下文路徑指的是什麼路徑舉出web配置例子,謝謝

比如說一個web工程目錄為:D:\app\website,在tomcat中配置的contextpath為/sun,則一般在瀏覽器中輸入地址http://localhost:8080/sun就可以訪問該站點,那麼在java中使用 request.getContextPath() 將會得到contextPath即:/sun

⑤ 什麼是web啊

WEB

名詞:

  • 蜘蛛網;蛛網狀東西,網狀組織;【紡織;印染】棉[毛]網;〔the W-〕

  • 【計算機】萬維網(= World Wide Web)。

  • (一匹)布,織物。

  • 編織品,捏造的東西;做成的圈套。

  • (水鳥的)蹼,掌皮;羽瓣。

  • 一大卷[筒]印刷用紙。

  • 【機械工程】連結板;金屬薄片[薄條];【建築】工字梁腹(部);圓拱;【解剖學】膜。

短語和例子

  • a web of railroads 鐵路網。

  • a web of lies 一大片編造的謊話。

  • a web of life [destiny] 命運。

  • the web of a saw 鋸身。

  • the web of a sword 刀身。

  • a twist web 【機械工程】麻花鑽心。

近年最用的,多指為:

全球資訊網(英語:World Wide Web),亦作「WWW」、「Web」,是一個由許多互相連結的超文字組成的系統,通過網際網路存取。英國科學家提姆·柏內茲-李於1989年發明了全球資訊網。1990年他在瑞士CERN的工作期間撰寫了第一個網頁瀏覽器。網頁瀏覽器於1991年在CERN對外發表,1991年1月最先發展到其他研究機構並且在1991年8月在網際網路上向公眾公布。

全球資訊網並不等同網際網路,全球資訊網只是網際網路所能提供的服務其中之一,是靠著網際網路運行的一項服務。

⑥ 什麼是web伺服器,舉個例子

用來儲存網頁文件的伺服器,舉例那就只能說,你看到的網頁都是由網頁伺服器支援的

⑦ Web探索之旅 | 第一部分:什麼是Web

什麼是 Web 呢? 這個問題不容易回答。

Web 這個英語單詞有好幾個意思:「網,蜘蛛網,網狀物;萬維網;織物;圈套」。

我們也經常用到它的合成詞,例如 Webpage(網頁。是 Web 和 page(page 表示「頁面」)的合成),Website(網站。是 Web 和 site(site 表示「站點」)的合成)。

一般在 IT (Information Technology 的縮寫,表示「信息技術」)領域,Web 被翻譯成「網路」,或者很多時候我們不翻譯,就直接用 Web 這個詞。因為 network(或簡稱 net)這個單詞也有「網路」的意思。但是 Web 和 network 是有區別的。

那麼到底什麼是 Web 呢?

在 IT 領域, Web 是 World Wide Web(萬維網,一般簡寫為 WWW)的簡稱。World 表示「世界」,Wide 表示「廣闊的」,Web就是「網」。

WWW 可以讓 Web 客戶端(例如我們常用的瀏覽器,如 Chrome,Firefox,等等)訪問 Web 伺服器上的頁面。 是一個由許多互相鏈接的超文本組成的系統,通過互聯網訪問。

在這個系統中,每個有用的事物,稱為一樣「資源」,並且由一個 URI (Uniform Resource Identifier 的縮寫,表示「統一資源標識符」)標識。

這些資源通過 HTTP (HyperText Transfer Protocol 的縮寫,表示「超文本傳輸協議」。我們之後的課程會介紹 HTTP 協議並實踐)協議傳送給用戶,用戶通過點擊鏈接來獲得資源。

Web 是比較偏應用層的概念。可以說 network 是我們最寬泛的「網路」概念的底層基礎,而 Web 則是指頂層的應用,甚至包含了人與人利用 Web 進行的交互。

用什麼來形容 Web 比較好呢?

有的人可能會想到 surfing(「沖浪」),或者說 Surfing the Internet / Web(互聯網 / 網際沖浪)。因為我們在網站上瀏覽網頁時就有點像沖浪一般「一頁頁」地翻過。

不禁想起了騰格爾演唱的電視劇《康熙王朝》的片尾曲《大男人》:「一生有一種大海的氣魄,歲月一頁頁無情翻過」。我們也經常「無情」地快速翻過我們的網頁,甚至我們的人生。

但是說到 Web,我們還是用另一個意象來表示吧。

我選擇用「蜘蛛網」來形象地表現 Web:

為什麼用蜘蛛網(希望對蜘蛛恐懼的朋友見諒)來形象地表示呢?

因為 Web 在英語中有「蜘蛛網」的意思,而且蜘蛛網的每個連接的結點,正好可以表示全球這個大 Web 中的每一台電腦。只要上了網,這些電腦都在 Web 上互聯。

這一節中,我們首先要來區分一下 Internet 和 Web 這兩個時常容易被混淆的概念。

我們必須對你說:「Internet 不等於 Web !」

Web 是 Internet 的一部分,雖然 Web 是 Internet 中最被人熟知的那一部分服務。

如上圖所見,我們可以看到,Internet 是由 Web 和其他服務(service)所組成。

Internet 表示「互聯網」,又稱網際網路,或音譯網際網路、英特網,是網路與網路之間所串連成的龐大網路,這些網路以一組通用的協議相連,形成邏輯上的單一巨大國際網路。

這種將計算機網路互相聯接在一起的方法可稱作「網路互聯」,在這基礎上發展出覆蓋全世界的全球性互聯網路,稱為互聯網,就是互相連接在一起的網路結構。

除了 Web,Internet 還包含其他服務:

今天,人們有時候比較容易混淆 Internet 和 Web 的概念,是因為現在越來越多的 Internet 的服務(e-mail,FTP,newsgroups,等)都通過 Web 這個介面來呈現給用戶,這些服務中的很多都已經整合到 Web 中。

舉一些例子:

其他還有,就不一一列舉了。

說了 Internet 和 Web 之間的區別,也介紹了一些常見的 Internet 服務。我們再來看一個很流行的概念:Cloud(「雲」),相信你或多或少聽說過「雲計算」,「大數據」之類名詞。

說到 Cloud 的定義,至今沒有太統一的說法。各方解釋都不太一樣。

我們可以簡單地把 Cloud 定義為:通過 Web 這個「介面」獲取到一些 Internet 服務(service),或者把這些服務本身定義為「雲」。

可以用下圖來形象地表示:

上圖中,用雲朵來表示的那些各式各樣的 service(服務),就是我們用戶要通過 Web 這個介面來獲取到的。這些服務有:

當然了,我們一般所說的雲或雲計算則更復雜,有幾種類型。例如:

如果你有興趣,可以進一步去了解。

下面我們來聊聊 Web 的歷史吧,看看這么有意思的 Web 是如何誕生及發展的。

我們簡單來介紹一下:

上圖為美國當時全國范圍的 ARPAnet。

那麼誰發明了 Web 呢?

Tim Berbers Lee(蒂姆·伯納斯·李),就是下面這位大牛,看上去蠻和藹的。他在 1991 年(也有說是 1989 年...)提出了 Web(World Wide Web 的縮寫,或 WWW)。

這張照片其實攝於 1994 年的歐洲核子研究組織(CERN)。

在他之前,沒有瀏覽器,沒有 WWW,網路世界一片空白。如果當初為謀取個人利益,蒂姆將自己的 WWW 設想乃至後來的萬維網申請知識產權和專利,如今的互聯網世界是不可能發展得這么快的。

蒂姆假想說:「那樣的話,世界上至少會有 16 種不同的 Web,有 CERN 網,有微軟網,有蘋果網,等等」。

1994 年,Tim Berners Lee 創立了著名的 W3C(World Wide Web Consortium 的縮寫,表示「萬維網聯盟」)組織,因為他覺得 Web 發展迅猛,需要有一個類似基金會或委員會的機構來規范,以達成全球統一標准。

W3C 後來發明了一系列的語言和規范:HTML,CSS,XML 等。現在的 HTML5 也是他們規定的。

W3C 最重要的工作是發展 Web 規范(被稱為 recommendations,表示「推薦」),這些規范描述了 Web 的通信協議(比如 HTML 和 XHTML)和其他的構建模塊。

W3C 的官方網站是 http://www.w3.org 。

你如果想學各種技術(HTML,CSS,XML,Javascript,PHP,等等),可以去 W3C 學院: http://www.w3schools.com 。

對應中文網站是: http://www.w3school.com.cn 。

今天的課就到這里,一起加油吧!

下一課: Web探索之旅 | 第二部分第一課:客戶端語言

熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標桿直跑」

⑧ 第五章:Web伺服器

5.1各種形狀和尺寸的Web伺服器
Web伺服器會對HTTP請求進行處理並提供響應。術語「Web伺服器」可以用來表示Web伺服器的軟體,也可以用來表示提供Web頁面的特定設備或計算機。
Web伺服器有著不同的風格、形狀和尺寸。有普通的10行Perl腳本的Web伺服器、50MB的安全商用引擎以及極小的卡上伺服器。但不管功能有何差異,所有的 Web伺服器都能夠接收請求資源的 HTTP請求,將內容回送給客戶端(參見圖1-5)。
5.1.1Web伺服器的實現
Web伺服器實現了HTTP和相關的TCP連接處理。負責管理Web伺服器提供的資源,以及對Web伺服器的配置、控制及擴展方面的管理。
Web伺服器邏輯實現了HTTP 協議、管理著Web資源,並負責提供Web伺服器的管理功能。Web伺服器邏輯和操作系統共同負責管理TCP連接。底層操作系統負責管理底層計算機系統的硬體細節,並提供了TCP/IP網路支持、負責裝載Web資源的文件系統以及控制當前計算活動的進程管理功能。

5.3實際的Web伺服器會做些什麼
例5-1顯示的 Perl伺服器是一個Web伺服器的小例子。最先進的商用Web伺服器要比它復雜得多,但它們確實執行了幾項同樣的任務,如圖5-3所示。
(1)建立連接一—接受一個客戶端連接,或者如果不希望與這個客戶端建立連接,就
將其關閉。
(2)接收請求——從網路中讀取一條HTTP請求報文。(3)處理請求——對請求報文進行解釋,並採取行動。(4)訪問資源-———訪問報文中指定的資源。
(5)構建響應——創建帶有正確首部的 HTTP響應報文。(6)發送響應——將響應回送給客戶端。
(7)記錄事務處理過程—-將與已完成事務有關的內容記錄在一個日誌文件中。

5.4第一步——接受客戶端連接
如果客戶端已經打開了一條到伺服器的持久連接,可以使用那條連接來發送它的請求。否則,客戶端需要打開一條新的到伺服器的連接(回顧第4章,復習一下HTTP的連接管理技術)。

5.4.1處理新連接
客戶端請求一條到Web伺服器的TCP連接時,Web伺服器會建立連接,判斷連接的另一端是哪個客戶端,從TCP連接中將IP地址解析出來。'一旦新連接建立起來
並被接受,伺服器就會將新連接添加到其現存Web伺服器連接列表中,做好監視連接上數據傳輸的准備。
Web伺服器可以隨意拒絕或立即關閉任意一條連接。有些Web伺服器會因為客戶端IP地址或主機名是未認證的,或者因為它是已知的惡意客戶端而關閉連接。Web伺服器也可以使用其他識別技術。

5.4.2客戶端主機名識別
可以用「反向 DNS」對大部分Web伺服器進行配置,以便將客戶端IP地址轉換成客戶端主機名。Web伺服器可以將客戶端主機名用於詳細的訪問控制和日誌記錄。但要注意的是,主機名查找可能會花費很長時間,這樣會降低Web事務處理的速度。很多大容量Web伺服器要麼會禁止主機名解析,要麼只允許對特定內容進行解析。
可以用配置指令HostnameLookups啟用Apache的主機查找功能。比如,例5-2中的Apache配置指令就只打開了HTML和CGI資源的主機名解析功能。
例5-2配置Apache,為 HTML和CGI資源查找主機名
HostnameLookups off
<Files ~" - 《html |htmlcgi)$">
HostnameLookups on
</Files>

5.5第二步—接收請求報文
連接上有數據到達時,Web伺服器會從網路連接中讀取數據,並將請求報文中的內容解析出來(參見圖5-5)。
解析請求報文時,Web伺服器會:
·解析請求行,查找請求方法、指定的資源標識符(URI)以及版本號,3各項之
間由一個空格分隔,並以一個回車換行(CRLF)序列作為行的結束,「
·讀取以CRLF結尾的報文首部;
檢測到以CRLF結尾的、標識首部結束的空行(如果有的話)﹔
·如果有的話(長度由content-Length首部指定),讀取請求主體。

解析請求報文時,Web伺服器會不定期地從網路上接收輸入數據。網路連接可能隨時都會出現延遲。Web伺服器需要從網路中讀取數據,將部分報文數據臨時存儲在內存中,直到收到足以進行解析的數據並理解其意義為止。
5.5.1 報文的內部表示法
有些Web伺服器還會用便於進行報文操作的內部數據結構來存儲請求報文。比如,數據結構中可能包含有指向請求報文中各個片段的指針及其長度,這樣就可以將這些首部存放在一個快速查詢表中,以便快速訪問特定首部的具體值了(參見圖5-6)。

5.5.2連接的輸入/輸出處理結構
高性能的 Web伺服器能夠同時支持數千條連接。這些連接使得伺服器可以與世界各地的客戶端進行通信,每個客戶端都向伺服器打開了一條或多條連接。某些連接可能在快速地向Web伺服器發送請求,而其他一些連接則可能在慢慢發送,或者不經常發送請求,還有一些可能是空閑的,安靜地等待著將來可能出現的動作。
因為請求可能會在任意時刻到達,所以Web伺服器會不停地觀察有無新的Web請求。不同的Web伺服器結構會以不同的方式為請求服務,如圖5-7所示。
·單線程Web伺服器(參見圖5-7a)
單線程的Web伺服器一次只處理一個請求,直到其完成為止。一個事務處理結束之後,才去處理下一條連接。這種結構易於實現,但在處理過程中,所有其他連接都會被忽略。這樣會造成嚴重的性能問題,只適用於低負荷的伺服器,以及type-o-serve這樣的診斷工具。
·多進程及多線程Web伺服器(參見圖5-7b)
多進程和多線程Web伺服器用多個進程,或更高效的線程同時對請求進行處理。3可以根據需要創建,或者預先創建一些線程/進程。°有些伺服器會為每條連接分配一個線程/進程,但當伺服器同時要處理成百、上千,甚至數以萬計的連接時,需要的進程或線程數量可能會消耗太多的內存或系統資源。因此,很多多線程Web伺服器都會對線程/進程的最大數量進行限制。
·復用I/O的伺服器(參見圖5-7c)
為了支持大量的連接,很多Web伺服器都採用了復用結構。在復用結構中,要同時監視所有連接上的活動。當連接的狀態發生變化時(比如,有數據可用,或出現錯誤時),就對那條連接進行少量的處理,處理結束之後,將連接返回到開放連接列表中,等待下一次狀態變化。只有在有事情可做時才會對連接進行處理,在空閑連接上等待的時候並不會綁定線程和進程。
·復用的多線程Web伺服器(參見圖5-7d)
有些系統會將多線程和復用功能結合在一起,以利用計算機平台上的多個CPU.多個線程(通常是一個物理處理器)中的每一個都在觀察打開的連接(或打開的連接中的一個子集),並對每條連接執行少量的任務。

5.6第三步———處理請求
一旦Web伺服器收到了請求,就可以根據方法、資源、首部和可選的主體部分來對請求進行處理了。
有些方法(比如POST)要求請求報文中必須帶有實體主體部分的數據。其他一些方法(比如OPTIONS)允許有請求的主體部分,也允許沒有。少數方法(比如GET)禁止在請求報文中包含實體的主體數據。
這里我們並不對請求的具體處理方式進行討論,因為本書其餘大多數章節都在討論這個問題。

5.7第四步——-對資源的映射及訪問
Web 伺服器是資源伺服器。它們負責發送預先創建好的內容,比如HTML頁面或JPEG 圖片,以及運行在伺服器上的資源生成程序所產生的動態內容。

5.7.1 docroot
Web伺服器支持各種不同類型的資源映射,但最簡單的資源映射形式就是用請求URI作為名字來訪問Web伺服器文件系統中的文件。通常,Web伺服器的文件系統中會有一個特殊的文件夾專門用於存放Web內容。這個文件夾被稱為文檔的根目錄(document root,或docroot)。Web伺服器從請求報文中獲取URI,並將其附加在文檔根目錄的後面。
在圖5-8中,有一條對/specials/saw-blade.gif 的請求到達。這個例子中Web伺服器的文檔根目錄為/us/local/httpd/files。Web伺服器會返迴文件/usr/local/httpd/files/specials/saw-blade.gif。

在配置文件httpd.conf中添加一個 DocumentRoot行就可以為Apache Web伺服器設置文檔的根目錄了:
DocumentRoot /usr/ local/httpd/files
伺服器要注意,不能讓相對URL退到docroot之外,將文件系統的其餘部分暴露出來。比如,大多數成熟的Web伺服器都不允許這樣的URI看到Joe的五金商店文檔根目錄上一級的文件:
http://www.joes-hardware.com/ ..

5.8.3重定向
Web伺服器有時會返回重定向響應而不是成功的報文。Web伺服器可以將瀏覽器重定向到其他地方來執行請求。重定向響應由返回碼3XX說明。Location響應首部包含了內容的新地址或優選地址的URI。重定向可用於下列情況。
·永久刪除的資源
資源可能已經被移動到了新的位置,或者被重新命名,有了一個新的URL。Web伺服器可以告訴客戶端資源已經被重命名了,這樣客戶端就可以在從新地址獲取資源之前,更新書簽之類的信息了。狀態碼301 Moved Permanently就用於此類重定向。·臨時刪除的資源
如果資源被臨時移走或重命名了,伺服器可能希望將客戶端重定向到新的位置上去。但由於重命名是臨時的,所以伺服器希望客戶端將來還可以回頭去使用老的URL,不要對書簽進行更新。狀態碼303 See Other以及狀態碼307 TemporaryRedirect就用於此類重定向。

⑨ c#webservice的簡單示例

是webservice 就概念上來說 可能比較復雜 不過我們可以有個宏觀的了解 webservice就是個對外的介面 裡面有 函數可供外部客戶調用(注意 裡面同樣有客戶不可調用的函數) 假若我們是服務端 我們寫好了個webservice 然後把它給了客戶(同時我們給了他們調用規則) 客戶就可以在從服務端獲取信息時處於一個相對透明的狀態 即使客戶不了解(也不需要)其過程 他們只獲取數據

webservice傳遞的數據只能是序列化的數據 典型的就是xml數據

下面以一個簡單例子為例

(一)新建——-項目 -Visual C# web ASP NET Web 服務應用程序 命名為TestWebService

此時的目錄結構如圖所示

我們修改Service a *** x的名字為 MyService a *** x

同時修改文件中的class名

public class MyService: System Web Services WebService

{

[WebMethod]

public string HelloWorld()

{

return Hello World ;

}

}

同時修改文件MyService a *** x(右擊 查看標記 如果在vs環境下雙擊打開的是 cs文件)

<%@ WebService Language= C# CodeBehind= MyService a *** x cs Class= TestWebService Service %>改為

<%@ WebService Language= C# CodeBehind= MyService a *** x cs Class= TestWebService MyService %>

(二)重新生成項目 右擊MyService a *** x 選擇 在瀏覽器中查看 即可檢查本項目是否有語法錯誤

(三)在MyService a *** x添加指定方法

using System;

using System Data;

using System Web;

using System Collections;

using System Web Services;

using System Web Services Protocols;

using System ComponentModel;

namespace TestWebService

{

/// <summary>

/// Service 的摘要說明

/// </summary>

[WebService(Namespace = )]

[WebServiceBinding(ConformsTo = WsiProfiles BasicProfile _ )]

[ToolboxItem(false)]

public class MyService: System Web Services WebService

{

[WebMethod]//必須要有的 為了說明 其下是一個方法 每一個方法前面都需要有

public string getName()

{

return Hope ;

}

[WebMethod]

public string getAge()

{

return ;

}

}

}

重新生成項目 右擊MyService a *** x 選擇 在瀏覽器中查看 效果如下

(四)發布在外網上

這里我是在本機上測試的 所以沒有必要發布 如果要發布到外網上 我們可以通過

把bin文件下的文件以及與bin(包括 dll和 pdb文件)同級目錄的a *** x文件上傳到外網即可

(五)使用web service介面

新建一個普通的windows應用程序 右擊 添加web引用

如圖

改一下web引用名為 HopeWebService如圖

此時 我們可以使用webservice中的方法了 通過HopeWebService我們可以訪問其中的兩個方法

(六)使用方法

HopeWebService MyService obj = new HopeWebService MyService()

MessageBox Show( name is: + obj getName()+ ;age is: + obj getAge())

lishixin/Article/program/net/201311/11171

⑩ Web主要指的什麼舉點例子看看

Web 非常流行的一個很重要的原因就在於它可以在一頁上同時顯示色彩豐富的圖形和文本的性能。在Web之前Internet上的信息只有文本形式。Web可以提供將圖形、音頻、視頻信息集合於一體的特性。同時,Web是非常易於導航的,只需要從一個連接跳到另一個連接,就可以在各頁各站點之間進行瀏覽了。