Java三大框架(ssh)總結_第1頁
Java三大框架(ssh)總結_第2頁
Java三大框架(ssh)總結_第3頁
Java三大框架(ssh)總結_第4頁
Java三大框架(ssh)總結_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Hibernate框架第一章 數據結構1.1認識數據結構 數據:是信息的載體,是能夠被計算機識別、存儲、計算的符號集合是計算機處理的對象的總稱; 數據元素:也稱為結點,是組成數據的基本單位; 數據項:是數據的最小單位; 數據對象:是具有相同特征的數據元素的集合,它是數據的子集; 數據結構:計算機存儲、組織數據的方式;l 邏輯結構:指從邏輯關系上描述數據,與數據的存儲無關,且獨立于語言;n 線性結構:有且僅有一個開始結點和一個終端結點,所有結點最多只有一個前驅結點和一個直接后繼結點;n 非線性結構:指一個結點可能有多個直接前驅和直接后繼結點。l 存儲結構:指數據元素及其關系在計算機存儲時如何表示

2、,依賴于語言;l 數據運算:通茶昂貴定義在數據的邏輯結構上。1.2算法 是為求解一個問題需要遵循的,被清晰的制定的簡單指令的集合;正確的算法有如下特點:l 用待處理問題的相關信息作為輸入數據l 對一個既定的合法輸入,多次執行同一算法,總返回同一個結果(隨機算法除外)l 算法中的指令是可行的,即每個指令都可以實現l 算法中指令的數量是有限的l 算法執行完畢后,能夠輸出正確的數據集合1.3算法分析 目的在于選擇合適的算法,算法分析是從復雜度來考慮的。復雜度:衡量一個算法好壞的重要手段;l 時間復雜度:以算法執行時間長短來衡量l 空間復雜度:以算法執行占用的存儲空間來衡量第二章 算法第三章 設計模式

3、3.1面向對象設計原則 單一職責原則:要求每個對象應該只有一種責任; 開閉原則:設計程序時對擴展開放,對修改關閉; 里氏替換原則:任何情況下,子類替換父類,不會影響程序運行; 依賴倒置原則:提倡高層不依賴底層,二者都依賴抽象; 接口隔離原則:把多個功能分開聲明,不強迫客戶實現不需要的功能; 迪米特原則:最少只是原則盡可能的降低訪問級別; 組合/聚合復用原則:盡量不用繼承達到復用類的目的,而是使用組合和聚合。3.2設計模式分類 創建型模式:如何創建對象以及何時創建對象,工廠模式,單例模式 結構型模式:對象該如何組織以及采用什么樣的結構更合理 行為型模式:規定了各個對象應該具備的職責以及對象間的通

4、信模式3.3什么是框架 應用程序骨架;框架技術的優勢在于:l 不用再考慮公共問題,框架已經幫我們做好了l 可以專心在業務邏輯上,保證核心業務邏輯的開發質量l 結構統一,便于學習、維護l 框架集成的前人的經驗有助于寫出穩健、性能優良并且結構優良的高質量程序3.4主流框架3.4.1 Struts框架 最早的Java開源框架之一,定義了通用的Controller(控制器),通過配置文件(一般是struts-config.xml)隔離了Model(模型)和View(視圖),以Action的概念對用戶請求進行了封裝,是代碼更清晰易讀。3.4.2 Struts2框架 新的框架特性:l 從邏輯中分離出橫切關

5、注點的攔截器l 減少或者消除配置文件l 貫穿整個框架的強大表達式語言l 支持可變更和可重用的基于MVC模式的標簽API3.4.3 Hibernate框架 對JDBC進行了非常輕量級的對象封裝,可以應用在任何使用JDBC的場合3.4.5 Spring框架 輕量級框架,主要作為依賴注入容器和AOP實現存在,還提供了聲明式事務、對DAO層的支持等簡化開發功能。其優點有:l 低侵入式設計,代碼污染極低l 獨立于何種應用服務器,可以真正實現“Write Once,Run Anywhere”l Spring的DI機制降低了業務對象替換的復雜性l Spring開發并不完全依賴于Spring的所有組件,開發者

