SpringBoot學習資料_第1頁
SpringBoot學習資料_第2頁
SpringBoot學習資料_第3頁
SpringBoot學習資料_第4頁
SpringBoot學習資料_第5頁
免費預(yù)覽已結(jié)束,剩余26頁可下載查看

下載本文檔

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

文檔簡介

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

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

3、名為” springboot - helloworld ” 類型為 Jar 工程項目倉 U建 package 命名為 com.itmayiedu.controller (根據(jù)實際情況修改) 2.2、pom 文件引入依賴 vparent vgroupld org.springframework.boot vversion 1.3.3.RELEASE vdependencies vdependency vgroupld org.springframework.boot vartifactld spring-boot-starter-web v/ dependency v/ dependencies

4、 spring-boot-starter-parent 作用 在 pom.xml 中弓丨入 spring-boot-start-parent,spring 官方的解釋叫什么 stater poms, 它可以提供 dependency management, 也就是說依賴管理,弓 I入以后在申明其它 dependency的時候就不需要 version 了,后面可以看到。 spring-boot-starter-web 作用 springweb 核心組件 spring-boot-maven-plugin 作用 如果我們要直接 Main 啟動 spring ,那么以下 plugin 必須要添加,否則

5、是無法啟動的。如果使用 maven 的 spring-boot:run 的 話是不需要此配置的。(我在測試的時候,如果不配置下面的 plugin 也是直接在 Main 中運行的。) vartifactld spring-boot-starter-parent v/ groupld v/ artifactld 倉 U建 package 命名為 com.itmayiedu.controller (根據(jù)實際情況修改) 2.3、編寫 HelloWorld 服務(wù) 創(chuàng)建 HelloController 類,容如下 RestController EnableAutoConfiguration public

6、class HelloController RequestMapping (/hello) public String index() return Hello World ; public static void main(String args ) SpringApplication. run (HelloController. class , args ); 2.4、 RestController 在上加上 RestController 表示修飾該 Controller 所有的方法返回 JSON 格式,直接可以編寫 Restful 接口 2.5、 EnableAutoConfigurat

7、ion 注解:作用在于讓 Spring Boot 根據(jù)應(yīng)用所聲明的依賴來對 Spring 框架進行自動配置 這個注解告訴 Spring Boot 根據(jù)添加的 jar 依賴猜測你想如何配置 Spring。由于 spring-boot-starter-web 添加了 Tomcat 和 Spring MVC,所以 auto-configuration 將假定你正在開發(fā)一 個 web 應(yīng)用并相應(yīng)地對 Spring進行設(shè)置。 2.6 SpringApplication. run (HelloController. class , args ); 標識為啟動類 2.6.1 SpringbootApplic

8、ation 使用 SpringbootApplication 注解 可以解決根類或者配置類(我自己的說法,就是 main 所在類) 頭上注解過多的問題, 和 ComponentScan 一個 SpringbootApplication 相當于 Configuration,EnableAutoConfiguration 并具有他們的默認屬性值 SpringBootApplication / 等同于 Configuration EnableAutoConfiguration ComponentScanpublic class Application public static void main(

9、String args) SpringApplication.run(Application. class , args); 2.7、SpringBoot 啟動方式 1 Springboot 默認端口號為 8080 RestController EnableAutoConfiguration public class HelloController RequestMapping (/hello) public String index() return Hello World ; public static void main(String args ) SpringApplication.

10、run (HelloController. class , args ); 啟動主程序,打開瀏覽器訪問 localhost:8080/index ,可以看到頁面輸出 Hello World 2.8、SpringBoot 啟動方式 2 ComponentScan (basePackages = .itmayiedu.controller )控制器掃包圍 ComponentScan (basePackages = .itmayiedu.controller ) En ableAutoC on figuratio n public class App public static void main(

11、String args ) SpringApplication. run (App. class , args ); 三、Web開發(fā) 3.1、 靜態(tài)資源訪問 在我們開發(fā) Web應(yīng)用的時候,需要引用大量的 js、css、圖片等靜態(tài)資源。 默認配置 Spring Boot 默認提供靜態(tài)資源目錄位置需置于 classpath 下,目錄名需符合如下規(guī)則: /static /public /resources /META-INF/resources 舉例:我們可以在 src/main/resources/ 目錄下創(chuàng)建 static ,在該位置放置一個圖片文件。啟動程序后, 嘗試訪問 localhost:

