SpringBoot學(xué)習(xí)資料_第1頁(yè)
SpringBoot學(xué)習(xí)資料_第2頁(yè)
SpringBoot學(xué)習(xí)資料_第3頁(yè)
SpringBoot學(xué)習(xí)資料_第4頁(yè)
SpringBoot學(xué)習(xí)資料_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SpringBoot、 Spring 介紹1.1 、 SpringBoot 簡(jiǎn)介在您第1次接觸和學(xué)習(xí)Spring框架的時(shí)候,是否因?yàn)槠浞彪s的配置而退卻了?在你第 n次使用Spring框 架的時(shí)候,是否覺得一堆反復(fù)黏貼的配置有一些厭煩?那么您就不妨來(lái)試試使用Spring Boot 來(lái)讓你更易上手,更簡(jiǎn)單快捷地構(gòu)建 Spring 應(yīng)用!Spring Boot 讓我們的 Spring 應(yīng)用變的更輕量化。比如:你可以僅僅依靠一個(gè) Java 類來(lái)運(yùn)行一個(gè) Spring 引用。你也可以打包你的應(yīng)用為 jar 并通過(guò)使用 java -jar 來(lái)運(yùn)行你的 Spring Web 應(yīng)用。Spring Boot 的

2、主要優(yōu)點(diǎn): 為所有 Spring 開發(fā)者更快的入門 開箱即用,提供各種默認(rèn)配置來(lái)簡(jiǎn)化項(xiàng)目配置內(nèi)嵌式容器簡(jiǎn)化Web項(xiàng)目沒有冗余代碼生成和XML配置的要求本章主要目標(biāo)完成 Spring Boot 基礎(chǔ)項(xiàng)目的構(gòu)建,并且實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 Http 請(qǐng)求處理,通過(guò)這個(gè)例子對(duì) Spring Boot 有一個(gè)初步的了解,并體驗(yàn)其結(jié)構(gòu)簡(jiǎn)單、開發(fā)快速的特性。1.2 、系統(tǒng)要求:Java 7 及以上本文采用Spring Framework 4.1.5 及以上Java 1.8.0_73 、 Spring Boot 1.3.2 調(diào)試通過(guò)??焖偃腴T名為” springboot-helloworld” 類型為 Jar 工程

3、項(xiàng)目2.1 、創(chuàng)建一個(gè) Maven 工程He¥t Maven praBCConfig Lire project?。?1口M尸1擊AE 心n idECQpV*止OtiVmJurjII卜比gy nfJ-a-nr:Dc-splptio-niPAfC-ni<jrDU口 Id'ld=F AiZuaMKl'” :.tI.2.2、pom文件引入依賴vparent ><groupid >org.springframework.boot vartifactId>sp ring-boot-starter- parentvversion >1.3.3.R

4、ELEASE </ version ></ parent >vdependencies >v! Sp ringBoot web組件->vdependency >vgroupld >org.springframework.boot vartifactId>sp ring-boot-starter-webv/de pendencyv/ de pendencies >v/ groupid >v/ artifactId ></groupId ></ artifactId >sp ring-boot-star

5、ter- parent作用在 pom.xml 中弓I入 spring-boot-start-parent,spring官方的解釋叫什么 stater poms, 它可以提供 dependency management,也就是說(shuō)依賴管理,弓I入以后在申明其它dependency的時(shí)候就不需要version 了,后面可以看到。sp ring-boot-starter-webspringweb 核心組件sp ring-boot-maven-pl ugin如果我們要直接Main啟動(dòng)作用作用spring ,那么以下plugin必須要添加,否則是無(wú)法啟動(dòng)的。如果使用maven的spring-boot:ru

6、n plugin也是直接在Main中運(yùn)行的。)的話是不需要此配置的。(我在測(cè)試的時(shí)候,如果不配置下面的2.3、編寫 HelloWorld 服務(wù)倉(cāng)U建 Package 命名為.itmayiedu.controller 創(chuàng)建Hellocontroller 類,內(nèi)容如下(根據(jù)實(shí)際情況修改)RestCo ntrollerEn ableAutoCo nfigurati on public class HelloController RequestMa ppin g "/hello") public String index() retur n "Hello World&qu

