激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

J2EE的13種核心技術(shù)

時(shí)間:2024-09-01 15:27:46 J2EE培訓 我要投稿
  • 相關(guān)推薦

J2EE的13種核心技術(shù)

  J2EE(Java 2 Platform, Enterprise Edition)是一個(gè)為大企業(yè)主機級的計算類(lèi)型而設計的Java平臺。Sun微系統(與其工業(yè)伙伴一起,例如IBM)設計了J2EE,以此來(lái)簡(jiǎn)化在瘦客戶(hù)級環(huán)境下的應用開(kāi)發(fā)。下面是小編整理的關(guān)于J2EE的13種核心技術(shù),歡迎大家參考!

  一、宏觀(guān)印象: 分布式結構和J2EE

  過(guò)去,二層化應用--通常被稱(chēng)為CLIENT/SERVER應用--是大家談?wù)摰淖疃嗟。在很多情況下,服務(wù)器提供的唯一服務(wù)就是數據庫服務(wù)。在這種解決方案中,客戶(hù)端程序負責數據訪(fǎng)問(wèn)、實(shí)現業(yè)務(wù)邏輯、用合適的樣式顯示結果、彈出預設的用戶(hù)界面、接受用戶(hù)輸入等。CLIENT/SERVER結構通常在第一次部署的時(shí)候比較容易,但難于升級或改進(jìn),而且經(jīng);谀撤N專(zhuān)有的協(xié)議(通常是某種數據庫協(xié)議)。它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難。更重要的是,在WEB時(shí)代,二層化應用通常不能體現出很好的伸縮性,因而很難適應INTERNET的要求。

  SUN設計J2EE的部分起因就是想解決二層化結構的缺陷。于是J2EE定義了一套標準來(lái)簡(jiǎn)化N層企業(yè)級應用的開(kāi)發(fā)。它定義了一套標準化的組件,并為這些組件提供了完整的服務(wù)。J2EE還自動(dòng)為應用程序處理了很多實(shí)現細節,如安全、多線(xiàn)程等。用J2EE開(kāi)發(fā)N層應用包括將二層化結構中的不同層面切分成許多層。一個(gè)N層化應用A能夠為以下的每種服務(wù)提供一個(gè)分開(kāi)的層:顯示:在一個(gè)典型的WEB應用中,客戶(hù)端機器上運行的瀏覽器負責實(shí)現用戶(hù)界面。

  動(dòng)態(tài)生成顯示: 盡管瀏覽器可以完成某些動(dòng)態(tài)內容顯示,但為了兼容不同的瀏覽器,這些動(dòng)態(tài)生成工作應該放在WEB服務(wù)器端進(jìn)行,使用JSP、SERVLETS,或者XML(可擴展標記語(yǔ)言)和XSL(可擴展樣式表語(yǔ)言)。

  業(yè)務(wù)邏輯:業(yè)務(wù)邏輯適合用SESSION EJB(后面將介紹)來(lái)實(shí)現。

  數據訪(fǎng)問(wèn):數據訪(fǎng)問(wèn)適合用ENTITY EJB(后面將介紹)和JDBC來(lái)實(shí)現。

  后臺系統集成: 后臺系統的集成可能需要用到許多不同的技術(shù),至于何種最佳需要根據后臺系統的特征而定。

  您可能開(kāi)始詫異:為什么有這么多的層?事實(shí)上,多層方式可以使企業(yè)級應用具有很強的伸縮性,它允許每層專(zhuān)注于特定的角色。例如,讓W(xué)EB服務(wù)器負責提供頁(yè)面,應用服務(wù)器處理應用邏輯,而數據庫服務(wù)器提供數據庫服務(wù)。

  由于J2EE建立在JAVA2平臺標準版(J2SE)的基礎上,所以具備了J2SE的所有優(yōu)點(diǎn)和功能。包括“編寫(xiě)一次,到處可用”的可移植性、通過(guò)JDBC訪(fǎng)問(wèn)數據庫、同原有企業(yè)資源進(jìn)行交互的CORBA技術(shù)以及一個(gè)經(jīng)過(guò)驗證的安全模型。在這些基礎上,J2EE又增加了對EJB(企業(yè)級JAVA組件)、JAVA SERVLETS、JAVA服務(wù)器頁(yè)面(JSPS)和XML技術(shù)的支持。

  二、分布式結構與WEBLOGIC應用服務(wù)器

  J2EE提供了一個(gè)框架--一套標準API--用于開(kāi)發(fā)分布式結構的應用,這個(gè)框架的實(shí)際實(shí)現留給了第三方廠(chǎng)商。部分廠(chǎng)商只是專(zhuān)注于整個(gè)J2EE架構中的的特定組件,例如APACHE的TOMCAT提供了對JSP和SERVLETS的支持,BEA系統公司則通過(guò)其WEBLOGIC應用服務(wù)器產(chǎn)品為整個(gè) J2EE規范提供了一個(gè)較為完整的實(shí)現。

  WEBLOGIC服務(wù)器已使建立和部署伸縮性較好的分布式應用的過(guò)程大為簡(jiǎn)化。WEBLOGIC和J2EE代你處理了大量常規的編程任務(wù),包括提供事務(wù)服務(wù)、安全領(lǐng)域、可靠的消息、名字和目錄服務(wù)、數據庫訪(fǎng)問(wèn)和連接池、線(xiàn)程池、負載平衡和容錯處理等。通過(guò)以一種標準、易用的方式提供這些公共服務(wù),象WEBLOGIC服務(wù)器這樣的產(chǎn)品造就了具有更好伸縮性和可維護性的應用系統,使其為大量的用戶(hù)提供了增長(cháng)的可用性。

  J2EE技術(shù)在接下來(lái)的部分里,我們將描述構成J2EE的各種技術(shù),并且了解WEBLOGIC服務(wù)器是如何在一個(gè)分布式應用中對它們進(jìn)行支持的。最常用的J2EE技術(shù)應該是JDBC、JNDI、EJB、JSP和SERVLETS,對這些我們將作更仔細的考察。

  三、JAVA DATABASE CONNECTIVITY (JDBC)

  JDBC API以一種統一的方式來(lái)對各種各樣的數據庫進(jìn)行存取。和ODBC一樣,JDBC為開(kāi)發(fā)人員隱藏了不同數據庫的不同特性。另外,由于JDBC建立在JAVA的基礎上,因此還提供了數據庫存取的平臺的獨立性。

  JDBC定義了4種不同的驅動(dòng)程序,現分述如下:

  類(lèi)型 1: JDBC-ODBC BRIDGE

  在JDBC出現的初期,JDBC-ODBC橋顯然是非常有實(shí)用意義的,通過(guò)JDBC-ODBC橋,開(kāi)發(fā)人員可以使用JDBC來(lái)存取ODBC數據源。不足的是,他需要在客戶(hù)端安裝ODBC驅動(dòng)程序,換句話(huà)說(shuō),必須安裝MICROSOFT WINDOWS的某個(gè)版本。使用這一類(lèi)型你需要犧牲JDBC的平臺的獨立性。另外,ODBC驅動(dòng)程序還需要具有客戶(hù)端的控制權限。

  類(lèi)型 2: JDBC-NATIVE DRIVER BRIDGE

  JDBC本地驅動(dòng)程序橋提供了一種JDBC接口,它建立在本地數據庫驅動(dòng)程序的頂層,而不需要使用ODBC。

  JDBC驅動(dòng)程序將對數據庫的API從標準的JDBC調用轉換為本地調用。使用此類(lèi)型需要犧牲JDBC的平臺的獨立性,還要求在客戶(hù)端安裝一些本地代碼。

  類(lèi)型 3: JDBC-NETWORK BRIDGE

  JDBC網(wǎng)絡(luò )橋驅動(dòng)程序不再需要客戶(hù)端數據庫驅動(dòng)程序。它使用網(wǎng)絡(luò )上的中間服務(wù)器來(lái)存取數據庫。這種應用使得以下技術(shù)的實(shí)現有了可能,這些技術(shù)包括負載 均衡、連接緩沖池和數據緩存等。由于第3種類(lèi)型往往只需要相對更少的下載時(shí)間,具有平臺的獨立性,而且不需要在客戶(hù)端安裝并取得控制權,所以很適合于 INTERNET上的應用。

  類(lèi)型 4: PURE JAVA DRIVER

  第4種類(lèi)型通過(guò)使用一個(gè)純JAVA數據庫驅動(dòng)程序來(lái)執行數據庫的直接訪(fǎng)問(wèn)。此類(lèi)型實(shí)際上在客戶(hù)端實(shí)現了2層結構。要在N-層結構中應用,一個(gè)更好的做法是編寫(xiě)一個(gè)EJB,讓它包含存取代碼并提供一個(gè)對客戶(hù)端具有數據庫獨立性的服務(wù)。

  WEBLOGIC服務(wù)器為一些通常的數據庫提供了JDBC驅動(dòng)程序,包括ORACLE, SYBASE, MICROSOFT SQL SERVER以及INFORMIX。它也帶有一種JDBC驅動(dòng)程序用于CLOUDSCAPE,這是一種純JAVA的DBMS,WEBLOGIC服務(wù)器中帶有該數據庫的評估版本。

  以下讓我們看一個(gè)實(shí)例。

  JDBC實(shí)例在這個(gè)例子中我們假定你已經(jīng)在CLOUDSCAPE中建立了一個(gè)PHONEBOOK數據庫,并且包含一個(gè)表,名為CONTACT_TABLE ,它帶有2個(gè)字段:NAME 和 PHONE。開(kāi)始的時(shí)候先裝載CLOUDSCAPE JDBC DRIVER,并請求DRIVER MANAGER得到一個(gè)對PHONEBOOK CLOUDSCAPE數據庫的連接。通過(guò)這一連接,我們可以構造一個(gè)STATEMENT 對象并用它來(lái)執行一個(gè)簡(jiǎn)單的SQL查詢(xún)。最后,用循環(huán)來(lái)遍歷結果集的所有數據,并用標準輸出將NAME和PHONE字段的內容進(jìn)行輸出。

  OK。接著(zhù)我們來(lái)看一看JDBC是如何在企業(yè)應用中的進(jìn)行使用。JDBC在企業(yè)級應用中的應用以上實(shí)例其實(shí)是很基本的,可能有些微不足道。它假定了一個(gè)2層結構。在一個(gè)多層的企業(yè)級應用中,更大的可能是在客戶(hù)端和一個(gè)EJB進(jìn)行通信,該EJB將建立數據庫連接。為了實(shí)現和改進(jìn)可伸縮性和系統性能,WEBLOGIC服務(wù)器提供了對連接緩沖池CONNECTION POOL的支持。

  CONNECTION POOL減少了建立和釋放數據庫連接的消耗。在系統啟動(dòng)以后即可建立這樣的緩沖池,此后如故再有對數據庫的請求,WEBLOGIC服務(wù)器可以很簡(jiǎn)單地從緩 沖池中取出數據。數據緩沖池可以在WEBLOGIC服務(wù)器的WEBLOGIC.PROPERTIES 文件中進(jìn)行定義。(可參考 WEBLOGIC.PROPERTIES 文件中的例子,WEBLOGIC服務(wù)器的文檔中還有更詳細的參考信息)在企業(yè)級應用的另一 個(gè)常見(jiàn)的數據庫特性是事務(wù)處理。事務(wù)是一組申明STATEMENT,它們必須做為同一個(gè)STATEMENT來(lái)處理以保證數據完整性。缺省情況下JDBC使 用 AUTO-COMMIT 事務(wù)模式。這可以通過(guò)使用CONNECTION類(lèi)的 SETAUTOCOMMIT() 方法來(lái)實(shí)現。

  現在我們已經(jīng)對JDBC有了一些認識,下面該轉向JNDI了。

  四、JAVA NAMING AND DIRECTORY INTERFACE (JNDI)

  JNDI API被用于執行名字和目錄服務(wù)。它提供了一致的模型來(lái)存取和操作企業(yè)級的資源如DNS和LDAP,本地文件系統,后者在應用服務(wù)器中的對象。

  在JNDI中,在目錄結構中的每一個(gè)結點(diǎn)稱(chēng)為CONTEXT。每一個(gè)JNDI名字都是相對于CONTEXT的。這里沒(méi)有絕對名字的概念存在。對一個(gè)應用來(lái)說(shuō),它可以通過(guò)使用 INITIALCONTEXT 類(lèi)來(lái)得到其第一個(gè)CONTEXT:

  CONTEXT CTX = NEW INITIALCONTEXT();

  應用可以通過(guò)這個(gè)初始化的CONTEXT經(jīng)有這個(gè)目錄樹(shù)來(lái)定位它所需要的資源或對象。例如,假設你在WEBLOGIC服務(wù)器中展開(kāi)了一個(gè)EJB并將 HOME接口綁定到名字 MYAPP.MYEJB ,那么該EJB的某個(gè)客戶(hù)在取得一個(gè)初始化

  CONTEXT以后,可以通過(guò)以下語(yǔ)句定位HOME接口:

  MYEJBHOME HOME = CTX.LOOKUP( "MYAPP.MYEJB" );

  在這個(gè)例子中,一旦你有了對被請求對象的參考,EJB的HOME接口就可以在它上面調用方法。我們將在下面的"ENTERPRISE JAVA BEANS"章節中做更多的介紹。

  以上關(guān)于JNDI的討論只是冰山之一角而已。如果要更進(jìn)一步地在CONTEXT中查找對象,JNDI也提供了一些方法來(lái)進(jìn)行以下操作:

  將一個(gè)對象插入或綁定到CONTEXT。這在你展開(kāi)一個(gè)EJB的時(shí)候是很有效的。

  從CONTEXT中移去對象。

  列出CONTEXT中的所有對象。

  創(chuàng )建或刪除子一級的CONTEXT。

  接下來(lái),我們要開(kāi)始關(guān)注EJB了。

  五、ENTERPRISE JAVA BEANS (EJB)

  J2EE技術(shù)之所以贏(yíng)得某體廣泛重視的原因之一就是EJB。它們提供了一個(gè)框架來(lái)開(kāi)發(fā)和實(shí)施分布式商務(wù)邏輯,由此很顯著(zhù)地簡(jiǎn)化了具有可伸縮性和高度復雜的企業(yè)級應用的開(kāi)發(fā)。EJB規范定義了EJB組件在何時(shí)以及如何與它們的容器進(jìn)行交互作用。容器負責提供公用的服務(wù),例如目錄服務(wù)、事務(wù)管理、安全性、資源緩沖池以及容錯性。

  EJB規范定義了3中基本的BEAN類(lèi)型:

  STATELESS SESSION BEANS: 提供某種單一的服務(wù),不維持任何狀態(tài),在服務(wù)器故障發(fā)生時(shí)無(wú)法繼續存在,生命期相對較短。例如,一個(gè)STATELESS SESSION BEAN可能被用于執行溫度轉換計算。

  STATEFUL SESSION BEAN: 提供了與客戶(hù)端的會(huì )話(huà)交互,可以存儲狀態(tài)從而代表一個(gè)客戶(hù)。典型例子是購物車(chē)。STATEFUL SESSION BEAN在服務(wù)器故障時(shí)無(wú)法繼續生存,生命期相對較短。每一個(gè)實(shí)例只用于一個(gè)單個(gè)的線(xiàn)程

  ENTITY BEANS: 提供了一致性數據的表示-- 通常存放在數據庫中 -- 在服務(wù)器故障發(fā)生后能繼續存在。多用戶(hù)情況下可以使用EJB來(lái)表示相同的數據。ENTITY EJB的一個(gè)典型例子是客戶(hù)的帳號信息。

  盡管有以上的區別,所有的EJB還是有許多的共同之處:

  它們都處理HOME INTERFACE。它定義了一個(gè)客戶(hù)端是如何創(chuàng )建與消亡EJB的。

  可以在BEAN中對定義了客戶(hù)端方法的遠程接口進(jìn)行調用;

  BEAN類(lèi)則執行了主要的商務(wù)邏輯描述

  EJB的開(kāi)發(fā)已經(jīng)超出了本文的范圍。但是,如果一個(gè)EJB已經(jīng)被開(kāi)發(fā)了或者從第三方進(jìn)行了購買(mǎi),它就必須在應用服務(wù)器中進(jìn)行發(fā)布。WEBLOGIC SERVER 5.1帶有一個(gè)EJB DEPLOYER TOOL來(lái)協(xié)助處理EJB的發(fā)布。當你使用EJB DEPLOYER TOOL的時(shí)候,你要定義客戶(hù)端所用的JNDI名字來(lái)定位EJB。DEPLOYER TOOL將生成WRAPPER類(lèi)來(lái)處理和容器的通信以及在一個(gè)JAR文件中把被請求的JAVA類(lèi)綁定在一起。一旦EJB被發(fā)布,客戶(hù)端就可以使用它的JNDI名字來(lái)定位EJB。

  首先,它必須得到一個(gè)到HOME接口的REFERENCE。

  然后,客戶(hù)端可以使用該接口,調用一個(gè) CREATE() 方法來(lái)得到服務(wù)器上運行的某個(gè)BEAN實(shí)例的句柄;

  最后,客戶(hù)端可以使用該句柄在BEAN中調用方法。

  了解 EJB后,讓我們再來(lái)看JSP。

  六、JAVA SERVER PAGES (JSPS)

  我們中間可能已經(jīng)有許多人已經(jīng)熟悉MICROSOFT的ACTIVE SERVER PAGES (ASP)技術(shù)了。JSP和ASP相對應的,但更具有平臺對立性。他們被設計用以幫助WEB內容開(kāi)發(fā)人員創(chuàng )建動(dòng)態(tài)網(wǎng)頁(yè),并且只需要相對較少的代碼。即使WEB設計師不懂得如何編程也可以使用JSP,因為JSP應用是很方便的。JSP頁(yè)面由HTML代碼和嵌入其中的JAVA代碼所組成。服務(wù)器在頁(yè)面被客戶(hù)端所請求以后對這些JAVA代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶(hù)端的瀏覽器。

  下面我們來(lái)看一個(gè)JSP的簡(jiǎn)單實(shí)例。它只顯示了服務(wù)器的當前日期和時(shí)間。雖然,對語(yǔ)法的具體解釋已經(jīng)超出了本文的范圍,但我們還是可以很直觀(guān)地看到,JAVA代碼被放在的中間,而JAVA的表達式則放在之間。

  您可能有時(shí)候聽(tīng)說(shuō)過(guò)JHTML。這是JSP以前的一種較老的標準。WEBLOGIC服務(wù)器既可支持JSP,又可支持JHTML。

  請注意,在缺省狀況下,JSP在WEBLOGIC服務(wù)器中并沒(méi)有處于有效狀態(tài)。要使之有效,你可以編輯WEBLOGIC.PROPERTIES文件。如果WEB服務(wù)器還沒(méi)有處于有效狀態(tài),則要先使之有效。SERVLET的情況和JSP是一樣的。

  七、JAVA SERVLETS

  SERVLET提供的功能大多與JSP類(lèi)似,不過(guò)實(shí)現的方式不同。JSP通常是大多數HTML代碼中嵌入少量的JAVA代碼,而SERVLETS全部由JAVA寫(xiě)成并且生成HTML。

  SERVLET是一種小型的JAVA程序,它擴展了WEB服務(wù)器的功能。作為一種服務(wù)器端的應用,當被請求時(shí)開(kāi)始執行,這和CGI PERL腳本很相似。SERVLETS和CGI腳本的一個(gè)很大的區別是:每一個(gè)CGI在開(kāi)始的時(shí)候都要求開(kāi)始一個(gè)新的進(jìn)程 -- 而SERVLETS是在SERVLET引擎中以分離的線(xiàn)程來(lái)運行的。因此SERVLETS在可伸縮性上提供了很好的改進(jìn)。在開(kāi)發(fā)SERVLETS的時(shí)候,您常常需要擴展JAVA X.SERVLET.HTTP.HTTPSERVLET 類(lèi),并且OVERRIDE一些它的方法,其中包括:

  SERVICE(): 作為DISPATCHER來(lái)實(shí)現命令-定義方法

  DOGET(): 處理客戶(hù)端的HTTP GET請求。

  DOPOST(): 進(jìn)行HTTP POST操作

  其它的方法還包括處理不同類(lèi)型的HTTP請求 -- 可以參考HTTPSERVLET API文檔。

  以上描述的是標準J2EE SERVLET API的各種方法。WEBLOGIC服務(wù)器提供了一個(gè)該API完整的實(shí)現途徑。一旦你開(kāi)發(fā)了一個(gè)SERVLET,你就可以在 WEBLOGIC.PROPERTIES 中加以注冊并由此可以在WEBLOGIC服務(wù)器中對它進(jìn)行配置。通過(guò)JAVA SERVLETS,我們已經(jīng)到達了J2EE主要技術(shù)的末尾了。但J2EE所提供的并不止于這些。

  下面的段落中我們將簡(jiǎn)要地看一下現存的一些技術(shù),包括RMI, JAVA IDL和CORBA, JTA, 以及XML,等等。

  八、REMOTE METHOD INVOCATION (RMI)

  正如其名字所表示的那樣,RMI協(xié)議是在遠程對象上調用一些方法。它使用了連續序列方式在客戶(hù)端和服務(wù)器端傳遞數據。RMI是一種被EJB使用的更下層的協(xié)議。

  九、JAVA IDL/CORBA

  在JAVA IDL的支持下,開(kāi)發(fā)人員可以將JAVA和CORBA集成在一起。 他們可以創(chuàng )建JAVA對象并使之可在CORBA ORB中展開(kāi), 或者他們還可以創(chuàng )建JAVA類(lèi)并作為和其它ORB一起展開(kāi)的CORBA對象的客戶(hù)。后一種方法提供了另外一種途徑,通過(guò)它JAVA可以被用于將你的新的應 用和LEGACY系統相集成。

  十、JAVA TRANSACTION ARCHITECTURE (JTA)/JAVA TRANSACTION SERVICE (JTS)

  JTA定義了一種標準的API,應用系統由此可以存取各種事務(wù)監控。

  JTS是CORBA OTS事務(wù)監控的基本實(shí)現。JTS規定了事務(wù)管理器的實(shí)現方式。該事務(wù)管理器是在高層支持JAVA TRANSACTION API (JTA)規范,并且在較底層實(shí)現OMG OTS SPECIFICATION的JAVA映像。JTS事務(wù)管理器為應用服務(wù)器、資源管理器、獨立的應用以及通信資源管理器提供了事務(wù)服務(wù)。

  十一、JAVA MAIL AND JAVA BEANS ACTIVATION FRAMEWORK

  JAVA MAIL是用于存取郵件服務(wù)器的API,它提供了一套郵件服務(wù)器的抽象類(lèi)。不僅支持SMTP服務(wù)器,也支持IMAP服務(wù)器JAVA MAIL利用JAVA BEANS ACTIVATION FRAMEWORK (JAF)來(lái)處理MIME-編碼的郵件附件。MIME的字節流可以被轉換成JAVA對象,或者轉換自JAVA對象。由此大多數應用都可以不需要直接使用JAF。

  十二、JAVA MESSAGING SERVICE (JMS)

  JMS是用于和面向消息的中間件相互通信的應用程序接口(API)。它既支持點(diǎn)對點(diǎn)的域,又支持發(fā)布/訂閱(PUBLISH/SUBSCRIBE)類(lèi)型的域,并且提供對下列類(lèi)型的支持:經(jīng)認可的消息傳遞、事務(wù)型消息的傳遞、一致性消息和具有持久性的訂閱者支持。JMS還提供了另一種方式來(lái)對您的應用與LEGACY BACKEND系統相集成。

  十三、EXTENSIBLE MARKUP LANGUAGE (XML)

  XML是一種可以用來(lái)定義其它標記語(yǔ)言的語(yǔ)言。它被用來(lái)在不同的商務(wù)過(guò)程中共享數據。XML的發(fā)展和JAVA是相互獨立的,但是,它和JAVA具有的相同目標正是平臺的獨立性。通過(guò)將JAVA和XML的組合,您可以得到一個(gè)完美的具有平臺的獨立性的解決方案。目前正有許多不同的公司在為JAVA和XML的組合而努力。如果要了解更多的這方面的信息,可以訪(fǎng)問(wèn)SUN的JAVA-XML頁(yè)面,或者IBM DEVELOPERWORKS的XML ZONE。

【J2EE的13種核心技術(shù)】相關(guān)文章:

J2EE核心技術(shù)03-09

什么是J2EE03-16

j2ee介紹03-20

J2EE的概念03-19

電腦速記的核心技術(shù)是什么01-13

J2EE發(fā)展狀況03-19

J2EE的基本術(shù)語(yǔ)03-16

J2EE基礎概念03-30

J2EE發(fā)展背景03-19

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频