12、8080/D.jpg 。如能顯示圖片,配置成功。 3.2、 全局捕獲異常 ExceptionHandler 表示攔截異常 ? ControllerAdvice 是 controller 的一個輔助類,最常用的就是作為全局異常處理的切面類 ? ControllerAdvice 可以指定掃描圍 ? ControllerAdvice 約定了幾種可行的返回值,如果是直接返回 model 類的話,需要使用 ResponseBody 進行 json 轉(zhuǎn)換 o 返回 String ,表示跳到某個 view o 返回 modelAndView o 返回 model + ResponseBody Control

13、lerAdvice public class GlobalExceptionHandler ExceptionHandler (RuntimeException. class ) ResponseBody public Map exceptionHandler() MapvString, Object mapput( errorCode mapput( errorMsg map = new HashMapvString, Object(); ,101); 系統(tǒng)錯誤!); return ma 3.3、渲染 Web 頁面 渲染 Web頁面 在之前的示例中,我們都是通過 RestController

14、 來處理請求,所以返回的容為 json 對象。那么如果需要 渲染 html頁面的時候,要如何實現(xiàn)呢? 模板引擎 在動態(tài) HTML實現(xiàn)上 Spring Boot 依然可以完美勝任,并且提供了多種模板引擎的默認配置支持,所以在推 薦的模板引擎下,我們可以很快的上手開發(fā)動態(tài)。 Spring Boot 提供了默認配置的模板引擎主要有以下幾種: ? Thymeleaf ? FreeMarker ? Velocity ? Groovy ? Mustache Spring Boot 建議使用這些模板引擎,避免使用 JSP,若一定要使用 JSP將無法實現(xiàn) Spring Boot 的多種特 性,具體可見后文:支

15、持 JSP的配置 當你使用上述模板引擎中的任何一個,它們默認的模板配置路徑為: src/main/resources/templates 。當 然也可以修改這個路徑,具體如何修改,可在后續(xù)各模板引擎的配置屬性中查詢并修改。 3.4、使用 Freemarker 模板引擎渲染 web 視圖 341、pom 文件引入: dependency vgroupld org.springframework.boot vartifactld spring-boot-starter-freemarker 3.4.2、后臺代碼 在 src/main/resources/ 創(chuàng)建一個 templates 文件夾 后綴

