A. Java中Web容器
web容器可以理解為打開瀏覽器後並有一個提交請求所形成的環境.
B. 常用的java web 容器有哪幾種
小項目,或者是個人開發tomcat
大項目或者商業項目一般採用:weblgoic/webshere
其他的還有jboss、glasshfish等
一些示例項目或者小項目常採用jetty
C. JAVA WEB開發 初學者!
先跟你說幾個事情,後期好處理你多個問題。
1.src是源文件夾,這里你可以創建N個源文件夾,都是未來要編譯的,你也可以創建一個源文件夾叫conf,把配置文件都放這里,但是前提struts1不可以(一會說為什麼),也就是源文件夾是一類,等著編譯的,那麼編譯到哪呢? 就是下面的
2.WebRoot\WEB-INF\classes有這個文件夾,編譯的東西就在這,WEB-INF下這里只對程序員可見,對請求者也就是客戶端不可見(默認就是classes和lib),所以有些項目為了不讓用戶直接訪問JSP,就將JSP放這下面,用戶只能請求控制層(以後我說C層),然後返回相應頁面,當然,有的項目還有歡迎頁,在web.xml里配置的,下面說它
3.web.xml,這個是Web項目中自帶的,為什麼自帶?因為一個web項目在被部署(就是載入到WEB容器里,比如tomcat,jboss等)後,當啟動web容器時,web.xml裡面就會有幾個標簽被web容易所載入讀取。並且這里有很多標簽,載入也是有順序的,會一個一個掃描,你剛學,什麼順序自己以後研究。
說第一個問題,首先我要說現在很少用Struts1,也就是教學用用,畢竟教學更新慢,至少現在都用struts2(以後簡稱S1,S2)。那個目錄之所以一定要在那,是因為s1源碼默認去那個路徑找配置文件,如果你以後會s2,並且集成spring,你就知道配置文件路徑可更改。
說第二個問題,這里WebRoot文件夾名字不是必須的,但是從它開始往下就是未來要發布出去的東西,就是所謂的前台展示,在代碼中只要有關路徑的地方以/開頭,都是說從它往下開始,這樣配置有一點好,就是未來其他路徑變了,請求也不用變,因為是從所謂的相對中的絕對路徑請求。
第三個問題我想不用過多解釋,web.xml是屬於web項目,並不屬於某個技術,struts1的那個配置文件就屬於s1框架的,s2的就叫struts.xml,記得框架源碼都有一個默認載入的文件名和路徑,你剛學就那麼寫就行,以後懂了就隨意更改。
最後說下為什麼有的把JSP放到不讓直接訪問,必須先走C層呢(s1和s2框架就是MVC框架),因為有好多頁面要判斷用戶是否登錄,如果沒登錄是不能直接訪問的,必須要先登錄,這樣從C走,我就可以判斷代碼,要是直接訪問頁面,還得在頁面里寫小腳本判斷。 通常先走C是對的,域名直接映射成C的請求。再有不懂追問,呵呵
D. java問題:什麼是web容器列舉幾個常見的web容器
Web Container也是一個組件,是J2EE本身提供的。它封裝了一般Web組件與Web Server打交道的一些底層的細節。就是說,你自己開發的組件並不是直接調用WebServer的功能,而是通過Web Container間接與WebServer對話,這樣你就不許要知道許多關於WebServer的底層技術。
E. java裡面的web容器是指什麼
例如apache、nginx等都是此類。不過現實中很多web伺服器出於種種考慮回內置針對特定語言或架構的處理體系,例如iis內置了asp.net的處理架構,apache也可以通過擴展提供php、rails等處理架構(這些特別內置的模塊,你也可以簡單理解為web容器了)。如果web伺服器自己不處理特別請求,那麼可以通過cgi等方式轉發給後端處理,例如apache、nginx都可以通過fastcgi將請求轉發給後端埠,例如php-fpm服務,或python的什麼服務等等。 其實在java之前一直不太有web容器這種說法,到目前似乎也只有java是這么提的。這主要是因為整個java的web開發是基於javaEE的servlet技術體系,該體系規范規定了web請求的整個生命周期的方方面面。但是規范只是規定了實現的標准,或者說是介面(interface),具體實現都是各廠商自己搞定,所以這就出現了各種不同的web容器,例如tomcat、jetty、jboss等等。 又說回來,這些容器為了方便開發者,大多都提供了web伺服器的功能,不過和專業的web伺服器相比總有些缺失不足,所以一般只用來做開發用,生產環境主要還是作為後端服務。
F. java web 容器有什麼作用
就是一種所謂的中間件,用來運行java程序的。
你想,如果讓你憑空寫一個能通過web訪問的程序,是不是很難?
有了web容器,只要按照它的規范寫出功能邏輯就可以了,比如servlet,大大簡化了開發
G. java做web開發都需要java的哪些知識
開發JSP項目所需要的技能包括: Java 在使用JSP的時候,任何程序員都不可能不和Java打交道。JSP本身就是用一套Java對象編寫的。更重要的是,JSP的預設腳本語言就是Java。所以,一個JSP程序員必須理解Java的基礎概念。我建議程序員在開發JSP之前至少得有一個月開發Java的經驗。 HTML/XHTML 不管你怎麼看JSP,反正你最後要產生的結果中超過95%的比例將是HTML文件。因此,JSP程序員還得全面理解HTML技術。我建議程序員在考慮學習JSP之前應該有至少一個月的HTML/XHTML編程經驗。 了解Web伺服器 因為JSP是一種用以建立網路站點的編程技術,所以在某種程度上你應該了解一點你的站點所採用的Web伺服器的相關知識。Web伺服器處理HTML頁面,所以,它通常要與其它軟體聯合起來共同運行才可以處理JSP頁。這也是我們所遇到JSP難題之一。 了解運行JSP的容器 所謂容器(container)其實就是JSP伺服器。這是一種解釋軟體,負責解釋向JSP頁提出的請求,同時,把輸出結果送迴向JSP頁提出請求的用戶。容器很象Web伺服器,只不過後者處理HTML網頁而容器則為JSP頁提供服務。要學習JSP容器的細節所消耗的時間取決於你最後選擇的容器。某些容器很簡單,學習起來也很容易。而另一些容器則功能強大但學習和維護的時間很長。要了解更多的相關內容請參看有關JSP工具的FAQ。 JavaScript JSP產生的數據會被發送給客戶機,通常就是某種瀏覽器,也就是我們所說的「客戶端」。當前的大多數JSP輸出結果都建立在HTML基礎之上。JavaScript則是針對HTML的腳本語言。JavaScript允許程序員在客戶端執行條件邏輯。這就意味著客戶機和伺服器之間的聯系會少一些,客戶機的性能也就大大增強了。還有,JavaScript允許程序員修改HTML被顯示的方式以增加HTML的功能。JavaScript可不是Java。實際上,JavaScript僅僅在能看到HTML輸出的瀏覽器上運行。 有一點要特別注意:盡管JavaScript還是這種腳本語言所普遍接受的名字,但是JavaScript實際上擁有好多種具有不同名稱的不同版本(微軟推出的JavaScript就叫Jscript)。比如,現在歐洲推出的新型JavaScript標准就叫ECMAScript。所以如果有人把JavaScript稱作Jscript或者ECMAScript你可別犯糊塗啊! 學習JSP JSP並不是一種真正的編程語言而是: ¨—用Java編寫的一組對象的集合。 ¨—採用簡單的腳本語法用來在對象和JSP容器之間通信。 學習JSP技術需要你掌握一些簡單地腳本規范和組成JSP標準的對象。在程序員熟悉和了解Java之後,學習JSP的基礎知識就相當簡單了。 按JSP的思想進行思考 JSP是一種分布式的、基於Web的應用程序。這就是說,其邏輯處理被劃分在許多機器上進行。大多數處理過程發生在裝有JSP應用程序的伺服器上。還有一些時間則花在處理客戶機上的HTML頁面上,而這些客戶機就是察看Web應用程序的客戶機。還有許多項目會和資料庫伺服器一道協同工作來處理數據。更大的項目可能採用組件伺服器運行集中的EnterpriseJavaBean對象。如果一個Web應用程序足夠大,核心的JSP部分還可能實際上分布在若干JSP伺服器運行。所有這一切都意味著,你必須了解JSP應用程序的邏輯處理在許多機器上被恰當分布運行的原理。更重要的是,理解混合客戶端和伺服器端邏輯的Web應用程序這種雙重性是很關鍵的。所以,按JSP的思想進行思考在我看來絕對算得上是一門真正的藝術。 學習JSP語法和對象是最基礎的第一步。同時我們還採取其他一些重要的工作來完成掌握JSP這一過程,這些工作有: —了解這些不同技術之間是如何相互交流、協同運行的。 —了解這些邏輯處理過程在什麼時候、在什麼場合下發生。 分布式應用程序的平衡是最難掌握的技術之一。把這問題搞清楚了可以大大提高學習過程的速度。否則你可能在這一主題上花費大量的時間和精力。 開發JSP項目所需要的其他一些技能還包括: DHTML和層疊樣式表 我現在建立的的每個Web應用程序都使用了DHTML(動態HTML)和層疊樣式表CSS(CascadingStyleSheet)。這些工具對HTML頁面的功能而言是個極大的擴展。它們可以讓用戶建立模仿客戶機—伺服器結構的Web應用程序。我個人認為這些工具完全是我們必須掌握的技能,不過,很多簡單的項目或許並不需要這些工具。 Servlet 你不需要學習過多的servlet知識。當Sun開發了JSP的時候JSP曾被認為「servlet的簡化版」。
H. java中web容器的作用
比方說:tomcat是一個web應用伺服器,它其中包含了servlet容器和jsp容器,而servlet容器就是負責管理servlet的生命周期的,如果沒有這個容器,那你的請求就無法實例化為servlet,你需要自己去寫代碼解析http請求。如果你想解析http請求,你就必須了解http協議,這是一個比較復雜的過程,現在有servlet容器,容器就會幫你去解析。
常見的web容器有tomcat,JBOSS或webloigc。
I. 簡述一下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個)創建空閑線程並放到線程池中。使用時從數組中移走空閑的線程,用完後,再「歸還」給線程池。
J. j2ee開發中的「java容器」和「web容器」有什麼區別
web容器是一個Java 所編寫的程序,原先必須自行編寫程序以管理對象關系,現在容器都會自動幫您作好
容器(Container) 容器是一個Java 所編寫的程序,原先必須自行編寫程序以管理對象關系,現在容器都會自動幫您作好。 常用容器 jBoss, WebSphere,WebLogic,Resin,Tomcat。
JAVA內部的容器類
Java容器類包含List、ArrayList、Vector及map、HashTable、HashMap 。
ArrayList和HashMap是非同步的,Vector和HashTable是同步的,所以Vector和HashTable是線程安全的,而 ArrayList和HashMap並不是線程安全的。因為同步需要花費機器時間,所以Vector和HashTable的執行效率要低於 ArrayList和HashMap。、
Vector是同步的。這個類中的一些方法保證了Vector中的對象是線程安全的。而ArrayList則是非同步的,因此ArrayList中的對象並不是線程安全的。因為同步的要求會影響執行的效率,所以如果你不需要線程安全的集合那麼使用ArrayList是一個很好的選擇,這樣可以避免由於同步帶來的不必要的性能開銷。