7、ot;Public static void main(Stringargs) SpringAppIication.run (HelloController.class , args );2.4、RestController在上加上RestController表示修飾該 Controller所有的方法返回JSON格式,直接可以編寫Restful 接口2.5、EnableAutoConfiguration注解:作用在于讓Spring Boot根據(jù)應(yīng)用所聲明的依賴來(lái)對(duì)Spring 框架進(jìn)行自動(dòng)配置這個(gè)注解告訴Spring Boot根據(jù)添加的jar依賴猜測(cè)你想如何配 置Spring。由于spring-

8、boot-starter-web添加了 Tomcat 和 Spring MVC,所以 auto-configuration將假定你正在開發(fā)一個(gè)web應(yīng)用并相應(yīng)地對(duì)Spring進(jìn)行設(shè)置。2.6Sp ringA pp lication.run (HelloController.class ,args );標(biāo)識(shí)為啟動(dòng)類2.6.1Sp ringbootA pp lication使用SpringbootApplication注解可以解決根類或者配置類(我自己的說(shuō)法,就是main所在類)頭上注解過(guò)多的問題,一個(gè)SpringbootApplication相當(dāng)于 Configuration,EnableAut

9、oConfiguration和 ponentScan并具有他們的默認(rèn)屬性值Sp ringBootA pp lication/ 等同于 ©Configuration EnableAutoConfiguration ponentScanpublicclass App lication p ublic staticvoid main(String args) Sp ringA pp lication.run(A pp lication.class , args);2.7、SpringBoot 啟動(dòng)方式 1Springboot默認(rèn)端口號(hào)為 8080RestCo ntrollerEn able

10、AutoCo nfigurati onpublic class HelloController RequestMa ppin g "/hello") public String index() retur n "Hello World"publicstatic void main(Stringargs) SpringApplication. run (HelloController.class , args );啟動(dòng)主程序,打開瀏覽器訪問htt p:/localhost:8080/index2.8、SpringBoot 啟動(dòng)方式 2ponentScan(

11、basePackages =".itmayiedu.controller")-控制器掃包范圍ponentScan(basePackages =".itmayiedu.con troller")En ableAutoC on figurati onp ublicclassp ublicApp static void main(Stringargs ) SpingApplication.run(App. class , args );,可以看到頁(yè)面輸出 Hello Worldweb開發(fā)3.1、靜態(tài)資源訪問在我們開發(fā)Web應(yīng)用的時(shí)候,需要引用大量的js、css

12、、圖片等靜態(tài)資源。默認(rèn)配置Spring Boot默認(rèn)提供靜態(tài)資源目錄位置需置于class path下,目錄名需符合如下規(guī)則:/static/p ublic/resources/META-INF/resources舉例:我們可以在 src/main/resources/嘗試訪問 http:/localhost:8080/D.jpg3.2、全局捕獲異常Exce ptionHandler 表示攔截異常ControllerAdviceControllerAdviceControllerAdvice ResponseBody進(jìn)行 json目錄下創(chuàng)建static ,在該位置放置一個(gè)圖片文件。啟動(dòng)程序后,

13、。如能顯示圖片,配置成功。是controller的一個(gè)輔助類,最常用的就是作為全局異常處理的切面類可以指定掃描范圍約定了幾種可行的返回值,如果是直接返回model類的話,需要使用轉(zhuǎn)換o返回String ,表示跳到某個(gè) view返回 modelAndView返回 model + ResponseBodyControllerAdvicepublic class GlobalExceptionHandler ExceptionHandler (RuntimeException. class )Res pon seBodypublic Map<String, Object> excepti