16、為 *.ftl RequestMapping (/index ) public Stri ng in dex(Map map) map.put( name,美麗的天使.); retu rn i ndex ; 343、前臺代碼 vmeta charset二UTF-8 / $n ame 3.4.4、Freemarker 其他用法 RequestMappi ng (/in dex ) public Stri ng in dex(Map map) map.put( name ,# 螞蟻課堂 #); map.put( sex ,1); List userlist = new ArrayList(); u

17、serlist add(余勝軍); userlist add(三); userlist .add(四); map.put( userlist , userlist ); retu rn i ndex ; 首頁 $name 男 女 其他 v#list userlist as user $user v/body 345、Freemarker 配置 新建 perties 文件 If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If

18、 If If If If If If If If If If If If If If If If If If If If If If If II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II #FREEMARKER (FreeMarkerAutoCo nfiguratio n) If If If If If If

19、If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If If II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II II

20、II II II II II II spri ng.freemarker.allow-request-override=false spri ng.freemarker.cache=true spri ng.freemarker.check-template-locati on=true spri ng.freemarker.charset=UTF-8 spri ng.freemarker.c onten t-type=text/html spri ng.freemarker.expose-request-attributes=false spri ng.freemarker.expose-s

21、essi on-attributes=false spri ng.freemarker.expose-spri ng-macro-helpers=false #spri ng.freemarker.prefix= #spri ng.freemarker.request-con text-attribute= #spri ng.freemarker.sett in gs.*= spri ng.freemarker.suffix=.ftl spri ng.freemarker.template-loader-path=classpath:/templates/ #comma-separated l

22、ist #spri ng.freemarker.view-names= # whitelist of view n ames that can be resolved 3.5、使用 JSP 渲染 Web 視圖 3.5.1、pom 文件引入以下依賴 vgroupld org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE Con troller public class ln dexC on troller RequestMapping (/index public Stri ng in dex() return i n

23、dexdependency vgroupld org.springframework.boot vartifactld spring-boot-starter-web dependency org.springframework.boot spring-boot-starter-tomcat (dependency org.apache.tomcat.embed tomcat-embed-jasper 3.5.2、在 perties 倉 U 建以下配置 spring.mvc.view.prefix= /WEB-INF/jsp/ spring.mvc.view.su

24、ffix= .jsp 3.5.3、 四、數(shù)據(jù)訪問 4.1、springboot 整合使用 JdbcTemplate pom 文件引入 org.spri ngframework.boot 1.5.2.RELEASE org.spri ngframework.boot spri ng-boot-starter-jdbc mysql mysql-c onn ector-java 5.1.21 org.spri ngframework.boot spri ng-boot-starter-test test org.spri ngframework.boot spri ng-boot-starter-w

25、eb applicati on .properties 新增配置 spring.datasource.url= jdbc:mysql:/localhost:3306/test spring.datasource.username= root vartifactld spri ng-boot-starter-pare nt spring.datasource.password= root spring.datasource.driver-class-name= .mysql.jdbc.Driver UserService 類 Service public class UserServiceImp

26、l impleme nts UserService Autowired private JdbcTemplate jdbcTemplate ; public void createUser(Stri ng n ame, I nteger age) System. out .println( ssss); jdbcTemplate .update( i nsert into users values (nu ll,?,?); ,name, age); App 類 ComponentScan (basePackages = .itmayiedu ) EnableAutoConfiguration

27、public class App public static void main(String args ) SpringApplication. run (App. class , args ); 注意:spring-boot-starter-parent 要在 1.5 以上 4.2、springboot 整合使用 mybatis 421、pom 文件引入 org.springframework.boot spri ng-boot-starter-pare nt 1.3.2.RELEASE test org.mybatis.spri ng.boot mybatis-spri ng-boot-

28、starter 1.1.1 org.spri ngframework.boot spri ng-boot-starter-web 4.2.2、配置文件引入 spri ng.datasource.url二 jdbc:mysql:/localhost:3306/test spri ng.datasource.user name二 root spri ng.datasource.password二 root spri ng.datasource.driver-class-n ame= .mysql.jdbc.Driver 4.2.3、Mapper 代碼 public in terface UserM

29、apper Select ( SELECT * FROM USERS WHERE NAME = #name ) User findByName( Param (name ) String name); lnsert ( lNSERT lNTO USERS(NAME, AGE) VALUES(#name, #age) ) int insert( Param (name ) String name, Param (age ) lnteger age );org.spri ngframework.boot / groupld spri ng-boot-starter / artifactld org

30、.spri ngframework.boot / groupld spri ng-boot-starter-test mysql mysql-c onn ector-java 5.1.21 vdependency vgroupld org.springframework.boot vartifactld spring-boot-starter-web v/ dependencies 424、 啟動方式 ComponentScan (basePackages = .itmayiedu ) MapperScan (basePackages = .itmayiedu.mapper ) SpringB

31、ootApplication public class App public static void main(String args ) SpringApplication. run (App. class , args ); 4.3、springboot 整合使用 springjpa 4.3.1 pom 文件引入依賴 vparent vgroupld org.springframework.boot v/ groupld vartifactld spring-boot-starter-parent v/ artifactld vversion 1.4.2.RELEASE v/ versio

32、n v/ parent vdependencies vdependency vgroupld org.springframework.boot v/ groupld vartifactld spring-boot-starter-data-jpa v/ artifactld vdependency vgroupld mysql v/groupld vartifactld mysql-connector-java v/artifactld vversion 5.1.21 v/ version v/ groupld v/ artifactld 432 創(chuàng)建 User 實體類 En tity (n

33、ame = users) public class User Id Gen eratedValue private Integer id ; Colum n private Stri ng n ame; Colum n private Integer age; / .get/set 方法 433 創(chuàng)建 UserDao public interface UserDao extends JpaRepositoryvUser, Integer 創(chuàng)建 IndexController RestC on troller public class In dexC on troller Autowired p

34、rivate UserDao userDao ; RequestMapping (/index ) public String index(Integer id ) User findUser = userDao .findOne( id ); System. out .println( findUser .getName(); retu rn success ; 4.3.5 啟動項目 ComponentScan (basePackages = .itmayiedu ) En ableJpaRepositories (basePackages = .itmayiedu.dao ) En abl

35、eAutoC on figuratio n En titySca n(basePackages = .itmayiedu.e ntity ) run (App. class , args ); 4.4、springboot 整合多數(shù)據(jù)源 同學們思考下,你們在項目中有使用到多數(shù)據(jù)源嗎? 4.4.1 配置文件中新增兩個數(shù)據(jù)源 spring.datasource.testl.driverClassName = .mysql.jdbc.Driver spring.datasource.test1.url = jdbc:mysql:/localhost:3306/test01?useUnicode=tr

36、ue&characterEncoding=utf-8 spring.datasource.test1.username = root spring.datasource.test1.password = root spring.datasource.test2.driverClassName = .mysql.jdbc.Driver spring.datasource.test2.url = idbc:mysql:/localhost:3306/test02?useUnicode=true&characterEncodinq=utf-8 spring.datasource.test2.user

37、name = root spring.datasource.test2.password = root 4.4.2 配置文件中新增兩個數(shù)據(jù)源 Configuration / 注冊至 V springboot 容器中 MapperSca n (basePackages = .itmayiedu.user1 , sqlSessi on FactoryRef = test1SqlSessi on Factory ) public class DataSource1C onfig /* * 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f metho

38、dDesc :功能描述:(配置 testl 數(shù)據(jù)庫) public class APP public static void mai n( Stri ng args ) Spri ngApplicati on. 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f author : 余勝軍 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f param : return 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f createTime :2

39、017 年 9月 17 日 下午 3:16:44 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f retu rn Type :retu rn DataSource 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f copyright :每特教育科技 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f QQ644064779 */ Bean (name = testIDataSource ) Primary Con figurati on P

40、roperties (prefix = spri ng.datasource.testl ) public DataSource testDataSource() return DataSourceBuilder. create ().build(); /* * 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f methodDesc :功能描述:(test1 sql 會話工廠) 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f author : 余勝軍 6ac36-Numbered_a171

41、a773-9e2a-4438-b894-78b20fa767f param : param 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f dataSource 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f param : return 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f param : throws 6ac36-Numbered_a171a773-9e2a-4438-b894-78b20fa767f Excepti o

42、n createTime :2017年 9月 17日 下午 3:17:08 retu rn Type :param dataSource retu rn Type :return retu rn Type :throws Excepti on SqlSessi on Factory copyright : 每特教育科技 QC644064779 */ Bean (name = testlSqlSessionFactory ) Primary public SqlSessi on Factory testSqlSessio nFactory( Qualifier ( testIDataSource

43、 ) DataSource throws Excepti on SqlSessi on FactoryBea n bea n 二 new SqlSessi on FactoryBea n(); bean .setDataSource( dataSource ); / bea n.setMapperLocati ons( / new PathMatchi ngResourcePatter nResolver().getResources(classpath:mybatis/mapper/test1/*.xml); return bean .getObject(); /* * * methodDe

44、sc :功能描述:(test1 事物管理) dataSource ) author :余勝軍 param : param dataSource param : return param : throws Exceptio n createTime :2017年 9月 17日 下午 3:17:08 retu rn Type :param dataSource retu rn Type :return retu rn Type :throws Excepti on SqlSessi on Factory copyright : 每特教育科技 QQ644064779 */ Bea n(n ame =

45、 testITra nsacti onMan ager ) Primary public DataSourceTransactionManager testTransactionManager( Qualifier (test1DataSource ) DataSource dataSource ) return new DataSourceTra nsactio nMan ager( dataSource ); Bea n(n ame = test1SqlSessio nTemplate ) public SqlSessi on Template testSqlSessio nTemplat

46、e( Qualifier (test1SqlSessi on Factory ) SqlSessi on Factory sqlSessio nFactory ) throws Exceptio n return new SqlSessio nTemplate( sqlSessio nFactory ); 442 創(chuàng)建分包Mapper public interface User1Mapper Insert (insert into users values(null,#name,#age); ) public int addUser( Param( name ) String name Par

47、am (age ) Integer age); 4.4.3 啟動項目 ComponentScan (basePackages = .itmayiedu ) En ableAutoC on figuratio n public class App public static void main(String args ) SpringApplication. run (App. class , args ); matchi ng bea n but found 2: test1DataSource,test2DataSource 五、事物管理 5.1.1springboot 整合事物管理 spr

48、ingboot 默認集成事物,只主要在方法上加上 Transactional 即可 5.1.2SpringBoot 分布式事物管理 使用 springboot+jta+ atomikos 分布式事物管理 新增配置文件信息 org.springframework.boot spring-boot-starter-jta-atomikos_ _ 新增配置文件信息 # Mysql 1 mysql.datasource.test.url = idbc:mysql:/localhost:3306/test01?useU nicode二true&characterE nco

49、di ng二utf-8 mysql.datasource.test.user name = root mysql.datasource.test.password = root No qualify ing bea n of type javax.sql.DataSource is defined: expected sin gle mysql.datasource.test.m in PoolSize = 3 mysql.datasource.test.maxPoolSize = 25 mysql.datasource.test.maxLifetime = 20000 mysql.datas

50、ource.test.borrowC onn ectio nTimeout = 30 mysql.datasource.test .l ogi nTimeout = 30 mysql.datasource.test.ma intenanceln terval = 60 mysql.datasource.test.maxIdleTime = 60 mysql.datasource.test.testQuery = select 1 # Mysql 2 mysql.datasource.test2.url = jdbc:mysql:/localhost:3306/test02?useU nicod

51、e二true&characterE ncodi ng二utf-8 mysql.datasource.test2.user name = root mysql.datasource.test2.password = root mysql.datasource.test2.m in PoolSize = 3 mysql.datasource.test2.maxPoolSize = 25 mysql.datasource.test2.maxLifetime = 20000 mysql.datasource.test2.borrowC onn ecti on Timeout = 30 mysql.da

52、tasource.test2.logi nTimeout = 30 mysql.datasource.test2.ma intenanceIn terval = 60 mysql.datasource.test2.maxIdleTime = 60 mysql.datasource.test2.testQuery = select 1 讀取配置文件信息 package .itmayiedu.c on fig; import org.spri ngframework.boot.c on perties.C on figuratio nProperties; Con

53、figurati on Properties (prefix = mysql.datasource.test ) public class DBCo nfig1 private Stri ng url ; private Stri ng user name ; private Stri ng password ; private int min PoolSize ; private int maxPoolSize ; private int maxLifetime ; private int borrowC onn ectio nTimeout private int logi nTimeou

54、t ; private int maintenancein terval private int maxIdleTime ; private Stri ng testQuery ; package .itmayiedu.c on fig; import org.spri ngframework.boot.c on perties.C on figuratio nProperties; Con figurati on Properties (prefix = mysql.datasource.test1 ) public class DBCon fig2 private Stri

55、 ng url ; private Stri ng user name ; private Stri ng password ; private int min PoolSize ; private int maxPoolSize ; private int maxLifetime ; private int borrowC onn ectio nTimeout private int logi nTimeout ; private int maintenancein terval private int maxIdleTime ; private Stri ng testQuery ; 5.

56、1.2.4 創(chuàng)建多數(shù)據(jù)源 Con figurati on / basePackages 最好分開配置如果放在同一個文件夾可能會報錯 MapperScan (basePackages = .itmayiedu.test01 , sqlSessionTemplateRef = testSqISessionTemplate ) public class TestMyBatisCo nfig1 /配置數(shù)據(jù)源 Primary Bean (name = testDataSource ) public DataSource testDataSource(DBConfig1 testConfig ) thro

57、ws SQLException MysqlXADataSource mysqlXaDataSource = new MysqlXADataSource(); mysqlXaDataSource .setUrl( testC onfig .getUrl(); mysqlXaDataSource .setPinGlobalTxToPhysicalConnection( true ); mysqIXaDataSource .setPassword( testCo nfig .getPassword(); mysqIXaDataSource .setUser( testC onfig .getUser

58、 name(); mysqlXaDataSource .setPinGlobalTxToPhysicalConnection( true ); AtomikosDataSourceBea n xaDataSource = new AtomikosDataSourceBea n(); xaDataSource .setXaDataSource( mysqlXaDataSource ); xaDataSource .setU niq ueResourceName( testDataSource ); xaDataSource .setMi nPoolSize( testC onfig .getMi

59、 nPoolSize(); xaDataSource .setMaxPoolSize( testC onfig .getMaxPoolSize(); xaDataSource .setMaxLifetime( testC onfig .getMaxLifetime(); xaDataSource .setBorrowC onn ecti on Timeout( testC onfig .getBorrowCo nn ectio nTimeout(); xaDataSource .setLogi nTimeout( testCo nfig .getLogi nTimeout(); xaDataS

60、ource .setMai nte nan ceI nterval( testC onfig .getMai nte nan ceI nterval(); xaDataSource .setMaxldleTime( testC onfig .getMaxIdleTime(); xaDataSource .setTestQuery( testC onfig .getTestQuery(); retu rn xaDataSource ; Bean (name = testSqlSessionFactory ) public SqlSessi on Factory testSqlSessio nFa

溫馨提示

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

評論

0/150

提交評論