6、可以自由選擇使用Spring框架的部分或全部組件。 第四章Hibernate實現數據操作4.1 Hibernate概述一個優秀的Java持久化層解決方案,是當今主流的對象-關系映射(ORM)工具4.1.1 理解持久化l 瞬時狀態:程序退出,數據就不存在了l 持久狀態:在程序退出后,以文件的形式保存在硬盤中。l 持久化:將程序中的數據在瞬時狀態和持久之間轉換的機制4.1.2 對象-關系映射:能在對象和關系型數據庫兩者之間進行數據轉換的機制4.2 搭建Hibernate項目環境l 加載Hibernate驅動包;l 創建Hibernate.cfg.xml文件,指定數據庫連接信息及其映射文件路徑l 創

7、建持久化類和映射文件,并在Hibernate.cfg.xml中指定映射文件路徑l 創建Hibernate連接工具類4.3 在Hibernate中執行持久化操作的步驟1) 讀取并解析配置文件,讀取并解析映射文件,創建SessionFactory,打開sessionSession session=new Configuration().configure().buildSessionFactory().openSession();2) 開啟事務(增刪改必須)Transaction tx=session.beginTransaction();3) 持久化操作session.save(emp);4)

8、提交事務mit();5) 關閉sessionsession.close();4.4 實體對象的生命周期 由產生到被GC回收的一段過程1) 自由狀態(Transient)2) 持久狀態(Persistent)3) 游離狀態(Detached) 第五章 Hibernate關聯映射及高級查詢5.1 配置對象關聯屬性5.1.1對象關聯關系種類 一對多(多對一)關聯 一對一關聯 多對多關聯5.1.2 一對多(多對一)配置1) 刪除外鍵2) 持久化類添加關聯類的相關屬性及getter/setter方法3) 映射文件中建立該屬性和數據庫表字段的映射信息5.1.3 一對一配置5.1.3 多對多配置 創建中間表

9、、兩端數據庫表的持久化類,針對中間表的持久化類分別和兩端的數據庫表的持久化類創建一對多的關聯5.2 HQL查詢 步驟:得到Session編寫HQL語句創建Query對象執行查詢,得到結果 屬性查詢:直接指定屬性:select eno,ename from Emp通過構造方法:select new Emp(eno,ename) from Emp 實體更新:update Emp set ename=xxxwhere eno=10001 實體刪除:delete from Emp where eno=10001 占位符:from Emp where eno=? 命名參數:from Emp where

10、eno=:eno 查詢排序:默認升序:from Emp order by eno 指定降序:from Emp order by eno desc 升序 :asc 分頁:Query接口提供的方法:setFirstResult(); setMaxResult();第六章 Criteria查詢及命名查詢6.1 Criteria查詢概述 Criteria查詢又稱對象查詢,采用對象的方式封裝查詢條件,并提供Restrictions等類型做輔助,是傳統SQL的對象化表示:Criteria c=sesson.createCriteria(Emp.class);c.list();獲取所有數據; Restric

