仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1565|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网站制作之J2EE的13种中心手艺简介仓酷云

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:34:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。Java最后是在扫瞄器和客户端呆板中袍笏登场的。事先,良多人质疑它是不是合适做服务器真个开辟。如今,跟着对Java2平台企业版(J2EE)第三方撑持的增加,Java被普遍回收为开辟企业级服务器端办理计划的首选平台之一。
J2EE平台由一整套服务(Services)、使用程序接口(APIs)和协定组成,它对开辟基于Web的多层使用供应了功效撑持。在本文中将注释支持J2EE的13种中心手艺:JDBC,JNDI,EJBs,RMI,JSP,Javaservlets,XML,JMS,JavaIDL,JTS,JTA,JavaMail和JAF,同时还将形貌在什么时候、那边必要利用这些手艺。固然,我还要先容这些分歧的手艺之间是怎样交互的。别的,为了让您更好地感觉J2EE的实在使用,将在WebLogic使用服务器,来自BEASystems公司的一种广为使用的产物情况上去先容这些手艺。不管关于WebLogic使用服务器和J2EE的老手,仍是那些想懂得J2EE能带来甚么优点的项目办理者和体系剖析员,信任本文必定很有参考代价。
微观印象:散布式布局和J2EE
已往,二层化使用--一般被称为client/server使用--是人人议论的最多的。在良多情形下,服务器供应的唯一服务就是数据库服务。在这类办理计划中,客户端程序卖力数据会见、完成营业逻辑、用符合的款式显现了局、弹出预设的用户界面、承受用户输出等。client/server布局一般在第一次部署的时分对照简单,但难于晋级或改善,并且常常基于某种专有的协定,一般是某种数据库协定。它使得重用营业逻辑和界面逻辑十分坚苦。更主要的是,在Web时期,二层化使用一般不克不及表现出很好的伸缩性,因此很难顺应Internet的请求。
Sun计划J2EE的部分原因就是想办理二层化布局的缺点。因而,J2EE界说了一套尺度来简化N层企业级使用的开辟。它界说了一套尺度化的组件,并为这些组件供应了完全的服务。J2EE还主动为使用程序处置了良多完成细节,如平安、多线程等。
用J2EE开辟N层使用包含将二层化布局中的分歧层面切分红很多层。一个N层化使用A可以为以下的每种服务供应一个分隔的层:
显现:在一个典范的Web使用中,客户端呆板上运转的扫瞄器卖力完成用户界面。
静态天生显现:只管扫瞄器能够完成某些静态内容显现,但为了兼容分歧的扫瞄器,这些静态天生事情应当放在Web服务器端举行,利用JSP、Servlets,大概XML(可扩大标志言语)和(可扩大款式表言语)。
营业逻辑:营业逻辑合适用SessionEJBs(前面将先容)来完成。
数据会见:数据会见合适用EntityEJBs(前面将先容)和JDBC来完成。
背景体系集成:同背景体系的集成大概必要用到很多分歧的手艺,至于何种最好必要依据背景体系的特性而定。
您大概入手下手惊奇:为何有这么多的层?现实上,多层体例可使企业级使用具有很强的伸缩性,它同意每层专注于特定的脚色。比方,让Web服务器卖力供应页面,使用服务器处置使用逻辑,而数据库服务器供应数据库服务。
因为J2EE创建在Java2平台尺度版(J2SE)的基本上,以是具有了J2SE的一切长处和功效。包含“编写一次,各处可用”的可移植性、经由过程JDBC会见数据库、同原有企业资本举行交互的CORBA手艺,和一个经由考证的平安模子。在这些基本上,J2EE又增添了对EJB(企业级Java组件)、Javaservlets、Java服务器页面(JSPs)和XML手艺的撑持。
散布式布局与WebLogic使用服务器
J2EE供应了一个框架--一套尺度API--用于开辟散布式布局的使用,这个框架的实践完成留给了第三方厂商。部分厂商只是专注于全部J2EE架构中的的特定组件,比方Apache的Tomcat供应了对JSP和servlets的撑持,BEA体系公司则经由过程其WebLogic使用服务器产物为全部J2EE标准供应了一个较为完全的完成。
WebLogic服务器已使创建和部署伸缩性较好的散布式使用的历程年夜为简化。WebLogic和J2EE代你处置了大批惯例的编程义务,包含供应事件服务、平安范畴、牢靠的动静、名字和目次服务、数据库会见和毗连池、线程池、负载均衡和容错处置等。
经由过程以一种尺度、易用的体例供应这些大众服务,象WebLogic服务器如许的产物作育了具有更好伸缩性和可保护性的使用体系,使其为大批的用户供应了增加的可用性。
J2EE手艺
在接上去的部分里,我们将形貌组成J2EE的各类手艺,而且懂得WebLogic服务器是怎样在一个散布式使用中对它们举行撑持的。最经常使用的J2EE手艺应当是JDBC、JNDI、EJB、JSP和servlets,对这些我们将作更细心的考查。
JavaDatabaseConnectivity(JDBC)
JDBCAPI以一种一致的体例来对林林总总的数据库举行存取。和ODBC一样,JDBC为开辟职员埋没了分歧数据库的分歧特征。别的,因为JDBC创建在Java的基本上,因而还供应了数据库存取的平台自力性。
JDBC界说了4种分歧的驱动程序,现分述以下:
范例1:JDBC-ODBCBridge
在JDBC呈现的早期,JDBC-ODBC桥明显长短常有有用意义的,经由过程JDBC-ODBC桥,开辟职员可使用JDBC来存取ODBC数据源。不敷的是,他必要在客户端安装ODBC驱动程序,换句话说,必需安装MicrosoftWindows的某个版本。利用这一范例你必要就义JDBC的平台自力性。别的,ODBC驱动程序还必要具有客户真个把持权限。
范例2:JDBC-nativedriverbridge
JDBC当地驱动程序桥供应了一种JDBC接口,它创建在当地数据库驱动程序的顶层,而不必要利用ODBC。JDBC驱动程序将对数据库的API从尺度的JDBC挪用转换为当地挪用。利用此范例必要就义JDBC的平台自力性,还请求在客户端安装一些当地代码。
范例3:JDBC-networkbridge
JDBC收集桥驱动程序不再必要客户端数据库驱动程序。它利用收集上的两头服务器来存取数据库。这类使用使得以下手艺的完成有了大概,这些手艺包含负载平衡、毗连缓冲池和数据缓存等。因为第3品种型常常只必要绝对更少的下载工夫,具有平台自力性,并且不必要在客户端安装并获得把持权,以是很合适于Internet上的使用。
范例4:PureJavadriver
第4品种型经由过程利用一个纯Java数据库驱动程序来实行数据库的间接会见。此范例实践上在客户端完成了2层布局。要在N-层布局中使用,一个更好的做法是编写一个EJB,让它包括存代替码并供应一个对客户端具无数据库自力性的服务。
WebLogic服务器为一些一般的数据库供应了JDBC驱动程序,包含Oracle,Sybase,MicrosoftSQLServer和Informix。它也带有一种JDBC驱动程序用于Cloudscape,这是一种纯Java的DBMS,WebLogic服务器中带有该数据库的评价版本。
以下让我们看一个JDBC实例:在这个例子中我们假定你已在Cloudscape中创建了一个PhoneBook数据库,而且包括一个表,名为CONTACT_TABLE,它带有2个字段:NAME和PHONE。入手下手的时分先装载CloudscapeJDBCdriver,并哀求drivermanager失掉一个对PhoneBookCloudscape数据库的毗连。经由过程这连续接,我们能够机关一个Statement对象并用它来实行一个复杂的SQL查询。最初,用轮回来遍历了局集的一切数据,并用尺度输入将NAME和PHONE字段的内容举行输入。
  1. importjava.sql.*;publicclassJDBCExample{ publicstaticvoidmain(Stringargs[]) {try{ Class.forName("COM.cloudscape.core.JDBCDriver"); Connectionconn=DriverManager.getConnection("jdbc:cloudscape:PhoneBook"); Statementstmt=conn.createStatement(); Stringsql="SELECTname,phoneFROMCONTACT_TABLEORDERBYname"; ResultSetresultSet=stmt.executeQuery(sql); Stringname; Stringphone; while(resultSet.next()) {name=resultSet.getString(1).trim();phone=resultSet.getString(2).trim();System.out.println(name+","+phone); }catch(Exceptione) {//Handleexceptionheree.printStackTrace(); }} }
复制代码
OK。接着来看一看JDBC是怎样在企业使用中的举行利用。


JDBC在企业级使用中的使用。以上实例实际上是很基础的,大概有些微乎其微。它假定了一个2层布局。在一个多层的企业级使用中,更年夜的多是在客户端和一个EJB举行通讯,该EJB将创建数据库毗连。为了完成和改善可伸缩性和体系功能,WebLogic服务器供应了对毗连缓冲池connectionpool的撑持。
Connectionpool削减了创建和开释数据库毗连的损耗。在体系启动今后便可创建如许的缓冲池,今后仍旧再有对数据库的哀求,WebLogic服务器能够很复杂地从缓冲池中掏出数据。数据缓冲池能够在WebLogic服务器的weblogic.properties文件中举行界说。
在企业级使用的另外一个罕见的数据库特征是事件处置。事件是一组声名statement,它们必需做为统一个statement来处置以包管数据完全性。缺省情形下JDBC利用auto-commit事件形式。这能够经由过程利用Connection类的setAutoCommit()办法来完成。如今已对JDBC有了一些熟悉,上面该转向JNDI了。
JavaNamingandDirectoryInterface(JNDI)
JNDIAPI被用于实行名字和目次服务。它供应了分歧的模子来存取和操纵企业级的资本如DNS和LDAP,当地文件体系,后者在使用服务器中的对象。在JNDI中,在目次布局中的每个结点称为context。每个JNDI名字都是相对context的。这里没有相对名字的观点存在。对一个使用来讲,它能够经由过程利用InitialContext类来失掉其第一个context:
Contextctx=newInitialContext();

使用能够经由过程这个初始化的context经有这个目次树来定位它所必要的资本或对象。比方,假定你在Weblogic服务器中睁开了一个EJB并将home接口绑定到名字myApp.myEJB,那末该EJB的某个客户在获得一个初始化context今后,能够经由过程以下语句定位home接口:
MyEJBHomehome=ctx.lookup("myApp.myEJB");

在这个例子中,一旦你有了对被哀求对象的参考,EJB的home接口就能够在它下面挪用办法。我们将鄙人面的"EnterpriseJavaBeans"章节中做更多的先容。
以上关于JNDI的会商只是冰山之一角罢了。假如要更进一步地在context中查找对象,JNDI也供应了一些办法来举行以下操纵:将一个对象拔出或绑定到context。这在你睁开一个EJB的时分是很无效的。从context中移往对象。列出context中的一切对象。创立或删除子一级的context。接上去,要入手下手存眷EJB了。
EnterpriseJavaBeans(EJB)
J2EE手艺之以是博得某体普遍器重的缘故原由之一就是EJB。它们供应了一个框架来开辟和实行散布式商务逻辑,由此很明显地简化了具有可伸缩性和高度庞大的企业级使用的开辟。EJB标准界说了EJB组件在什么时候怎样与它们的容器举行交互感化。容器卖力供应公用的服务,比方目次服务、事件办理、平安性、资本缓冲池和容错性。
EJB标准界说了三种基础的bean范例:

Statelesssessionbeans:供应某种单一的服务,不保持任何形态,在服务器妨碍产生时没法持续存在,性命期绝对较短。比方,一个statelesssessionbean大概被用于实行温度转换盘算。

Statefulsessionbean:T供应了与客户真个会话交互,能够存储形态从而代表一个客户。典范例子是购物车。Statefulsessionbean在服务器妨碍时没法持续保存,性命气绝对较短。每个实例只用于一个单个的线程。

Entitybeans:供应了分歧性数据的暗示--一般寄存在数据库中--在服务器妨碍产生后能持续存在。多用户情形下可使用EJB来暗示不异的数据。entityEJB的一个典范例子是客户的帐号信息。
只管有以上的区分,一切的EJB仍是有很多的配合的地方。它们都处置homeinterface。它界说了一个客户端是怎样创立与灭亡EJB的。能够在bean中对界说了客户端办法的远程接口举行挪用;bean类则实行了次要的商务逻辑。形貌EJB的开辟已超越了本文的局限。可是,假如一个EJB已被开辟了大概从第三方举行了购置,它就必需在使用服务器中举行公布。WebLogicServer5.1带有一个EJBDeployerTool来帮忙处置EJB的公布。当你利用EJBDeployerTool的时分,你要界说客户端所用的JNDI名字来定位EJB。DeployerTool将天生wrapper类来处置和容器的通讯和在一个jar文件中把被哀求的Java类绑定在一同。
一旦EJB被公布,客户端就能够利用它的JNDI名字来定位EJB。起首,它必需失掉一个到home接口的reference。然后,客户端可使用该接口,挪用一个create()办法来失掉服务器上运转的某个bean实例的句柄;最初,客户端可使用该句柄在bean中挪用办法。懂得EJB后,让我们再来看JSP。
JavaServerPages(JSPs)
大概已有很多人已熟习Microsoft的ActiveServerPages(ASP)手艺了。JSP和ASP绝对应的,但更具有平台对峙性。他们被计划用以匡助Web内容开辟职员创立静态网页,而且只必要绝对较少的代码。即便Web计划师不明白怎样编程也能够利用JSP,由于JSP使用是很便利的。JSP页面由HTML代码和嵌进个中的Java代码所构成。服务器在页面被客户端所哀求今后对这些Java代码举行处置,然后将天生的HTML页面前往给客户真个扫瞄器。
上面来看一个JSP的复杂实例。它只显现了服务器确当前日期和工夫。固然,对语法的详细注释已超越了本文的局限,但我们仍是能够很直不雅地看到,Java代码被放在标记的两头,而Java的表达式则放在标记之间。
  1. <H1>DateJSPsample</H1><H2> <%response.setHeader("Refresh",5);%> Thecurrentdateis<%=newDate()%>.</H2>
复制代码
上面是:Javaservlets

JavaServlets

Servlet供应的功效年夜多与JSP相似,不外完成的体例分歧。JSP一般是年夜多半HTML代码中嵌进大批的Java代码,而servlets全体由Java写成而且天生HTML。Servlet是一种小型的Java程序,它扩大了Web服务器的功效。作为一种服务器真个使用,当被哀求时入手下手实行,这和CGIPerl剧本很类似。Servlets和CGI剧本的一个很年夜的区分是:每个CGI在入手下手的时分都请求入手下手一个新的历程--而servlets是在servlet引擎中以分别的线程来运转的。因而servlets在可伸缩性上供应了很好的改善。

在开辟servlets的时分,您经常必要扩大javax.servlet.http.HttpServlet类,而且override一些它的办法,个中包含:

service():作为dispatcher来完成命令-界说办法

doGet():处置客户真个HTTPGET哀求。

doPost():举行HTTPPOST操纵
别的的办法还包含处置分歧范例的HTTP哀求--能够参考HttpServletAPI文档。以上形貌的是尺度J2EEServletAPI的各类办法。WebLogic服务器供应了一个该API完全的完成路子。一旦你开辟了一个servlet,你就能够在weblogic.properties中加以注册并由此能够在WebLogic服务器中对它举行设置。
经由过程Javaservlets,我们已抵达了J2EE次要手艺的开端了。但J2EE所供应的其实不止于这些。上面的段落中我们将扼要地看一下现存的一些手艺,包含RMI,JavaIDL和CORBA,JTA,和XML,等等。
RemoteMethodInvocation(RMI)
正如其名字所暗示的那样,RMI协定是在远程对象上挪用一些办法。它利用了一连序列体例在客户端和服务器端传送数据。RMI是一种被EJB利用的更上层的协定。
JavaIDL/CORBA
在JavaIDL的撑持下,开辟职员能够将Java和CORBA集成在一同。他们能够创立Java对象并使之可在CORBAORB中睁开,大概他们还能够创立Java类并作为和别的ORB一同睁开的CORBA对象的客户。后一种办法供应了别的一种路子,经由过程它Java能够被用于将你的新的使用和legacy体系相集成。
JavaTransactionArchitecture(JTA)/JavaTransactionService(JTS)
JTA界说了一种尺度的API,使用体系由此能够存取各类事件监控。JTS是CORBAOTS事件监控的基础的完成。JTS划定了事件办理器的完成体例。该事件办理器是在高层撑持JavaTransactionAPI(JTA)标准,而且在较底层完成OMGOTSspecification的Java映像。JTS事件办理器为使用服务器、资本办理器、自力的使用和通讯资本办理器供应了事件服务。
JavaMailandJavaBeansActivationFramework
JavaMail是用于存取邮件服务器的API,它供应了一套邮件服务器的笼统类。仅撑持SMTP服务器,也撑持IMAP服务器。JavaMail使用JavaBeansActivationFramework(JAF)来处置MIME-编码的邮件附件。MIME的字撙节能够被转换成Java对象,大概转换自Java对象。由此年夜多半使用都能够不必要间接利用JAF。
JavaMessagingService(JMS)
JMS是用于和面向动静的两头件互相通讯的使用程序接口(API)。它既撑持点对点的域,有撑持公布/定阅(publish/subscribe)范例的域,而且供应对以下范例的撑持:经承认的动静传送,事件型动静的传送,分歧性动静和具有耐久性的定阅者撑持。JMS还供应了另外一种体例来对您的使用与legacybackend体系相集成。
ExtensibleMarkupLanguage(XML)
XML是一种能够用来界说别的标志言语的言语。它被用来在分歧的商务过程当中共享数据。XML的开展和Java是互相自力的,可是,它和Java具有的不异方针恰是平台自力性。经由过程将Java和XML的组合,您能够失掉一个完善的具有平台自力性的办理计划。今朝正有很多分歧的公司在为Java和XML的组合而勉力。假如要懂得更多的这方面的信息,能够会见Sun的Java-XML页面,大概IBMdeveloperWorks的XMLZone。

Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发
沙发
发表于 2015-1-21 10:20:23 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
蒙在股里 该用户已被删除
板凳
发表于 2015-1-24 23:53:28 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
飘飘悠悠 该用户已被删除
地板
发表于 2015-1-31 06:48:40 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
分手快乐 该用户已被删除
5#
发表于 2015-2-3 17:50:19 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-4 12:55:50 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
山那边是海 该用户已被删除
7#
发表于 2015-2-6 15:33:46 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
飘灵儿 该用户已被删除
8#
发表于 2015-2-7 05:42:40 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
小魔女 该用户已被删除
9#
发表于 2015-2-9 07:04:28 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
第二个灵魂 该用户已被删除
10#
发表于 2015-2-27 04:00:51 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
透明 该用户已被删除
11#
发表于 2015-3-8 19:30:47 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
因胸联盟 该用户已被删除
12#
发表于 2015-3-14 09:16:24 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
兰色精灵 该用户已被删除
13#
发表于 2015-3-21 01:33:00 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
老尸 该用户已被删除
14#
发表于 2015-3-22 04:07:52 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
若相依 该用户已被删除
15#
发表于 2015-3-22 04:11:20 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
变相怪杰 该用户已被删除
16#
发表于 2015-4-6 13:02:02 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
只想知道 该用户已被删除
17#
发表于 2015-4-6 13:04:27 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
再见西城 该用户已被删除
18#
发表于 2015-4-8 07:10:13 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
不帅 该用户已被删除
19#
发表于 2015-4-11 01:11:26 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
小女巫 该用户已被删除
20#
发表于 2015-4-15 21:01:31 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 16:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表