標籤:
1.中介軟體、容器、Web伺服器
1.1中介軟體
中介軟體是提供系統軟體和應用軟體之間串連的軟體,以便於軟體各組件之間的溝通。中介軟體處於作業系統和更高一級應用程式之間。
J2EE提出的背景:
1)企業級應用程式框架的需求:在許多企業級應用中,例如資料庫連接、郵件服務、交易處理等都是一些通用企業需求模組,這些模組每次再開發如果都由開發人員來完成的話,將會造成開發週期長和代碼可靠性差等問題。於是許多大公司開發了自己的通用模組服務,這些服務型的軟體系列被稱為中介軟體。
2)通用的規範:因為這些中介軟體與使用者的溝通都各有不同,從而導致使用者無法將其組裝在一起為自己服務,於是提出標準的概念,J2EE就是基於JAVA技術的一系列標準。
中介軟體的功能:將應用程式運行環境與作業系統隔離,從而實現應用程式開發人員不必為更多系統問題憂慮,而直接關注該應用程式在解決問題上的能力。
商用中介軟體主要陣營:微軟陣營、Java陣營、開源陣營。
常見的中介軟體:Apache-Tomcat、IBM-WebSphere、BEA-WebLogic、Kingdee-Apusic
1.2 容器
容器就是中介軟體的一種,充當中介軟體的角色。
容器的分類:
1)Web容器
給處於其中的應用程式組件(JSP,Servlet)提供一個環境(Jsp容器和Servlet),是組件(JSP,Servlet)直接跟容器中的環境變數介面互動。容器提供的介面嚴格遵守J2EE規範中的WEB APPLICATION標準,我們把以上標準的WEB伺服器就叫做J2EE的WEB容器。
2)EJB容器
Enterprise java bean 容器。它提供給運行在其中的組件EHB各種管理功能。只要滿足J2EE規範的EJB放入容器,馬上就會被容器進行高效管理,並通過線程的介面獲得系統層級的服務,如郵件服務、交易管理等。
3)Web容器與EJB容器的區別
WEB容器和EJB容器在原理上大體相同,它們都是把外界的互動從而減輕應用程式的負擔。
主要區別是被隔離的外界環境。WEB容器主要與基於HTTP請求互動,EJB容器主要是跟資料庫、其他服務互動。如Servlet不同關心HTTP的細節,直接引用環境變數session,request,response;EJB不用關心資料庫連接速度、各種事務控制,直接由EJB容器完成。
1.3 WEB伺服器(程式/軟體)
提供Web資訊瀏覽服務,向客戶瀏覽器提供服務的程式
1)目前常見web伺服器:
大型:Microsoft IIS、IBM WebSphere、BEA WebLogic、Apache、Tomcat
小型:nginx、 micro_httpd、mini_httpd、thttpd、 lighttpd、Shttpd
2)支援J2EE的應用伺服器:
WEBSPHERE、WEBLOGIC、JBOSS、ORACLE APPLICATION SERVER、SUN ONE APPLICATION SERVER 等。
2.ServletContext功能作用
2.1 ServletContext
1)是一個全域的儲存資訊的空間,伺服器開始,其就存在,伺服器關閉,其才釋放,所有使用者共用一個servletContext。
2)一個ServletContext對象表示了一個Web應用程式的上下文,是Web伺服器中的一個已知路徑的根,為了節省空間的,提高效率,ServletContext中,要放必須的、重要的、所有使用者需要共用的線程又是安全的一些資訊。
2.2 Servlet上下文
1) 提供對應用程式中所有Servlet所共有的各種資源和功能的訪問。Servlet上下文API用於設定應用程式中所有Servlet共有的資訊。Servlet可能需要共用他們之間的共有資訊。運行於同一伺服器的Servlet有時會共用資源,如JSP頁面、檔案和其他Servlet。
如,做一個購物類的網站,要從資料庫中提取物品資訊,如果用session儲存這些物品資訊,每個使用者都訪問一便資料庫,效率就太低了;所以要用來Servlet上下文來儲存,在伺服器開始時,就訪問資料庫,將物品資訊存入Servlet上下文中,這樣,每個使用者只用從上下文中讀入物品資訊就行了。
2) servlet可以通過名稱將對象屬性綁定到上下文。任何綁定到內容相關的屬性可以被同一個web應用的其他servlet使用。ServletContext介面的下列方法允許訪問這種功能:
setAttribute
getAttribute
getAttributeNames
removeAttribute
內容屬性對於建立它們的VM來說是本地的。這防止ServletContext屬性儲存區於分布式容器的共用記憶體中。當資訊需要在運行於分布式環境中的servlet之間共用時,資訊被放入會話中(參見第7章“會話”),儲存於資料庫中,或者儲存於EJB組件中。
3)ServletContext介面
ServletContext介面定義了運行servlet的web應用的servlet視圖。使用ServletContext對象,servlet可以記錄事件記錄,擷取資源的URL地址,並且設定和儲存上下文內可以訪問的其他servlet的屬性。
容器中部署的每一個web應用都有一個ServletContext介面的執行個體對象與之關聯。如果容器被分布在多個虛擬機器上,一個web應用將在每一個VM中有一個ServletContext執行個體。
4)初始化參數
ServletContext介面的初始化參數允許servlet訪問與web應用相關的上下文初始化參數,這些由應用開發人員在部署描述符中指定:
getInitParameter
getInitParameterNames
應用開發人員利用初始化參數傳送配置資訊。典型的例子是web管理員的e-mail地址或者一個持有關鍵資料的系統名稱。
3.HTTP會話
在HTTP串連間維護使用者與統一使用者發出的不同請求之間關聯的情況稱為維護一個會話(session)。
3.1 會話的特徵
1)不同使用者的會話應當是相互獨立的
2)會話一旦建立就應當一直存在,直到使用者空閑時間超過了某一個時間界限,容器才應當釋放該會話資源
3)在會話的存活期間,使用者可能給伺服器發送了很多請求,該使用者的這些請求資訊都可以儲存在會話中
3.2 建立過程
1)建立tcp串連
2)發出請求文檔
3)發出響應文檔
4)釋放tcp串連
4.GET與POST請求方式的區別
4.1 GET方法
使用GET請求方式,查詢字串以索引值對方式串連在URL後面被被一起傳送至伺服器。
GET方法特點:
1)GET請求能被緩衝;
2)GET請求主要用於擷取資料;
3)GET請求的長度有限制;
4)GET請求儲存在瀏覽器的記錄中;
5)GET請求的URL能儲存為書籤。
6)請求的資料會附加在URL之後,以?分割URL和傳輸資料,多個參數用&串連。URL的編碼格式採用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字元都要編碼之後再傳輸
4.2 POST方法
視同POST請求方式,查詢字串在POST請求中單獨存在,和HTTP請求一起發送至伺服器。
POST方法特點:
1) POST請求不能被緩衝下來
2)POST請求不會儲存在瀏覽器瀏覽記錄中
3)以POST請求的URL無法儲存為瀏覽器書籤
4)POST請求沒有長度限制
4.3 GET與POST區別
| |
GET |
POST |
| 點擊重新整理或返回按鈕 |
沒有影響 |
重新發送資料 |
| 添加書籤 |
不能添加 |
可以添加 |
| 緩衝 |
不存在緩衝 |
存在緩衝 |
| 記錄 |
存在記錄 |
不存在記錄 |
| URL長度限制 |
有長度限制 |
沒有長度限制 |
| 編碼類別型 |
application/x-www-form-urlencoded |
application/x-www-form-urlencoded or multipart/form-data 若傳送位元據,則需要為其設定multipart編碼 |
| 傳送資料類型 |
只允許ASCII字元型 |
沒有限制,可為二進位類型 |
| 安全性 |
不要用GET方式提交敏感性資料 |
傳輸敏感性資料請加密 |
| 查詢字串可見度 |
可見 |
不可見 |
5.Servlet轉寄與重新導向
response.sendRedirect("a.jsp");——轉寄;request.getRequestDispatcher("a.jsp").forward(request,response)——重新導向
區別:
1)轉寄在伺服器端完成的;重新導向是在用戶端完成的
2)轉寄的是同一次請求;重新導向是兩次不同請求
3)轉寄不會執行轉寄後的代碼;重新導向會執行重新導向之後的代碼
4)轉寄瀏覽器地址欄沒有變化;重定瀏覽器向地址欄有變化
5)轉寄必須是在同一台伺服器下完成;重新導向可以在不同的伺服器下完成
2016-09-06 J2EE基礎知識之不知