14、onHandler() Map <Stri ng, Object> map= n ewHashMa p<Stri ng, Object>(); mapput( "errorCode" , "101");mapput( "errorMsg","系統(tǒng)錯(cuò)誤!");retur n map3.3、渲染W(wǎng)eb頁(yè)面渲染W(wǎng)eb頁(yè)面在之前的示例中,我們都是通過(guò)RestController來(lái)處理請(qǐng)求,所以返回的內(nèi)容為json對(duì)象。那么如果需要渲染html頁(yè)面的時(shí)候,要如何實(shí)現(xiàn)呢?模板引擎在動(dòng)態(tài)HTML實(shí)現(xiàn)上Sp

15、ring Boot依然可以完美勝任,并且提供了多種模板引擎的默認(rèn)配置支持,所以在推 薦的模板引擎下,我們可以很快的上手開發(fā)動(dòng)態(tài)網(wǎng)站。Sp ring Boot提供了默認(rèn)配置的模板引擎主要有以下幾種:ThymeleafFreeMarkerVelocityGroovyMustacheBoot建議使用這些模板引擎,避免使用JSP,若一定要使用JSP將無(wú)法實(shí)現(xiàn)Spring Boot的多種特*Sp ring性,具體可見后文:支持JSP的配置當(dāng)你使用上述模板引擎中的任何一個(gè),它們默認(rèn)的模板配置路徑為:src/main/resources/tem pl ates 。當(dāng)然也可以修改這個(gè)路徑,具體如何修改,可在后

16、續(xù)各模板引擎的配置屬性中查詢并修改。3.4、使用Freemarker模板引擎渲染 web視圖3.4.1pom文件引入:<!- 引入freeMarker的依賴包.-><de pendency<groupld >org.springframework.boot </ groupld ><artifactId>sp ring-boot-starter-freemarker</ artifactId ></de pendency3.4.2后臺(tái)代碼在 src/main/resources/map 創(chuàng)建一個(gè)templates文件夾,后

