1、 為什么需要JavaEE
我們編寫(xiě)的JSP代碼中,由于大量的顯示代碼和業(yè)務(wù)邏輯混淆在一起,彼此嵌套,不利于程序的維護(hù)和擴(kuò)展。當(dāng)業(yè)務(wù)需求發(fā)生變化的時(shí)候,對(duì)于程序員和美工都是一個(gè)很重的負(fù)擔(dān)。
為了程序的易維護(hù)性和可擴(kuò)展性,這就需要我們使用JavaEE技術(shù)來(lái)進(jìn)行項(xiàng)目開(kāi)發(fā)
2、 什么是JavaEE
JavaEE是一個(gè)開(kāi)發(fā)分布式企業(yè)級(jí)應(yīng)用的規(guī)范和標(biāo)準(zhǔn)。
Java語(yǔ)言的平臺(tái)有3個(gè)版本:適用于小型設(shè)備和智能卡的JavaME(Java Platform Micro Edition,Java微型版)、適用于桌面系統(tǒng)的JavaSE(Java Platform Micro Edition,Java標(biāo)準(zhǔn)版)、適用于企業(yè)應(yīng)用的JavaEE(Java Platform Enterprise Edition,Java企業(yè)版)。
3、 JavaEE包括的技術(shù)
JavaEE應(yīng)用程序是由組件構(gòu)成的。J2EE組件是具有獨(dú)立功能的單元,他們通過(guò)相關(guān)的類和文件組裝成JavaEE應(yīng)用程序,并與其他組件交互。
JavaEE包括的技術(shù)有:Web Service、Struts、Hibernate、Spring、JSP、Servlet、JSF、EJB、JavaBean、JDBC、JNDI、XML、JavaSE。
4、 什么框架
框架即Framework,我們可以把框架理解為某種應(yīng)用的半成品,就是一組組件,供用戶選用,完成用戶自己的系統(tǒng)。簡(jiǎn)單地說(shuō)就是使用別人準(zhǔn)備好的組件,來(lái)實(shí)施自己的項(xiàng)目。
5、 JavaEE與框架的關(guān)系
框架技術(shù)是在JavaEE的基礎(chǔ)上形成的,而應(yīng)用程序是在框架的基礎(chǔ)上創(chuàng)建的。
6、 JavaEE的體系結(jié)構(gòu)
應(yīng)用程序的三層結(jié)構(gòu)如下:
表示層:由用戶界面和用戶生成界面的代碼組成。
中間層:包含系統(tǒng)的業(yè)務(wù)和功能代碼。
數(shù)據(jù)層:負(fù)責(zé)完成存取數(shù)據(jù)庫(kù)的數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行封裝。
三層體系結(jié)構(gòu)的優(yōu)點(diǎn):
一個(gè)組件的更改不會(huì)影響其他兩個(gè)組件。例如:如果用戶需要更換數(shù)據(jù)庫(kù),那么只有數(shù)據(jù)層組件需要修改代碼。同樣,如果更改了用戶界面設(shè)計(jì),那么只有表示層組件需要修改。
由于表示層和數(shù)據(jù)層相互獨(dú)立,因而可以方便地?cái)U(kuò)充表示層,使系統(tǒng)具有良好的可擴(kuò)展性。
代碼重復(fù)減少,因?yàn)樵?/span>3個(gè)組件之間盡可能地共享代碼。
良好的分工與協(xié)作。這將使不同的小組能夠獨(dú)立地開(kāi)發(fā)應(yīng)用程序的不同部分,并充分發(fā)揮各自的長(zhǎng)處和優(yōu)勢(shì)。
7、 JavaEE技術(shù)內(nèi)容
JavaEE技術(shù)體系結(jié)構(gòu)可分為:表示層技術(shù)、中間層技術(shù)、數(shù)據(jù)層技術(shù)。JavaEE還涉及到系統(tǒng)集成的一些技術(shù)。
7.1、表示層技術(shù)
HTML
JavaScript
Ajax
Ajax是幾種技術(shù)的整合。Ajax的主要功能是異步地向服務(wù)器端發(fā)送請(qǐng)求,處理數(shù)據(jù)或者根據(jù)返回的數(shù)據(jù)重新顯示頁(yè)面。
7.2、中間層技術(shù)
JSP
顯示動(dòng)態(tài)內(nèi)容的服務(wù)器網(wǎng)頁(yè)。
Servlet
接收客戶端請(qǐng)求,并做出響應(yīng)的Java程序。
Servlet是中間層技術(shù)的重要組成部分,它控制著其他的組件。
JSTL
輔助JSP顯示動(dòng)態(tài)內(nèi)容的標(biāo)準(zhǔn)標(biāo)簽庫(kù)。
JavaBean
JavaEE的模型組件。
中間層的框架技術(shù)
Struts框架:Struts主要是擴(kuò)展了Servlet。
7.3、數(shù)據(jù)層技術(shù)
JDBC技術(shù)
JDBC(Java Database Connectivity):Java數(shù)據(jù)庫(kù)連接。
使用JDBC操作數(shù)據(jù)庫(kù)中的表和數(shù)據(jù)。
數(shù)據(jù)層框架技術(shù)
數(shù)據(jù)層框架,Hibernate提供了以對(duì)象的形式操作關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)的功能。
7.4、系統(tǒng)集成技術(shù)
在一些大型項(xiàng)目中,整個(gè)應(yīng)用程序被分成若干個(gè)模塊,由不同的開(kāi)發(fā)團(tuán)隊(duì)同步進(jìn)行開(kāi)發(fā),有可能他們使用的技術(shù)也是各不相同的,在每個(gè)功能模塊開(kāi)發(fā)結(jié)束后,所要做的事情就是把這些零散的模塊,整合成一個(gè)整體,這才是我們也是客戶所要的東西,這時(shí)我們就要用到有關(guān)系統(tǒng)集成的技術(shù)(Web Service)。
JAX-WS技術(shù)
JAX-WS(Java API for XML Web Service)是JavaEE平臺(tái)的重要組成部分。
JAX-WS簡(jiǎn)化了使用Java技術(shù)開(kāi)發(fā)Web服務(wù)的工作。
JNDI
JNDI(Java Naming and Directory Interface,Java命名和目錄接口)是一組在Java應(yīng)用中訪問(wèn)命名和目錄服務(wù)的API,命名服務(wù)把對(duì)象和名稱聯(lián)系在一起,并且可以通過(guò)名稱找到相應(yīng)的對(duì)象。
8、 HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)協(xié)議
HTTP是一個(gè)無(wú)狀態(tài)協(xié)議,它基于客戶端/服務(wù)器模型。HTTP客戶端(如瀏覽器)需要與服務(wù)器建立一個(gè)連接,并將一則請(qǐng)求消息通過(guò)連接發(fā)送到HTTP服務(wù)器,以請(qǐng)求相應(yīng)的資源。然后服務(wù)器返回帶有請(qǐng)求資源的響應(yīng)消息。當(dāng)響應(yīng)結(jié)束后,就斷開(kāi)連接,彼此并不保存連接信息。所以HTTP是無(wú)狀態(tài)協(xié)議。
HTTP使用端口發(fā)送和接收消息。端口是協(xié)議發(fā)送和接收數(shù)據(jù)的信道或機(jī)制。80端口是為HTTP開(kāi)發(fā)的,主要用于在WWW(World Wide Web,萬(wàn)維網(wǎng))服務(wù)上傳輸信息。瀏覽網(wǎng)頁(yè)服務(wù)默認(rèn)的端口號(hào)是80。
9、 使用MyEclipse提供的數(shù)據(jù)監(jiān)控工具TCP/IP Monitor來(lái)進(jìn)行數(shù)據(jù)監(jiān)控。
TCP/IP Monitor(TCP/IP 監(jiān)控器)的配置步驟:
Window(窗口)--->Preferences(首選項(xiàng))--->Run Debug(運(yùn)行/調(diào)式)--->TCP/IP Monitor(TCP/IP 監(jiān)視器)
注意:如果沒(méi)有找到,則按以下路徑查找:
Window(窗口)--->Preferences(首選項(xiàng))--->MyEclipse ---> Internet Tools(因特網(wǎng)工具)---> TCP/IP Monitor(TCP/IP 監(jiān)視器)
然后選中Show the TCP/IP Monitor view there is activity(顯示TCP/IP監(jiān)視器視圖,用來(lái)查看什么時(shí)候有請(qǐng)求和響應(yīng))。
單擊“Add”按鈕,彈出New Monitor窗口。
Local monitoring Port:填寫(xiě)8088。本機(jī)監(jiān)控端口,也就是Monitor實(shí)際監(jiān)聽(tīng)的端口。
Host name:填寫(xiě)localhost或127.0.0.1。欲監(jiān)控的主機(jī)名稱,監(jiān)聽(tīng)對(duì)象的設(shè)置。
Port:填寫(xiě)8080。欲監(jiān)控的端口號(hào),你想要監(jiān)聽(tīng)的端口號(hào),你的請(qǐng)求發(fā)送到Local monitoring Port后會(huì)轉(zhuǎn)到這個(gè)端口。
Type:選擇HTTP。要監(jiān)控的類型。
Timeout:0 。
單擊確定按鈕,然后單擊Start(啟動(dòng))按鈕啟動(dòng)監(jiān)視器。
然后啟動(dòng)tomcat,在地址欄中輸入:http://localhost:8088/項(xiàng)目名(或上下文路徑)。在MyEclipse中會(huì)出現(xiàn)“TCP/IP Monitor”窗口,可以看到監(jiān)聽(tīng)的數(shù)據(jù)了。
可以單擊窗口右上角的ValidateWS-I Message Log File圖標(biāo)(圖標(biāo)上有個(gè)勾)添加記錄文件。
下面對(duì)某一請(qǐng)求示例進(jìn)行分析:
客戶端發(fā)送的消息為文本流,由以下內(nèi)容組成:
請(qǐng)求行:包括方法、統(tǒng)一資源標(biāo)識(shí)符(URL)和HTTP協(xié)議版本。
頭信息:典型的請(qǐng)求消息類似于以下內(nèi)容。
GET /monitor/test.jsp?username=xinxin&userpassword=1234 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0(Windows;U;Window NT 5.1;zh-CN;)
Accept: text/xml,application/xml, text/html; text/plain;
第一行使用GET方法提交請(qǐng)求數(shù)據(jù),并指定正在使用的是HTTP協(xié)議1.1版本。后續(xù)行包括頭信息,User-Agent頭指示客戶端使用的瀏覽器類型是Mozilla,Accept頭信息提供有關(guān)客戶端可以接受的MIME類型列表。在頭信息之后,客戶端發(fā)送一個(gè)空白行,指示請(qǐng)求消息結(jié)束。請(qǐng)求消息由服務(wù)器進(jìn)一步處理,并且生成相應(yīng)的響應(yīng)消息。
下面是響應(yīng)示例:
HTTP/1.1 200 OK
Server: JavaWebServer
Last-modified: Tuesday, 21-Aug-07 11:12:10 GMT
Content-length: 100
Content-type: text/html
第一行為狀態(tài)行。狀態(tài)行中的狀態(tài)碼200指示已成功處理請(qǐng)求,因此描述為“OK”,404是找不到被請(qǐng)求的網(wǎng)頁(yè)時(shí)遇到的狀態(tài)碼。其他行是頭信息,Server頭指定服務(wù)器上使用的軟件,Last-modified頭指示被請(qǐng)求文件的最后修改日期,Content-length頭指定文件的大?。ㄒ宰止?jié)表示),Content-type頭指定文檔的MIME類型。例如,text/plain指示未格式化的文本文檔。text/html指示格式化的Web文檔。
10、 get和post發(fā)送方式
post:post方式會(huì)將表單的內(nèi)容通過(guò)http發(fā)送,在地址欄中看不到表單的提交信息,比較安全,而且使用post方式發(fā)送信息沒(méi)有字符長(zhǎng)度的限制。
get方式:表單內(nèi)容經(jīng)過(guò)編碼之后,通過(guò)URL發(fā)送,可以在地址欄中看到表單信息,不安全。使用get方式發(fā)送信息時(shí)有255個(gè)字符的限制。get請(qǐng)求的頁(yè)面可以設(shè)置為書(shū)簽或使用郵件發(fā)送,而post不可以。
聯(lián)系客服