11、tions限制結果集:按薪資降序:c.addOrder(Order.desc(salary);按編號查詢:c.add(Restrictions.eq(dept.dno, dno);按薪資區間查詢c.add(Restrictions.between(salary, minSalary, maxSalary);查詢指定屬性:ProjectionList p = PjectionList();p.add(Property.forName(eno);p.add(Property.forName(ename);p.add(Property.forName(salary);c.

12、setProjection(p);查詢最高工資:c.setProjection(Projections.max(salary);分頁并排序:c.setFirstResult(pageIndex - 1) * pageSize); c.setMaxResults(pageSize); c.addOrder(Order.desc(salary);6.2 命名HQL查詢 修改相應的映射文件(與class標簽并列): 在程序中使用session對象的getNamedQuery()方法獲取在映射配置文件中添加的HQL插敘語句Query query=session.getNamedQuery(“aaa”)

13、;6.3 本地sql查詢String sql=”select e.* from Emp where e.ename=ccc”SQLQuery query=session.createSQLQuery(sql).addEntity(“e”,Emp.class)6.4 命名sql查詢Query query=session.getNamedQuery(“aaa”);6.5 定制SQLclass節點下:sql語句sql語句第七章 緩存與注解7.1 緩存簡介7.1.1 緩存分類:l 一級緩存:Sessionl 二級緩存:SessionFactoryl 查詢緩存:依賴于二級緩存7.1.2 緩存作用范圍:與

14、三類緩存一一對應l 事務范圍l 進程范圍l 集群范圍7.2 一級緩存作用:減少訪問數據庫的頻率保證數據庫中的相關記錄與緩存中的相應對象保持同步7.3 二級緩存 配置步驟:l 添加JAR包,ehcache-1.2.3.jar和commons-loging-1.1.1.jarl 添加ehcache.xml到src目錄l 在Hibernate.cfg.xml中指定提供商和開啟二級緩存l 配置實體類映射文件,class節點下添加 應用場景:l 很少被修改的數據l 不是很重要的數據,允許出現偶爾并發問題l 不會被并發訪問的數據l 應用參考的常量數據。極少實例或從來不會被修改 以下數據不適合放進二級緩存:

15、l 經常被修改的數據l 財務數據l 與其他應用共享的數據7.4 查詢緩存步驟:l 在Hibernate.cfg.xml中開啟查詢緩存l 在程序中手動啟用查詢緩存query.setCacheable(true);7.5 注解簡介使用Hibernate注解步驟:l 添加jar包l 使用注解配置持久化類以及對象關聯關系l 使用AnnotationConfiguration建立會話工廠Session session=new AnnotationConfiguration().configure().builSessionFactory().openSession();l 在Hibernate配置文件中

16、聲明持久化類7.6 命名查詢NamedQuery(name = getGradeByGno, query = from Grade where gno:gno)Query query=session.getNamedQuery(“getGradeByGno”);7.7 本地查詢NamedNativeQuery(name = getGrades, query = select g.* from grade g where g.gno:gno, resultSetMapping = all)SqlResultSetMapping(name = all, entities = EntityResul

17、t(entityClass = cn.wang.entity.Grade.class) )Query query = session.getNamedQuery(getGrades);Struts2框架第一章 Web前端與MVC1.1 初識jQuery jQuery是一個優秀的JavaScript框架。它是輕量級的JavaScript庫。 宗旨:”Write Less, Do More”。 jQuery能滿足如下需求:n 取得頁面中的元素。n 修改頁面的外觀。n 改變頁面內容。n 響應用戶的頁面操作。n 為頁面添加動態效果。n 不需刷新頁面即可從服務器獲取信息。n 簡化常見的JavaScrip

18、t任務。 常見JavaScript庫:n prototype。n YUI。n ExtJS。n jQuery。 jQuery特色:n 利用css優勢n 支持擴展n 抽象瀏覽器不一致性n 總算面向集合n 將多行操作集于一行1.2 jQuery基本語法1.2.1 準備工作 下載jQuery庫(). 在頁面元素中引入jQuery庫1.2.2 jQuery對象及基本語法 $(this).hide():隱藏當前元素。 $(“p”).hide:隱藏所有標簽。 $(“p.test”).hide:隱藏所有class=”test”的標簽。 $(“#test”).hide:隱藏所有id=”test”的元素。1.2.

19、3 jQuery對象與DOM對象的區別與轉換 $(“#test”);相當于document.getElementById(“test”); $(“#test”).html(“新內容”);相當于document.getElementById(“test”).innerHTML=”新內容”; DOM對象轉為jQuery對象:$( document.getElementById(“test”); jQuery對象轉為DOM對象:$(“#test”).get(0);1.3 jQuery選擇器及篩選1.3.1 元素選擇器 $(“p”):選取頁面中的元素。 $(“#demo”):選取頁面中id=”demo

20、”的元素。 $(“.intro”):選取頁面中class=”intro”的元素。1.3.2 屬性選擇器 語法:attribute = value 。 例1:$(“inputname=userName”):選取頁面中name=”userName”的input元素。 例2:$(“formname=regForminputname=userName”):選取name=”regForm”的標簽中,name=”userName”的input元素。1.3.3 jQuery篩選 $(“#demo”).children(exp):匹配ID為demo的元素的子元素集合。 $(“#demo”).find(exp)

21、:匹配ID為demo的元素的后代元素集合。 $(“#demo”).parent(exp):匹配ID為demo的元素的父元素集合。 $(“#demo”).parents(exp):匹配ID為demo的元素的上級元素集合。 $(“#demo”).siblings(exp):匹配ID為demo的元素的同輩元素集合。1.4 jQuery屬性操作、CSS操作和內容操作1.4.1 屬性操作 獲取屬性值:attr(name); 修改屬性值:attr(key , value); 刪除屬性:removeAttr(name);1.4.2 CSS操作1)操作CSS 獲取樣式:css(name); 修改單個樣式:cs

22、s(key , value) 修改多個樣式:css(key1:value1 , key2:value2.);2)操作類樣式 添加類樣式:addClass(className); 移除類樣式:removeClass(className);1.4.3 內容操作 獲取或設置HTML內容:html()、html(val)。 獲取或設置對象的值:val()、val(val)。 追加內容:append(content)。 刪除節點:remove()。1.5 jQuery時間處理1.5.1 綁定事件 語法:bind(type , fn); type-事件類型;fn-函數。 例:$(function()$(“

23、#btn”).bind(“click” , function()alert(“測試”);););1.5.2 觸發事件 語法:trgger(type); type-觸發事件的類型; 例:$(function()$(“# btnSubmit”).bind(“click” , function()$(“#regForm”).trigger(“submit”); /可以替換為:$(“#regForm”).submit(); ); );1.5.3 綁定活動事件 語法:live(type , fn); type-事件類型;fn-函數。1.6 jQuery效果1.6.1 顯示隱藏效果 1)顯示效果語法:sh

24、ow(speed , callback); speed:動畫時長(毫秒),取值有:slow、fast、normal。 callback:指定的回調函數(動畫執行完畢,執行函數)。2)隱藏效果語法:hide(speed , callback);1.6.2 滑動效果原理:改變對象的高度、透明度及顯示狀態。1)向上滑動效果:slideUp(speed , callback);2)向下滑動效果:slideDown(speed , callback);1.6.3 淡入淡出效果1)淡入效果語法:fadeIn(speed , callback);2)淡出效果語法:fadeOut(speed , callba

25、ck);1.6.4 自定義動畫語法:animate(params , duration , callback ); params:要實現的最終狀態,指css效果。n Json對象:font-size:16px , duration:執行動畫所用的時間(毫秒)。 callback:執行完動畫之后要執行的函數。1.7 jQuery Ajax請求1.7.1 $.post( )方法語法:$.post(url , data , callback); url:用戶要請求的頁面地址。 data:要發送的數據。 執行完Ajax請求后要回調的函數。1.7.2 其他方法 $.get(url , data , ca

26、llback); $.load(url , data , callback); $.getJSON(url , data , callback); $.getScript(url , callback); $.ajax(options)。第二章 Struts2基礎2.1 Struts2簡介Struts2是基于WebWork和Struts 1的MVC框架,優點: 架構清晰,使開發者只關注業務邏輯實現即可; 提供了豐富的標簽,大大提高了開發效率; 提供頁面導航,通過配置文件把握整個系統各個部分之間的聯系,便于后去維護; 不在依賴Servlet API,便于測試。2.2 搭建Struts2開發環境2

27、.2.1 下載Struts2網址:. apps:包含了基于Struts2的事例應用。 docs:幫組文檔。 lib:核心類庫和第三方插件類庫(jar包)。 src:源代碼2.2.3 搭建Struts2開發環境的步驟1)在項目中導入Struts2必須jar包: commons-:Struts文件的上傳和下載。 commons-io-2.0.1.jar:文件讀取。 commons-lang3-3.1.jar:為java.lang包提供擴展。 freemarker-2.3.19.jar:模板引擎。 ognl-3.0.5.jar:支持OGNL表達式。 Struts2-core-.jar:

28、Struts2核心包。 xwork-core-.jar:xwork核心包。 Javassist-3.11.0.GA.jar:分析、編輯和創建Java字節碼的類庫。2)修改web.xml配置文件。(節點下)Struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterStruts2/*3)添加struts.xml配置文件到src目錄下2.3 Action類的實現方法1)使用普通的Java類,編寫public String execute()方法。2)實現Action接口,實現execute(

29、)方法。3)繼承ActionSupport類,重寫execute()方法。有點: 不需要強制實現execute()方法。 自帶驗證方法validate().2.4 Action接收參數的三種實現方式1)屬性方式接收參數。 在Action中定義屬性來接收客戶端上傳的參數,并提供getter和setter方法,jsp頁面中用屬性名表示2)JavaBean方式接收參數 用java實體類封裝屬性信息,在Action中定義實體類對象為屬性,并提供gtter和setter方法,jsp頁面用 對象.屬性名。3)ModelDriven方式接收參數 用java實體類封裝屬性信息,在Action中實現ModelD

30、riven接口,實例化實體類,調用getModel()方法,返回實體類對象,jsp頁面直接用屬性名。2.5 的配置1)result的name屬性 SUCCESS:Action執行成功,顯示結果視圖給用戶。 NONE:Action執行成功,不顯示結果視圖給用戶。 ERROR:Action執行失敗,顯示錯誤頁面給用戶。 INPUT:執行Action需要更多的輸入信息,回到INPUT對應的頁面。 LOGIN:因用戶沒有正確登錄而沒有正確執行,將返回改登錄試圖。2)result的type屬性 dispatcher:請求轉發到指定的URL。 redirect:請求重定向到指定的URL。 redirect

31、Action:請求重定向到指定的Action。 chain:Action鏈式處理,請求轉發到指定的Action。 json:實現Ajax時,返回JSON對象。2.6 全局結果配置/login.jsp第三章OGNL和Struts2標簽3.1 訪問session作用域的三種方法3.1.1 使用ActionContext訪問Servlet APIMap session=ActionContext.getContext().getSession();3.1.2 以IoC方式訪問Servlet API3.1.3 以耦合方式訪問Servlet APIHttpSession session=ServletA

32、ctionContext.getRequest().getSession();3.2 OGNL表達式 導入taglib指令: 在頁面中獲取并輸入Action屬性: 在頁面中獲取并輸出session中保存的數據: OGNL表達式具有以下功能和特點:l 能存取對象的屬性,也能調用對象的方法。l 能訪問靜態方法、靜態屬性。l 能訪問值棧及Stack Context。l 能操作集合對象。l 支持賦值、運算操作、字段類型轉化。3.3 Struts2標簽3.1.1數據標簽 添加taglib指令: 主要作用是對各種數據訪問的相關功能1):用來輸出值棧和Stack Context中所有能訪問的值。 value

33、:用來獲取值的OGNL表達式。(輸出字符串) defualt:默認輸出內容。 escapeHtml:是否轉義HTML,默認取值為true。2)會在頁面生成一個鏈接,單擊這個鏈接可以查看值棧和Stack Context中所能訪問的值,常用于程序排錯。3):用于格式化輸出一個日期。 name:被格式化的值,必須設置,本身是一個OGNL表達式。 format:用于指定日期顯示的格式,如:yyyy-MM-dd HH:mm:ss。 4):可以對設置的表達式求值,并將結果賦值給特定作用域的某個變量,簡單的說,就是定義一個變量,并賦值。 var:變量名。 value:設置給變量的值,可以是常量和OGNL表達

34、式。 scope:變量的生存周期。 5):用來生成一個URL var:該URL的引用名稱,如果指定這個屬性,則不會再頁面生成字符串。 action:要訪問的Action的名稱。 value:要訪問的目標,不過不提供action,就用value作為URL的地址值。6):用來生成HTML的標簽。百度 href可以是字符串常量,也可以是OGNL表達式。7):用來為其他標簽添加參數化設置。8):可以把其他頁面包含到當前頁面上3.1.2 控制標簽 主要用來完成流程控制1)、和 =90” 尖子生 =60” /普通學生 差生2):主要用于對集合實現循環訪問功能。 value:被循環訪問的集合,OGNL表達式

35、。 var:變量名稱,用來引用當前循環訪問的集合元素。 status:返回當前循環的各種信息。u count:集合含有多少個對象。u index:正在循環的這一項的索引。u even:當前遍歷到的對象是否處于列表的偶數索引位置。u odd:當前遍歷到的對象是否處于列表的奇數索引位置。3.1.3 UI標簽 用來生成UI界面,或者為Web提供某些功能支持。基于模板和主題。1):對應HTML的,用于向服務器端提交數據。 name:表單的名稱。 action:處理改表單數據的URL。 method:提交方式。2):單行文本框。 name:文本框名稱。 value:文本框中顯示的文字。 maxlengt

36、h:文本框中的最大字符數。 readonly:是否為只讀。3):多行文本域。 name:文本域名稱。 value:文本域中顯示的文字。 cols:文本域的寬度,以字符數表示。 rows:文本域的高度,以字符行數表示。 readonly:是否為只讀。4):提交表單按鈕。 value:按鈕上顯示的文字。5):用于生成一個下拉框。 name:下拉框名稱。 list:生成下拉框的集合。 listKey:生成下拉框的value屬性。 listValue:生成下拉項顯示的文字。 6):生成兩個聯動的下拉框。 name/doubleName:第一個/第二個下拉框的名稱。 list/doubleList:生成

37、第一個/第二個下拉框集合。 listKey/doubleListKey:生成第一個/第二個下拉框的選項的value屬性。 listValue/doubleListValue:生成第一個/第二個下拉框的選項顯示的文字。3.1.4 Ajax標簽datetimepicker是一個日歷控件,使用步驟如下:1) 在項目中引入struts2-dojo-plugin-.jar。2) 導入3) 在中添加。4) 添加標簽3.4 使用ActionSupport編碼實現驗證3.4.1 在Action類的業務方法中直接驗證。Action類的execute方法中:/ 驗證用戶名if(null=user.g

38、etUserName()this.addFieldError(“erName”,”用戶名不能為空”);3.4.2 重寫validate()方法實現驗證。Overridepublic void validate()/ 驗證用戶名if(null=user.getUserName()this.addFieldError(“erName”,”用戶名不能為空”);3.4.3 使用validateXxx()方法實現驗證。/ 驗證注冊方法public void validateRegister()/ 驗證用戶名if(null=user.getUserName()this.addFieldError(“erN

39、ame”,”用戶名不能為空”);3.5 使用驗證框架實現驗證1)編寫jsp數據輸入頁面。2)編寫Action類及其配置文件。3)在與Action同級目錄下創建文件ActionName-validation.xml,其中ActionName與要驗證的Action類名相同。5) 編寫驗證規則。第四章 攔截器和文件上傳4.1 使用Java實現國際化 國際化是指應用程序運行時,可以根據客戶端中設置的國家/地區、語言的不同,而在界面上顯示不同的語言4.1.1 Java中內置的國際化支持 獲取Java所支持的地區/語言的代碼:Locale locales=Locale.getAvailableLocale

40、s ( );for(Locale locale : locales)for(Locale l : locales)/返回該語言環境的國家或地區名及代碼System.out.print(l.getDisplayCountry()+” ”+l.getCountry();/返回該語言環境的語言名稱及代碼System.out.println(l.getDisplayLanguage+” ”+l.getLanguage();4.1.2 JSP頁面的國際化1)添加語言資源文件。2) 配置資源文件的引用(兩種方式)。a) 在struts.xml中配置:b) 在perties中配置:str

41、uts.custom.i18n.resource=wdz。3)在JSP頁面輸出資源文件中的內容。4.1.3 Action類的國際化1)繼承ActionSupport。2)使用getText(String key)方法獲取資源文件內容。public String execute()addActionMessage(getText(“userName”);return SUCCESS;4.2 攔截器簡介以Action接收參數和實現數據效驗為例,簡單說明攔截器的工作原理: Struts2接收到請求后,創建Action的實例,此時Action中還沒有接收上傳的參數,也沒有對參數進行驗證。 Struts2運行名稱為params的攔截器,把請求中附帶的參數轉存到Action的屬性中。 Struts2再運行名稱為validation的攔截器,對Action屬性中的參數進行驗證。 驗證通過后。運行Action中處理業務的方法,并得到處理結果,如:SUCCESS。 Action把處理結果返回給validation攔截器,再返回給params攔截器,最后Struts2根據這個結果調用相應的試圖來展示數據。4.3 Struts2自帶的攔截器1)常用攔截器 params攔截器:負責將請求參數設置到Action類中對應的屬性中。 servletConfig攔截器:將源于Servlet API的各

溫馨提示

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

評論

0/150

提交評論