17、綴為*.ftl RequestMapping ("/index") p ublic String in dex(Ma p<Stri ng, Object>mapput( "name","美麗的天使.");retu rn "i ndex"3.4.3前臺(tái)代碼<!DOCT YPE html> <html><head lan g="e n"><meta charset="UTF-8" /> <title><

18、/title></head><body>$n ame</body></html>3.4.4Freemarker其他用法RequestMa pping ("/in dex")map p ublic String in dex(Ma p<Stri ng, Object> mapput( "name", "# 螞蟻課堂 #"); mapput( "sex" ,1);List<Stri ng>userlist=new ArrayList<S

19、tri ng>();userlist.add("余勝軍”);userlist.add("張三");userlist.add("李四”);mapput("userlist", userlistreturn "index");VDOCTYPE html> <html><head lang="en"><meta charset="UTF-8" /> <title> 首頁(yè) </title> </head&g

20、t;<body>$n ame <#if sex=1>男<#elseif sex=2><#else>其他<# list userlist as user$user</#list></body></html>345、Freemarker 配置文件新建 perties# #FREEMARKER (FreeMarkerAutoCo nfiguratio n) # sprin g.freemarker.allow-request-ovemde=falsesprin g.freemark

21、er.cache=truesprin g.freemarker.check-te mp late-locati on=truesprin g.freemarker.charset=UTF-8sprin g.freemarker.c onten t-t yp e=text/htmlsprin g.freemarker.ex po se-request-attributes=falsesprin g.freemarker.ex po se-sessi on-attributes=falsesprin g.freemarker.ex po se-s prin g-macro-hel pers=fal

22、se#sprin g.freemarker. prefix=#sprin g.freemarker.request-c on text-attribute=#sprin g.freemarker.sett in gs.*=sprin g.freemarker.suffix=.ftlsprin g.freemarker.te mp late-loader- path=class path:/te mp lates/#ma-se parated list#sprin g.freemarker.view-n ames= # whitelist of view n ames that can be r

23、esolved3.5、使用JSP渲染W(wǎng)eb視圖3.5.1、pom文件引入以下依賴<parent ><groupld >org.springframework.boot<artifactId>sprin g-boot-starter- parent<version >1.3.3.RELEASE</ version ></p are nt ><dependencies ><!- SpringBoot核心組件-><dependency><groupld >org.springfra

24、mework.boot<artifactId>sprin g-boot-starter-web</de penden cy><dependency><groupld >org.springframework.boot<artifactId</de penden cy><dependency><groupld >org.apache.tomcat.embed </groupld > <artifactId >tomcat-embed-jasper </ artifactld &

25、lt;/de penden cy></dependencies ></groupId ></artifactId</ groupId > </artifactld</ groupId >>spring-boot-starter-tomc </artifactId創(chuàng)建以下配置/WEB-INF/js p/ .jsp 3.5.3后臺(tái)代碼3.5.2、在 pertiessp ring.mvc.view .p refix= sp ring.mvc.view.suffix=Co ntrollerp u

26、blicclass In dexC on troller RequestMapping ("/index") p ublic String in dex() retu rn"i ndex"四、數(shù)據(jù)訪問4.1springboot 整合使用 JdbcTemplate4.1.1 pom文件引入<parent ><groupId >org.springframework.boot <artifactId>sp ri ng-boot-starter- pare nt<version >1.5.2.RELEASE &l

27、t;/version ></p are nt ><dependencies ><dependency ><groupId >org.springframework.boot <artifactId>sprin g-boot-starter-jdbc</dependency ><dependency ><groupId >mysql </ groupId > <artifactId> mysql-conn ector-java<version >5.1.21

28、</ version ></groupId ></ artifactId ></ groupId ></ artifactId ></artifactId ></dependency ><dependency ><groupId >org.springframework.boot <artifactId >sprin g-boot-starter-test <scope >test </ scope ></dependency ><d

29、ependency ><groupId >org.springframework.boot <artifactId >sprin g-boot-starter-web </dependency ></dependencies >4.1.2 app licati p erties</ groupid ></ artifactId ></ groupId ></artifactId >新增配置sp ring.datasource.url=jdbc:mysql:/localhost:33

30、06/testsp ring.datasource.username=rootsp ring.datasource .p assword=rootsp ring.datasource.driver-class-name=.mysql.jdbc.Driver4.1.3 UserServiceServicep ublicclass UserServiceIm plimpl eme nts UserService Autowired private p ublicJdbcTem pl atejdbcTem pl ate ;void createUser(Stringname, Integer age

31、) System. out.println( "ssss");jdbcTem plate .up date( "in sert into users values (n ull,?,?);",name age);4.1.4 App 類po nentScan(base Packages = ".itmayiedu" ) EnableAutoConfiguration publicclass App public static void main(String args) SpringApplication.run (App. class

32、 , args );注意:spring-boot-starter-parent要在1.5以上4.2、springboot整合使用 mybatis4.2.1、pom文件引入<p are nt ><groupId >org.springframework.boot</ groupId ><artifactId>sp ri ng-boot-starter- pare nt</ artifactId ><version >132.RELEASE </version ><relative Path/> <

33、;!- look up p are nt from rep ository -></p are nt ><dependencies >vdependency >vgroupId >org.springframework.bootvartifactId>sprin g-boot-starterv/dependency > vdependency >vgroupId >org.springframework.bootvartifactId>sprin g-boot-starter-testvscope>test v/ s

34、cope >v/dependency > vdependency >vgro upI d>org.mybatis.s prin g.bootv/gro upId> vartifactId>mybatis-s prin g-boot-starterv/artifactId> vversi on >1.1.1v/vers ion></ groupld</ artifactIdv/ groupIdv/ artifactId ></dependency > vdependency >vgroupld >my

35、sql </ groupld > vartifactId sql-c onn ector-javavversion >5.1.21 </version >v/artifactId ></dependency > dependency >vgroupld >org.springframework.boot vartifactId >spnn g-boot-starter-web </dependency ></dependencies >v/ groupId > v/artifactId >42

36、2、配置文件引入sprin g.datasource.url= jdbc:mysql:/localhost:3306/test sprin g.datasource.user name二rootsprin g.datasource .p assword=rootsprin g.datasource.driver-class-n ame= mysql.jdbc.Driver4.2.3、Mapper代碼p ublic in terfaceUserMa pper ©Select("SELECT * FROM USERS WHERE NAME = #name")User

37、findByName( Param"name" ) Stringname);Insert ("INSERT INTO USERS(NAME, AGE) VALUES(#name, #age)" int insert( Param"name") String name, Param"age" ) Integer)age);4.2.4、啟動(dòng)方式p onentScar(base Packages = ".itmayiedu")Ma pp erSca(toase Packages = ".it

38、mayiedu.ma pp er")Sp ringBootA pp lication public class App public static void main(String args) SpringApplication.run(App. class , args);4.3、springboot整合使用 springjpa431 pom文件引入依賴vparent >vgroupid >org.springframework.bootv/groupld >vartifactid>spring-boot-starter-parent</ artifa

39、ctld >vversion >1.4.2.RELEASEv/ version >v/p are nt >vdependencies > vdependency>vgroupld >org.springframework.bootv/groupld >vartifactld>sp ri ng-boot-starter-data-j pav/artifactldv/dependency> vdependency>vgroupld >mysq|v/groupld ></ artifactIdvartifactld&

40、gt;mysql-c onn ector-javavversion >5.1.21 v/ version ></dependency></groupld > </artifactld<dependency><groupld >org.springframework.boot vartifactid >sprin g-boot-starter-web</dependency></dependencies >4.3.2創(chuàng)建User實(shí)體類/ .get/set privateln tegerid ;Colu

41、m nprivateStri ngnameColum nprivatelp teger1 age;方法Entity (name = "users") p ublicclass User IdGe neratedValue4.3.3 創(chuàng)建 UserDaop ublic in terfaceUserDao exte nds Jp aRe po sitory<User, I nteger> 4.3.4 創(chuàng)建 IndexControllerRestControllerp ublicclass IndexController Autowiredprivate UserDa

42、o userDao ;RequestMapping ("/index")public String index(lntegerid ) .User findUser =serDao .findOne( id 丿, System. out.println( findUser .getName(); return "success"435啟動(dòng)項(xiàng)目ponen tSca n(base Packages = ".itmayiedu" )En ableJ paRe positories(base Packages = ".itmayie

43、du.dao" )En ableAutoC on figurati ontitySca n(base Packages =".itmayiedu.e ntity"public class p ublicApp static void main(StringargsSpringApplication.run(App. class),args );4.4、springboot 整合多數(shù)據(jù)源同學(xué)們思考下,你們?cè)陧?xiàng)目中有使用到多數(shù)據(jù)源嗎?4.4.1配置文件中新增兩個(gè)數(shù)據(jù)源sp ri ng.datasource.test1.driverClassName =.mysql.j

44、dbc.Driversp ri ng.datasource.test1.url =jdbc:mysql:/localhost:3306/test01?use Uni code=true&characterE ncod in g=utf-8sp ri ng.datasource.test1.user name =rootsp ri ng.datasource.test1. password =rootsp ring.datasource.test2.driverClassName =.mysql.jdbc.Driversp ring.datasource.test2.url =jdbc:

45、mysql:/localhost:3306/test02?useUnicode=true&characterEncoding=utf-8sp ring.datasource.test2.username =rootsp ring.datasource.test2 .p assword =root4.4.2配置文件中新增兩個(gè)數(shù)據(jù)源7/注冊(cè)到 springboot容器中Con figurati onMa pp erScarfbase Packages =".itmayiedu.user1", sqlSessi on FactoryRef =p ublicclass Da

46、taSource1C onfig "testISqISessio nFactory"/* methodDesc 功能描述:(配置test1數(shù)據(jù)庫(kù))* author:余勝軍* param return* createTime :2017 年 9月 17 日 下午 3:16:44* returnType :return DataSource* copyright :上海每特教育科技有限公司* 644064779*/Bearrame = "test1DataSource")P rimary©Con figurati onProp erties(pre

47、fix = "sprin g.datasource.test1"p ublic DataSource testDataSource() return DataSourceBuilder. create ().build();:2017年9月17日 下午3:17:08:p aram dataSource:return:throws Exce pti on SqlSessio nFactory/* copyright :上海每特教育科技有限公司* 644064779*/Beanname = "test1SqlSession Factory"P rimaryp

48、ublicSqlSessio nFactory testSqlSessi on Factory( throws Exception SqlSessi on FactoryBea nbea n 二 new SqlSessi on FactoryBea n();bean.setDataSource( dataSource );bea n.setMa pp erLocati ons(new P athMatchi ngResource Patter nResolver().getResources("class path:mybatis/ma pp er/test1/*.xml"

49、); return bean .getObject();Qualifier ("test1DataSource" ) DataSource dataSource )/*methodDesc功能描述:(test1 事物管理) author:余勝軍 param paramdataSourceparam return param throwsExce ptio n createTime retu rnType retu rnType retu rnType:2017年9月17日 下午3:17:08:p aram dataSource:return:throws Exce pti

50、on SqISessi on Factorycopyright :上海每特教育科技有限公司 644064779*/Beanname = "test1Tra nsacti onMan ager")P rimaryp ublic DataSourceTra nsactio nMan ager testTra nsacti onMan ager( retu rnnew DataSourceTra nsacti onMan ager(Qualifier ("test1DataSource" ) DataSource dataSource ) dataSource

51、 );Beanname = "test1SqlSessi on Tem pl ate")p ublic SqlSessi on Tem pl ate testSqlSessio nTem plate(Qualifier ("test1SqlSessio nFactory" retu rnnew SqlSessi on Tem pl ate()SqlSessi on FactorysqlSessi on Factory) throws Exce ptio n sqlSessi on Factory);442創(chuàng)建分包MapperP ublic interfa

52、ceUser1Ma pper Insert ("insert into users values(null,#name,#age);")public int addUser( Pararti"name") String name Paramage") Integer age);4.4.3啟動(dòng)項(xiàng)目ponen tSca n( base Packages =".itmayiedu"En ableAutoC on figurati on publicclass App publicstatic void main(StringSp

53、ri ngApp licati on.run(App.args ) class , args );* methodDesc 功能描述:(test1 sql 會(huì)話工廠)* author:余勝軍* param param* dataSource* param return* param throws* Exce ption* createTime* retu rnType* retu rnType* retu rnTypeNo qualifying bean of type javax.sql.DataSourceis defi ned: exp ected sin gle match ing b

54、ea n butfound 2: test1DataSource,test2DataSource五、事物管理5.1.1s pringboot整合事物管理# Mysql 1 mysql.datasource.test.url = mysql.datasource.test.user name = mysql.datasource.test .p assword =mysql.datasource.test.m inPo olSize = mysql.datasource.test.max Po olSize = mysql.datasource.test.maxLifetime = mysql.

55、datasource.test.borrowC onn ectio nTimeout = mysql.datasource.test.logi nTimeout =30mysql.datasource.test.ma intenanceln terval = mysql.datasource.test.maxIdleTime = mysql.datasource.test.testQuery =3252000060select6030# Mysql 2 mysql.datasource.test2.url = mysql.datasource.test2.user name = mysql.d

56、atasource.test2 .p assword =idbc:mysql:/localhost:3306/test02?useU nicode二true&characterE ncod in g=utf-8 rootrootmysql.datasource.test2.m inPo olSize = mysql.datasource.test2.max Po olSize =325springboot 默認(rèn)集成事物,只主要在方法上加上Transactional即可5.1.2S pringBoot分布式事物管理分布式事物管理使用 springboot+jta+atomikos新增配置文件信息<dependency ><groupld >org.springframework.boot</ groupld ><artifactId >spring-boot-starter-jta-atomikos</ artifactId ></dependency >新增配置文件信息jdbc:mysql:/localhost:3306/test01?useU nicode二true&characterE n

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論