JavaWeb开发概述
1. Web概述
WEB,在英語中web即表示網頁的意思,它用于表示Internet主機上供外界訪問的資源。javaweb:使用java技術開發web頁面。供瀏覽器訪問的項目
Internet上供外界訪問的Web資源分為:
- 靜態web資源(如html 頁面):指web頁面中供人們瀏覽的數據始終是不變的,靜態的,不同的人在不同的時間來訪問時都是相同的內容
- 動態web資源:指web頁面中供人們瀏覽的數據是由程序產生的,不同時間點訪問web頁面看到的內容各不相同。
靜態web資源開發技術:Html、CSS、javaScript
常用動態web資源開發技術:
- JSP/Servlet、ASP、PHP等
- 在Java中,動態web資源開發技術統稱為Javaweb,我們課程的重點也是教大家如何使用Java技術開發動態的web資源,即動態web頁面。
2. WEB服務器
Web服務器的作用是接收客戶端的請求,給客戶端作出響應。學習web開發,需要先安裝一臺web服務器,然后再在web服務器中開發相應的web資源,供用戶使用瀏覽器訪問。
注意:這里所說的服務器不是指服務器硬件資源,而是指服務器軟件。
實驗說明:
- 在本地計算機上隨便創建一個web頁面,大家可以訪問到嗎?
- 啟動tomcat服務器,把web頁面放在tomcat服務器中,用戶就可以訪問了。
這說明什么問題?
- 不管什么web資源,想被遠程計算機訪問,都必須有一個與之對應的網絡通信程序,當用戶來訪問時,這個網絡通信程序讀取web資源數據,并把數據發送給來訪者。
- WEB服務器就是這樣一個程序,它用于完成底層網絡通迅。使用這些服務器,用戶只需要關注web資源怎么編寫,而不需要關心資源如何發送到客戶端手中,從而極大的減輕了開發者的開發工作量。
3. 常見WEB服務器
- Tomcat(Apache):當前應用最廣的JavaWeb服務器
- JBoss(Redhat紅帽):支持JavaEE,應用比較廣;EJB容器
- GlassFish(Orcale):Oracle開發JavaWeb服務器,應用不是很廣
- Resin(Caucho):支持JavaEE,應用越來越廣
- Weblogic(Orcale):要錢的!支持JavaEE,適合大型項目
- Websphere(IBM):要錢的!支持JavaEE,適合大型項目
3.1 WebLogic
WebLogic是BEA公司的產品,是目前應用最廣泛的Web服務器,支持J2EE規范,而且不斷的完善以適應新的開發要求,啟動界面如圖
3.2 WebSphere
另一個常用的Web服務器是IBM公司的WebSphere,支持J2EE規范,啟動界面如圖
3.3 Tomcat
在小型的應用系統或者有特殊需要的系統中,可以使用一個免費的Web服務器:Tomcat,該服務器支持全部JSP以及Servlet規范,啟動界面如圖
Tomcat服務器由Apache提供,開源免費。由于Sun和其他公司參與到了Tomcat的開發中,所以最新的JSP/Servlet規范總是能在Tomcat中體現出來。當前最新版本是Tomcat8,我們課程中使用Tomcat7。Tomcat7支持Servlet3.0,而Tomcat6只支持Servlet2.5!
4. JavaEE概述
java的大方向就是JavaEE,JavaEE不僅僅是socket編程,具體包括13中核心技術。
JAVAEE的核心API與組件
JAVAEE平臺由一整套服務(Services)、應用程序接口(APIs)和協議構成,它對開發基于Web的多層應用提供了功能支持,下面對JAVAEE中的13種技術規范進行簡單的描述(限于篇幅,這里只進行簡單的描述):
4.1 JDBC(Java Database Connectivity)
JDBC API為訪問不同的數據庫提供了一種統一的途徑,象ODBC一樣,JDBC對開發者屏蔽了一些細節問題,另外,JDCB對數據庫的訪問也具有平臺無關性。
4.2 JNDI(Java Name and Directory Interface)
JNDI API被用于執行名字和目錄服務。它提供了一致的模型來存取和操作企業級的資源如DNS和LDAP,本地文件系統,或應用服務器中的對象。
4.3 EJB(Enterprise JavaBean)
JAVAEE技術之所以贏得媒體廣泛重視的原因之一就是EJB。它們提供了一個框架來開發和實施分布式商務邏輯,由此很顯著地簡化了具有可伸縮性和高度復雜的企業級應用的開發。EJB規范定義了EJB組件在何時如何與它們的容器進行交互作用。容器負責提供公用的服務,例如目錄服務、事務管理、安全性、資源緩沖池以及容錯性。但這里值得注意的是,EJB并不是實現JAVAEE的唯一途徑。正是由于JAVAEE的開放性,使得有的廠商能夠以一種和EJB平行的方式來達到同樣的目的。
4.4 RMI(Remote Method Invoke)
正如其名字所表示的那樣,RMI協議調用遠程對象上方法。它使用了序列化方式在客戶端和服務器端傳遞數據。RMI是一種被EJB使用的更底層的協議。
4.5 Java IDL/CORBA
在Java IDL的支持下,開發人員可以將Java和CORBA集成在一起。他們可以創建Java對象并使之可在CORBA ORB中展開, 或者他們還可以創建Java類并作為和其它ORB一起展開的CORBA對象的客戶。后一種方法提供了另外一種途徑,通過它Java可以被用于將你的新的應用和舊的系統相集成。
4.6 JSP(Java Server Pages)
JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端所請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。
4.7Java Servlet
Servlet是一種小型的Java程序,它擴展了Web服務器的功能。作為一種服務器端的應用,當被請求時開始執行,這和CGI Perl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成并且生成HTML。
4.8 XML(Extensible Markup Language)
XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務過程中共享數據。 XML的發展和Java是相互獨立的,但是,它和Java具有的相同目標正是平臺獨立性。通過將Java和XML的組合,您可以得到一個完美的具有平臺獨立性的解決方案。
4.9 JMS(Java Message Service)
JMS是用于和面向消息的中間件相互通信的應用程序接口(API)。它既支持點對點的域,有支持發布/訂閱(publish/subscribe)類型的域,并且提供對下列類型的支持:經認可的消息傳遞,事務型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另 一種方式來對您的應用與舊的后臺系統相集成。
4.10、JTA(Java Transaction Architecture)
JTA定義了一種標準的API,應用系統由此可以訪問各種事務監控。
4.11、JTS(Java Transaction Service)
JTS是CORBA OTS事務監控的基本的實現。JTS規定了事務管理器的實現方式。該事務管理器是在高層支持Java Transaction API (JTA)規范,并且在較底層實現OMG OTS specification的Java映像。JTS事務管理器為應用服務器、資源管理器、獨立的應用以及通信資源管理器提供了事務服務。
4.12 JavaMail
JavaMail是用于存取郵件服務器的API,它提供了一套郵件服務器的抽象類。不僅支持SMTP服務器,也支持IMAP服務器。
4.13 JAF(JavaBeans Activation Framework)
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節流可以被轉換成Java對象,或者轉換自Java對象。大多數應用都可以不需要直接使用JAF
5. Tomcat服務器
5.1 Tomcat 的下載與安裝
下載地址:http://tomcat.apache.org/
安裝目錄不能包含中文和空格
JAVA_HOME環境變量指定Tomcat運行時所要用的jdk所在的位置,注意,配到目錄就行了,不用指定到bin
端口占用問題:netstat -ano命令查看端口占用信息
Catalina_Home環境變量:startup.bat啟動哪個tomcat由此環境變量指定,如果不配置則啟動當前tomcat,推薦不要配置此環境變量
5.2 Tomcat 的目錄層次結構
- bin–存放tomcat啟動關閉所用的批處理文件
- conf–tomcat的配置文件,最終要的是server.xml
- lib–tomcat運行所需jar包
- logs–tomcat運行時產生的日志文件
- temp–tomcat運行時使用的臨時目錄,不需要我們關注
- webapps–web應用所應存放的目錄
- work–tomcat工作目錄,后面學jsp用到
5.3 啟動和關閉Tomcat
在啟動Tomcat之前,我們必須要配置環境變量:
- JAVA_HOME:必須先配置JAVA_HOME,因為Tomcat啟動需要使用JDK
- CATALANA_HOME:如果是安裝版,那么還需要配置這個變量,這個變量用來指定Tomcat的安裝路徑,例如:F:\apache-tomcat-7.0.42
- 啟動:進入%CATALANA_HOME%\bin目錄,找到startup.bat,雙擊即可
- 關閉:進入%CATALANA_HOME%\bin目錄,找到shutdown.bat,雙擊即可
startup.bat會調用catalina.bat,而catalina.bat會調用setclasspath.bat,setclasspath.bat會使用JAVA_HOME環境變量,所以我們必須在啟動Tomcat之前把JAVA_HOME配置正確。
啟動問題:點擊startup.bat后窗口一閃即消失:檢查JAVA_HOME環境變量配置是否正確;
5.4 配置端口號
打開%CATALANA_HOME%\conf\server.xml文件
http默認端口號為80,也就是說在URL中不給出端口號時就表示使用80端口。當然你也可以修改為其它端口號。
當把端口號修改為80后,在瀏覽器中只需要輸入:http://localhost就可以訪問Tomcat主頁了
6. 虛似主機
一個真實主機可以運行多個網站,對于瀏覽器來說訪問這些網站感覺起來就像這些網站都運行在自己的獨立主機中一樣,所以,我們可以說這里的每一個網站都運行在一個虛擬主機上,一個網站就是一個虛擬主機
6.1 配置虛似主機
如需在WEB服務器中配置一個網站,需使用Host元素進行配置
在server.xml中<Engine>標簽下配置<Host>,其中name屬性指定虛擬主機名,appBase指定虛擬主機所在的目錄
只在servlet.xml中配置Hosts,還不能是其他人通過虛擬主機名訪問網站,還需要在DNS服務器上注冊一把,我們可以使用hosts文件模擬這個過程
默認虛擬主機:在配置多個虛擬主機的情況下,如果瀏覽器使用ip地址直接訪問網站時,該使用哪個虛擬主機響應呢?可以在<Engine>標簽上設置defaultHost來指定
<Host name=”site1” appBase=”c:\app”></Host>配置的主機(網站)要想被外部訪問,必須在DNS服務器或windows系統中注冊
由于瀏覽器訪問地址時,需要將地址翻譯成對應的ip才能找到服務器,這其中翻譯的過程是由dns服務器來實現的.我們在做實驗的時候沒有辦法去修改dns服務器,此時可以使用hosts文件模擬dns的功能,從而完成實驗
缺省虛擬主機:如果來訪者是通過ip來訪問,這個時候服務器無法辨別當前要訪問的是哪臺虛擬主機中的資源,此時訪問缺省虛擬主機。缺省虛擬主機可以在server.xml中engin標簽上通過defaultHost屬性進行配置
6.2 訪問過程
7. WEB應用程序
WEB應用程序指供瀏覽器訪問的程序,通常也簡稱為web應用,是為了提供某一特定功能而按照一定方式組織起來的web資源的組合。
一個web應用由多個靜態web資源和動態web資源組成,如
- html、css、js文件
- Jsp文件、java程序、支持jar包、
- 配置文件
- 一個web應用所使用的web資源我們通常使用目錄進行組織,這個目錄我們通常稱為 web應用所在的目錄
Web應用開發好后,若想供外界訪問,需要把web應用所在目錄交給web服務器管理,這個過程稱之為虛似目錄的映射。
web資源不能直接交給虛擬主機,需要按照功能組織用目錄成一個web應用再交給虛擬主機管理
7.1 web應用的目錄結構
靜態資源和JSP文件都可以直接放置在web應用的目錄下,直接放在web應用下的內容,瀏覽器可以直接訪問到
WEB-INF:可以沒有,但是最好有,如果有則一定要保證他的目錄結構是完整的。放置在WEB-INF目錄下的所有資源瀏覽器沒有辦法直接進行訪問
classes:動態web資源運行時的class文件要放在這個目錄下
lib:動態web資源運行時所依賴的jar包要放在這個目錄下
web.xml:整個web應用的配置文件,配置主頁/Servlet的映射/過濾器監聽器的配置都需要依賴這個文件進行
7.2 web.xml文件的作用
- 某個web資源配置為web應用首頁
- 將servlet程序映射到某個url地址上
- 為web應用配置監聽器
- 為web應用配置過濾器
- 但凡涉及到對web資源進行配置,都需要通過web.xml文件
7.3 web應用的虛擬目錄映射
在server.xml的<Host>標簽下配置<Context path=”虛擬路徑” docBase=”真實路徑”>如果path=”“則這個web應用就被配置為了這個虛擬主機的默認web應用
在tomcat/conf/引擎名/虛擬主機名 之下建立一個.xml文件,其中文件名用來指定虛擬路徑,如果是多級的用#代替/表示,文件中配置<Context docBase=”真實目錄”>,如果文件名起為ROOT.xml則此web應用為默認web應用
直接將web應用放置到虛擬主機對應的目錄下,如果目錄名起為ROOT則此web應用為默認web應用
如果三處都配置默認,web應用則server.xml > config/…/xx.xml > webapps
7.4 其它問題
- 打war包,方式一:jar -cvf news.war * 方式二:直接用壓縮工具壓縮為zip包,該后綴為.war
- 通用context和通用web.xml,所有的<Context>都繼承子conf/context.xml,所有的web.xml都繼承自conf/web.xml
- reloadable讓tomcat自動加載更新后的web應用,當java程序修改后不用重啟,服務器自動從新加載,開發時設為true方便開發,發布時設為false,提高性能
- Tomcat管理平臺,可以在conf/tomcat-users.xml下配置用戶名密碼及權限
8. Tomcat體系架構
9. WEB開發的前景
9.1 軟件開發的兩種架構:C/S和B/S
9.2 C/S B/S之爭
講到這個地方,很多同學就沒勁了,為什么呢?搞半天就是做網站喲,沒點意思。所以這里特意講下web開發的前景,免得有些同學像菜鳥一樣,以為自己很懂,其實啥都不懂,說些傻話。要講web開發前景,首先要強調一點,你學javaweb,開發的是程序,別人通過瀏覽器,訪問的是你寫的程序,程序為用戶完成服務后,再把結果通過寫到瀏覽器中顯示,思想不要停留在90年代,以為通過瀏覽器看到的都是網頁。要注意,將來網站都是用來提供服務的,像你們思想中的網頁,只有網站提供的一種服務而已。
再者,要講web開發前景,就不得不提軟件開發的兩種架構之爭了,一種是c/s架構,一種是b/s架構。
何為b/s架構呢?(瀏覽器/服務器架構)就是指數據和程序都在服務器端,客戶端通過瀏覽器訪問程序并獲取數據。這種架構的最大好處就是服務器端程序一旦修改,所有客戶端訪問的都最新的程序,開發人員只管維護服務器就行了,不用管客戶端維護的事。這種架構的最大缺點就是,由于客戶端都是使用瀏覽器來訪問服務器程序的,數據最終顯示在瀏覽器中,瀏覽器有多強,數據就能顯示成什么樣式,數據的顯示樣式最終由瀏覽器決定。由于這種特性,所以b/s架構很少用來開發一些對顯示有特殊要求的程序,例如游戲,現在的瀏覽器很難做到把數據顯示成一個人,拿著一把刀,到處找人PK,并且還不卡。
何為c/s架構呢?就是指程序運行在客戶機上,數據在服務器上。這種架構有一個很大的毛病,就是程序一旦修改,需要更新所有的客戶機程序,客戶機多,維護的工作量相當恐怖。這種架構的優點是:由于數據的計算在客戶機上,服務器的壓力小,并且由于數據的顯示也由程序員自己編寫gui程序完成,顯示不受限制。所以c/s架構適合用于開發像游戲這樣的程序。
但是,隨著網絡帶寬的不斷提升,云計算概念的提出,瀏覽器只要足夠強大,c/s架構立馬就會被淘汰,不僅c/s架構會被淘汰,軟件最終都會消失、操作系統都可以沒有,最終將會是b/s架構的天下,也就是瀏覽器+搜索引擎的天下。所有現在桌面軟件提供的功能,最后都由網站提供,也就是說,將來打開電腦就是一個瀏覽器,想要什么服務,通過搜索引擎一找,就可以在網上找到相應的服務,用就是了。所以web開發人員是現在最流行的崗位。
總結
以上是生活随笔為你收集整理的JavaWeb开发概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb:过滤器Filter
- 下一篇: JavaWeb:JDBC之数据库连接池