ssh框架整合步骤讲解_第1页
ssh框架整合步骤讲解_第2页
ssh框架整合步骤讲解_第3页
ssh框架整合步骤讲解_第4页
ssh框架整合步骤讲解_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于MyEclipse6.5的SSH整合hespermoon2008-7-181. 编写目的最近在学习Struts1.2+Spring2.5+Hibernate3.2整合,这期间出现了很多问题, 在网上找了若干的实例均有不同程度的问题,为了让想要学习这个整合的人少走弯路,特写下这篇文章,希望对大家有所帮助,如果有很么问题可以与我联系, Email: zhaohuawei2. 实验环境MyEclipse6.5Tomcat5.5.26MySQL5.0数据库脚本程序CREATE TABLE user (id in t(11) NOT NULL auto_i ncreme nt,user name v

2、archar(50) default NULL,password varchar(50) default NULL,PRIMARY KEY (id);INSERT INTO user VALUES ('1', 'admi n', 'admi n');环境的搭建这里就不写了,估计大家应该很熟悉,不会的可以上网看一下, 有很多这样的资料。3. &!让我们开始创建工程打开MyEclipse,需要注意的是这里应该处于 MyEclipse Java Enterprise视图; 新建一个 Web Project,输入适当的工程名字,这里我们输入 ss

3、h,Finish即可。介 Mew Web ProiectCreate a Web Project匚reals a web project n the workspace or ar external location|C| x|Web Project DetailsProject Narne:Lacation:Directory!Source folder:(WebRoot,'/eb toot Folder:Context root URL: |/sshJ2EE Spec tfi ration Level& Java EE 5.0 广 J2EE 1.4 广 XEE 1.3Add

4、 Maven supportLENm nnorE必diM 包,-J5TL Supportr Add J5TL liberies to weejf讦砒 foUcr?J5TL I Xi r J5TL1J越k險卅|FinishCurved确定之后MyEclipse会生成名为SSH的项目,其中生成的目录结构如下所示:匕&論:“凸 STC由 K JRE System Library MyEdcse S.5田 諭 Java EE 5 Librariesrl 匸 WebRMtl£:-VVEE-INFlib虫雌h艾讯;/ ndex.jsp4.添加Struts1.2 框架支持在ssh工程上面右

5、击,在弹出 的菜单中选择 MyEclipse -> Add StrutsCap abilities,添加 Struts 的支持。NewGo IntoOpn in New WindowOpen Type HierarchyF45halnftlH5hift+W QppvCtrl+C Copy Qualri&d匚 trl+VX deleteDeleteBuild PathSourceAlt45hft+3卜RefactorAlt+SHft+II Import.,:Export.:'ReFreihF5Close ProjectAssign Working Sets,Run AsDe

6、bug AsProfile XTeamCQiripare WithkRestore frcirri Local History 1Open in ExplorerAdd aivl R&move Project Dsploynfients.ATd 活Flru Web Service 匚apabihi, iAdd Tapestry Capabilities.Add StrutsCapatrlitef.Add Spring Capabilities.Add JSR 168 Pcrtlet CopabiltiBs.Add JPA Capabilities.ATd J5F 匚沖日 bilig”A

7、dd J5TL Libraries,.AiddHibernate Capabilities.Run DocletRun VdidationExclude From ValidatioriManage Validation.Remove Ml 馬lid占上ion Mafkeys在弹出的对话框中选择 Struts 1.2,修改Base package for new classes成所需的包名,其余保持原状,Fi nish即可护 Add Struts CapabilitiesStruts Support 1or MyEclipse Web ProjectEnable project for Str

8、uts developmentWet) project:ashWeb-root folde r:/WebRaotServlet specifkbon: 2.5StriJts ccrnFig path:Struts specification:ActicnServlet narne-URL pattern/WEB-INF/stiuts-con Fig, xmlStruts 1.1 恪 Struts 1.2 广 Struts i,3faction< *,do 广 Jdo/*Basi? package for newDefeufc apphcdtiocresources:Icom-sshJst

9、riJts完成后的结构为:CQrn.ssh.striis Qppli 匚曰 ti onResoLirces两 Install Struts TIDsFinish I Canedtl :乡对、:戌;arc1+ fT. comrssh.struts3 &:lRE System Ltrary MyEclipse G.5 +1-冃 Ja旳 EE 5 tibmries 3 m Struts 1”2 Libraries 二i h VfetRootli -. -.- PTETA-INF F i2? WEB4NF lib strut5-beonPtld strutsconfig.Dcrhl strut

10、 c-html.tH strut-logic. tld struts-nested,tld struts-tile.tld validator-rul 65. snil web.xnnlj- Index, jep5.添加Spring2.0框架支持在ssh工程上面右击,在弹出的菜单中选择Cap abilities,添加 Spring 框架支持MyEclipse -> Add Spring?NewQq Into4Open in New WindowOpen Type Hierarchy5Itow InF4A|;+-5hiFt4-W卜l£opyStrH-C.Copy QudiFled

11、Ctrl+V翼 DeleteDeletegijld Path>S&urceAlt+Shift+5ft eFactorAft-bShiFt+T*诂Import二:ExporL.(." RefreshF5<lcse ProjectAssign Yarkirg 5ets.,.Run Ac>ebufl AsProFile AsTeam卜匚 ompara WithRestore Frcm LotaE Ustcr.-MyEdipseJOpe-n h ExplfirerAdd and Reinove Project Deployments.Add XFire Web Se

12、rvice Cepabriities. 风dd Tapestry Capabilities.Add Spring Capabilities.Add J5R168 Portlet Capyablities.Add JPA Capabilities.Add J5F CapabllitiesHAdd J5TL Libraries “Add Hibern3t& 匚epbifitiei.iRun XDocletRun ValidationExclude From VafcdatioriManage afedation.KemQve 41 Y 国 iduWri Markers由于Spring采取最

13、小化库发布的方式,使得Spring的库文件彼此都是分离的, 因而我们需要自己选择需要的库,需要引用的如下图:13 Spring 2.S AOP Ljbraries Eclipse-LifersSpring 2.S Core Librri&i - < My Eclipse-Library? Spring ?.5 Per5istence Core Libraries - <MyEdipse-Library>0 Spring Persistence JDBC Libraries - <nyEdip5e-Library>l| 沖ringPersian»

14、JDQLibrdri <MyEclip&e-L1brary>ll Spring 2*S Persistence IBATIS Libraries - <MyEclipse-Library >ll Spring 2,5 J2EE Libraries - <MyFclipsft-Library>口 Spring 2.S fteflhotin Libraries - <NyEclipse-Libr3r/>口 Spring 2.5 Wise Libraries - <MyEclip5e-Librar/>-回 Spring 2*5 Te

15、sting Support Libraries - <MyEclose-Library>0 Spring 2+5 Web Libraries <MyEclipse-Libr3ry> Spring Webflow 1.0 Core ' <MyEclip-Ltorry> Spring JaaConfiq 1.0 Core - <MyEdipee-Library>HI 7opilink. Essenhals - <M/Eclip5e-Ubrary >口 OpenJPA -Eclipse-Library >I Hibernate

16、 3 Core Libraries - cMyEclipsie-Library>匚I HibernateAnriXation* & Entity Pnger - <Mytdpf-Librdryll Hiberrwte 3.? Aiivanced Support Libraries - <MyEcJipsa'Libcry>选择好后Next,在窗口中选择Browse,选择ssh工程下面的WEB-INF文件夹,然后Finsho6. 配置数据源在MyEclipse右上角选择 MyEclipse Database Explorer打开数据库管理视图。FfyE cl

17、 ips aEn1pr 15->&|SWf Repo si 七QFy Esploiriiig卞 MyEclipia UML隹* | MyE clijxi ? Ribtrnat在左侧的DB Browser点击右键,选择 New,打开Database Driver对话框。丘 DB BrowserJ J3 gj 日-3MyEclipse Derby3mi kii riaiinmMiiianii irvini bh r,J Neifj.,> itrnpcrt,.,lJi Export,.*_厶在Database Driver对话框中按照如下配置选择数据库驱动。首先选择DriverT

18、emplate,在这里我们选择 MySQL Driver Name是以后配置时使用的驱动名字, 用以区分驱动,这里使用 MySQL即可。然后根据实际情况填写 URL User name 和Password点击Add JARs添加数据库驱动文件。为方便配置,可以选择Savepassword保存密码。配置完毕后Finish即可。7. Spring 与 Hibernate 的整合当配置完数据源后,就可以添加 Hibernate支持了。切换到MyEclipse JavaEnterprise视图,在ssh工程上面右击,在弹出的菜单中选择MyEclipse -> AddHibernate Cap a

19、bilities,添加 Hibernate 的支持。guild PathSourceAfc+ShtFtl-5Refa<orAlt+SFrft+r肛,Irpport.A. Export.霞A RefreshFECloe FrojectAecigri Woflijng Sets.Run AsLebufl AsProfile 常TeamCompare WithRestore from Local Hstor.Open in ExplorerAdd and Remove Froje 匚 t Deploy men Is.Add KF ire Web Service 匚那ab祉i辭., Add Ta

20、pestry Capabilities.AddPtirHet CapabiLties.切d5|?北備旳Add J5F Capabilities.Add JSTL Libraries.Add Hibernate CspabiBtiw. *MyEdip seRun C*QdetRun ViafichtnnExclude From V却iddtionMenage Valrdatisr.R emoYE All Validation flarkers我们选择Hibemate3.2,全部按照默认设置即可,然后点击Next;在对话框中选择Spring con figuration file,表示我们希望将

21、Hibernate托管给Spring进行管理,这是将Hibernate与Spring进行整合的基础。然后点击 Next;在出现的对话框中选择 Exist ing Spring con figuration file因为我们已经添加了Spring的配置文件,所以这里选择的是已存在的配置文件。MyEclipse会自动找到存在的那个文件。然后在 SessionFactory ID中输入Hibernate的SessionFactory 在Spring配置文件中的Bean ID的名字,这里我们输入 sessionFactory即可。然 后点击Next;口 xii-5iT_ /CnelAdd Hibern

22、ate 匚apabilrtiesHibernate ConfigurationDehne Spring-Hibernate configurationSpring configuration Fite to be used by MyEclipse Hibernate Tools:厂 Mew Spring configuration fie(* Existing Spring configur日tion fileSpring Cori阿:|谢亦艮0测¥吕刚冃旳口此酣口此0(11:锁匕咖1刃Spring-Hitiernate Configiiration 5upport牢心 Nd Hi

23、bernate SessionFactory found in this 5pring configuration file defined above. =*Enter the Spring 5essionFactQiry Bean Id to be created and used by MyEclipse 5pring-Hit>ernate Tools. Then press !lNext" to specify the DataSource connection detais:SesslonFactory Id: |sessionF.actory在出现的对话框中的Bea

24、n Id里面输入数据源在Spring中的Bean ID的名字, 这里我们输入dataSourca然后在DB Driver里面选择我们刚刚配置好的ssh, MyEclipse会将其余的信息自动填写到表格里面。然后点击Next;在出现的对话框中取消 Create SessionFactory class点击Finish即可。此时MyEclipse会自动打开Spring的配置文件,文件内容为:<Defidl3xislnB-卄ht tp : / /wjjn spx: ingf r araework org/ schextia/i: eans 秤xnlng :K3L-rrhttp: / / wu&

25、#165; 酋J .org/2 0L l/ilHLScJier®- LiLSCaiLC®1*xs i : schemaL eat ion= kt p : / wiffw - spc znugf razneiwork orc-/ Bcheana/besuns ht-1p : / / urau a spr ing'i<bean id=f, datiaS d urc e "clsfc3s=l?irorg» apache . onwons. dJocpBssicrDaiCiaSc ucce rr><j3rapertv nane-ffdr

26、iverClassNareprva 1 ue-McEtyaq 1 + jcUac. Driverrr></propertyUp藍op亡吩匕丁 nane-"iLAi:Lff value*MjdJbc:;/ 127. 0» Q 1: 33QG/tsst p>-t/poperty> <DroDert7 nane icisernanerp ¥匕丄iie-,prciODF></troperc;y>pL-upct t y liHXae- "i-adifl 口瓷 d* YsliJie-w£QQE» R

27、></ g Luyea_ Ly>弋丿上ean>vIjecici 丄dssxuilFslC t l y wclE3-Ffor(3. sprincf r arre no rk, orirt T hiber nac.e3 ». Locg ISess ionF act. orvBeenB|,<Cpnoper t y nmie- "datraSo aecc *>Tf=f tiean=dstSouTce?f />c/projperty<pmp-Firr y nB.nR= ffkihsmat aPtcppr t ies pp>tflE

28、OpSprnp rpy=,hihPrTi.T 戶 di fjJ ect:org.Liflernate.diaiecx.KySQLDiaiect$/pop></pirop3><7propertV></teanX/toeaas>此时,切换到MyEclipse DataBase Explore视图,右键打开数据库连接,在需要使用的数据表格上面点击右键,选择Hibernate Reverse Engineering.。.这里我们使用刚刚建立在test数据库中添加的user表。亠(J ech-,.Connected to 站rh 2 infcmationchte

29、ma + 百 bank El吕nn卢dFl 占 ttet± H LOCAL TEMPORARY _ Is TABLEit Fl JETI*'匡 VIEW E-肚 PROCEC 阡 B FUMCTK * H IRIGGEfiusei&-910-11121314讣_辰.Mew TableMewi For&igri Ke/Ftewf Index丁 Edit DataX Drop "bfeX Delete A| RowsRefresh (Generate陆Reverse Erigineertn口,,(a EJB3 R.ftversftErineerlng,.

30、Hibernate Reverse EnqiDeering.在打开的对话框中修改Java src folder为我们建立的/ssh/src,这里需要选择到src文件夹,并且需要填写Java package这是MyEclipse生成的类所在的包, 我们将其取名为user。然后选择Java Data Object建立POJC类。然后选择Java Data Access Object其中,POJO类是数据库表格所对应的 Java类,JDO类是MyEclipse 自动生成的对数据库的一些操作。这里会封装一些常用的操作,简化我们的编写。 填写完成后点击Next。在出现的对话框中选择ID Generato

31、r为native,然后点击Finish即可-jnljdRev-enq settings Fie;Type Rapping:Id Generator:1Setup. ! FBrcwsie.H.Java typesf' Hibernate typesCuBom rev-ng 乳 w缶勺卅疋 Hibernate Reverse EngineeringHibernate Mapping Qnd Application (venerationConfigure type mapping detais'Generate basic typed ccm:'O<ite Id;Ge

32、nerate version dnd timestamp tags 厂 Enable many-to-many detectionCustomised Type Mappirtgs:期d|Remove皿IpQwn I< BackNext AFinishCancel此时ssh项目的目录结构如下所示。其中的User.Java是MyEclipse生成的使用面向对象的Java语言对数据库表格进行的抽象,User.hbm.xml是将数据库表格 中的字段和POJO类的属性进行映射的定义,UserDAO.java封装了一些MyEclipse 自动生成的对数据库的操作。自侔毗:E5 com.ssh.st

33、ruts自”田 comsh .user国国 User.java出 於 UeerlMO.javaUser.hbtri.saril这时我们修改一下文件目录,使之更好的组织。我们建立一个 dao包,将DAO类与POJO类分开。然后我们在struts包下面建立action和form包,用来管 理Struts的Action和Form。为了将实现与接口进行解耦,我们建议在dao包下面添加接口,然后建立dao.impl包,将实际的DAO类放在这里。DAO类是直接 与数据库打交道的类,为了对业务逻辑进行封装,我们将业务全部写在service类里面,和dao 一样,我们先建立service包,里面添加业务接口,

34、具体的实现 放在 service.impl 里面。将 UserDAO.java移动到 dao 的impl包下面,并在dao包下建立接口 lUserDAO, 内容为:package com.ssh.dao;import java.util.List;import com.ssh.user.User;publicin terfaceIUserDAO public User fin dByld(l nteger id);public List fin dByUser name(Object user name);public void save(User user);在 service 中建立接口

35、IUserService.java 在 service 中 impl 中建立UserService.javaIUserService.javapackagecom.ssh.service;importcom.ssh.user.User;publicin terfaceIUserService publicUser getUserByld(l nteger id);publicUser getUserByUser name(Stri ng user name);publicvoid addUser(User user);UserService.javapackage com.ssh.servic

36、e.impl;import java.util.List;import com.ssh.da o.IU serDAO;import com.ssh.service .IU serService;import com.ssh.user.User;public class UserService impleme nts IUserService private IUserDAO userDAO ;public void addUser(User user) userDAO .save(user);public User getUserByld(l nteger id) return userDAO

37、 .findById(id);publicUser getUserByUser name(Stri ng user name) List list =userDAO.findByUsername(username);if (list.size() = 0) return n ull ; else return (User) list.get(0);public IUserDAO getUserDAO() return userDAO ;public void setUserDAO(IUserDAO userDAO) this . userDAO = userDAO;此时的整体工程结构为:-:N

38、 connrssh.claQ自1 LUserDAC.ja/aE- com.shideojmpl 由 |jE UserDAO,javaB- Jj com.ssh.service ±1- U. ILlserSErvice.javjF-汨 com-ssh.service.inpl+ ;z3 UserService.javaE -festrutsS Applies ticnReourcx 3. properti C5B-哥 comr«h.userE' J Ueef.ja7' User,hbnn,xml闰亘JRE System Lfcrary MyEdipse 6,E

39、田 & I Jav EE S Libraries +1 B-i Struts l.Z Libraries3 B. Spring Z.5 Core Libraries ±1 ft>, Spring 2.5 AOP Libraries卜 兰 Spring 2,5 Persistence Core Libraries3 Spring 2S Persistence JDBC Libraries±1 级 Spring 2.5 Web Libraries申 & - Spring 2.5 Testing Support LibrariesP R . Hibernat

40、e 3.2 Annotations Entit/Manager ®' Bh Hibernate 3.2 Core Libraries+1 Referenced Libraries 由 g? WetRoot此时的applicationContext内容需要配置bean内容为:<bean id ="UserDAO" class ="com.ssh.dao.impl.UserDAO">vpropertyn ame="sessi onF actory"><refbea n ="sessi o

41、nF actory"/></ property ></ bean >8. 整合 Struts 和 SpringStruts和Spring整合方式其核心是让Struts能够访问到交给Spring进行托管 的类,这个我在网上看到了一个方式,自我认为很好,因此只要我们可以让Struts 从Spring获得需要的类就可以了。为了达到这个目标,我们创建一个类BaseAction :package com.ssh.struts.act ion;import org.spri ngframework.web.c on text.WebApplicatio nCon t

42、ext;import org.spri ngframework.web.c on text.support.WebApplicatio nCon textUtils;import org.spri ngframework.web.struts.Act ion Support;public class BaseAct ion exte nds Action Support protected Object getBea n( Stri ng id) WebApplicatio nCo ntext ctx = WebApplicatio nCon textUtils.getWebApplicati

43、 onCon text(this.servlet.getServletC on text();retur n ctx.getBea n(id);为了让Web容器能够初始化Spring,我们需要修改web.xml文件,增加以下 内容:<con text-param><param-n ame>c on textC on figLocati on</param-n ame><param-value>/WEB-INF/applicati onCon text.xml</param-value></con text-param>&l

44、t;servlet><servlet-n ame>Spri ngCon textServlet</servlet-name<servlet-class>org.spri ngframework.web.c on text.C on textLoaderServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>9. 啊,让看看我们工作是否有效通过上面的配置,我们已经能够让这三个框架来协同作战了,让我们现在来 测试一下。首先创建基于 S

45、truts的JSP页面。打开 WEB-INF下面的struts-config.xml,单在弹出的对话框中添加 User case然后点击Add生成Properties代码。这会由MyEclipse自动生成相应的Form代码。输入完成后选择JSP选项卡,选上CreateJSP form修改路径,然后点击 Next。Config/Module: |/ssh/WebRoot/WEB-INF/struts-config. xmlBrowse. Use case:|logmName;|loginFormForm Impl; Q New FormBean & Existing FormBean D

46、ynamic FormBSuperclass:Form type:|<default>|com.ssh.struts.form 丄 o g inFormoptional Details亶世。噫舸| Methods | JSPProperties;username - java.lang.String <html:text/> password java.lang.String <html;password/>Add|EditRemove |在出现的对话框中修改Path,将Superclass更改为前面定义的BaseAction,然后将In put Sourc

47、e修改为自己需要的路径。完成后 Fi nish即可。然后在struts-config.xml点击右键,选择 New -> Forward,准备创建一个Actio nFo rward。.拒如噸仲:mginjFrimmpath; /bgintype2 匚nm sth. actibftaLag nAiton4_np<jtj_f loan isci rl jkrjn jspijpda*区u如匚 pyriorr As JPEG.ActionFo! ni> Action end J5F FcrwrdP Da.ajjur_c在弹出的对话框中,选择Local Action Forward通过

48、Browser填写Action Path, 然后填写Name和Path,完成后点击Finish即可。publicActionFo rward execute(Acti on Mapp ing mapp ing. Actio nF orm form,HttpServletRequest request, HttpServletResp onse resp on se) Log inForm logi nForm = (Log inForm) form;Stri ng user name = logi nF orm.getUsername();在LoginAction中添加如下代码Stri ng

49、password = logi nF orm.getPassword();ActionFo rward forward = mapp in g.get In putForward(););IUserService service = (IUserService) getBea n("userService"User userFromDB = service.getUserByUsername(username);if (userFromDB.getPassword().equals(password) forward = mapping.findForward("

50、suc");return forward;login.jsp 内容<%pageIan guage ="java"pageE ncoding ="ISO-8859-1"%><%tagliburi ="/tags-bea n"prefix="bean" %><%tagliburi ="/tags-html"prefix="html" %><

51、;html ><head><title >JSP for LoginForm form</ title ></ head ><body ><html:formactio n ="/logi n">password :<html:password property ="password" />< html:errorsproperty="password"/>< br />user name :<html:text p

52、roperty="user name" />< html:errorsproperty="username" />< br /><html:submit />< html:cancel/></ html:form ></ body ></ html >Ok,这时我们可以启动Tomcat进行查看页面了10. 黎明前的黑暗上面的工作完成以后理论上应该可用,但是当你运行的事后却发现会有一个非常诡异的异常出现HTTP Status 500 -Ihse tiutmI The1

53、 menial EiriiZQjnlurMi ji F1:曰门北erjo 行 thmt 口 佢与廿生日 t 慣 ip ju fling this 芒口申匸org. dpr incf chdti± u_>r .- x口壬丫 . Budh£1 s=iLiQn.Exci=!p匸dcia Eer£ CEHr lt»g Ln=:di ulth iirdii 8 s吕呂耳,口和li匸u,3PL Lrjutr niiri.ioiLkBhTtt"3 .i/.sumiu匚b AIjsl 12accAucuw 1 ieFapfli.iLtBtar.r?ctu

54、i. InlLLalltUE-crpc IngCr «nry oc k brama . f act di y -ue L JJjs tcaLtA ubo vi rrCnii IcDt nr>r 曰昭 ter i'. do-Cr ra teu EQ 3 PE L O£ I aLiieV g k. bzlia k i auLDI VO 匚 L Abd LEadA UGQ VilCapcdb lDJ.raU U3Z y $ 1 . LUi IjisvahffcduhAccc»Cq 1 Lcr >dsPzivi leged (Nat ivc Kcthe

55、d)q c g»2 pr i neff r ancvok: k« b e a:ia . f *act ory p aupp > Abstract Au&o vi rcC cip ob Lc Be ctnr c:g rv > c a&c Be ail QegBspr iRgfr affneworkbeaM factory扫uppers ijaatractBeaiiFactory?«get Ot j (Aotr sctBeanF ocg- spr l口g±r atYievork.beans . fazt 口ry, support De&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论