學(xué)生管理系統(tǒng)登錄模塊項(xiàng)目開發(fā)_第1頁
學(xué)生管理系統(tǒng)登錄模塊項(xiàng)目開發(fā)_第2頁
學(xué)生管理系統(tǒng)登錄模塊項(xiàng)目開發(fā)_第3頁
學(xué)生管理系統(tǒng)登錄模塊項(xiàng)目開發(fā)_第4頁
學(xué)生管理系統(tǒng)登錄模塊項(xiàng)目開發(fā)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

學(xué)生管理系統(tǒng)登錄模塊項(xiàng)目開發(fā)開發(fā)任務(wù)開發(fā)學(xué)生管理系統(tǒng)登錄子模塊完成如下功能:把登錄頁的用戶登錄信息發(fā)送到我們?cè)O(shè)計(jì)好的信息校驗(yàn)頁連接后臺(tái)數(shù)據(jù)庫,驗(yàn)證用戶的登錄信息對(duì)驗(yàn)證結(jié)果進(jìn)行服務(wù)器跳轉(zhuǎn)處理防止匿名用戶的惡意登陸使用Cookie技術(shù)保存用戶的登錄信息,使用戶不用輸入賬戶密碼直接登錄掌握From表單的發(fā)送信息方式掌握Request對(duì)象獲取用戶填寫的登錄信息掌握如何連接數(shù)據(jù)庫(兩種方法、四種數(shù)據(jù)庫)掌握如何對(duì)用戶登錄信息進(jìn)行校驗(yàn)開發(fā)重點(diǎn)熟練掌握J(rèn)DBC-ODBC連接數(shù)據(jù)庫,數(shù)據(jù)庫文件路徑的獲取深刻理解匿名惡意登錄的處理對(duì)策熟練使用Cookie存儲(chǔ)用戶的登錄信息掌握調(diào)用Cookie中存儲(chǔ)的用戶信息的相關(guān)方法開發(fā)難點(diǎn)項(xiàng)目前臺(tái)界面設(shè)計(jì)復(fù)習(xí)項(xiàng)目前臺(tái)界面設(shè)計(jì)復(fù)習(xí)套用現(xiàn)有模板進(jìn)行設(shè)計(jì)(企業(yè)開發(fā)模板最好)使用FireworksCS4進(jìn)行切片設(shè)計(jì)使用DreamweaverCS4進(jìn)行布局設(shè)計(jì)使用IEtest軟件進(jìn)行多瀏覽器測(cè)試。(企業(yè)級(jí)開發(fā)必備步驟)項(xiàng)目前臺(tái)界面設(shè)計(jì)復(fù)習(xí)前臺(tái)界面兩個(gè)細(xì)節(jié)的處理:如何將模板中文字、圖像進(jìn)行移位處理背景圖像的漸進(jìn)色處理(切片的選取、背景色的設(shè)置、repeat參數(shù)的使用)項(xiàng)目前臺(tái)界面設(shè)計(jì)復(fù)習(xí)經(jīng)過以上分析,基本上可以得到一個(gè)比較“正?!钡捻撁?。希望同學(xué)們注意的是:前臺(tái)界面設(shè)計(jì)的美工很重要,內(nèi)容多而繁雜,有些操作甚至遠(yuǎn)遠(yuǎn)超出了我們的課程范圍,本課程主要講解的后臺(tái)程序的開發(fā),要努力學(xué)習(xí)后臺(tái)處理機(jī)制的設(shè)計(jì)。在公司中一個(gè)正規(guī)的WEB項(xiàng)目開發(fā),必須有三類人員共同協(xié)作才能完成:前臺(tái)美工人員(藝術(shù)設(shè)計(jì)專業(yè)人員:對(duì)色彩敏感)后臺(tái)程序開發(fā)人員(主要負(fù)責(zé)內(nèi)部處理機(jī)制和服務(wù)器處理)數(shù)據(jù)庫設(shè)計(jì)人員(負(fù)責(zé)關(guān)系型數(shù)據(jù)庫的設(shè)計(jì))本次項(xiàng)目開發(fā),同學(xué)們將會(huì)將這三類人員的角色全部體驗(yàn)一遍。后臺(tái)登陸流程圖login.jsp輸入帳號(hào)、密碼。Logincheck.jsp進(jìn)行驗(yàn)證根據(jù)驗(yàn)證結(jié)果進(jìn)行轉(zhuǎn)發(fā)Login.jsp(用戶登錄頁)Logincheck.jsp(用戶登錄信息校驗(yàn)頁)登錄成功頁DBServer登錄失敗頁根據(jù)處理結(jié)果進(jìn)行跳轉(zhuǎn)

后臺(tái)程序開發(fā)-----發(fā)送用戶登錄信息使用Form表單提交用戶的登錄信息:(login.jsp)<formid=“l(fā)ogform”name=“l(fā)ogform”method=“post”action=“l(fā)ogincheck.jsp”>

<inputtype="text"name="log_user"/><inputtype="text"name="log_pass"/>

</form>

使用request.getParameter()方法獲取用戶填寫的登錄信息(logincheck.jsp)Stringname=request.getParameter("log_user");Stringpass=request.getParameter("log_pass");后臺(tái)程序開發(fā)----連接數(shù)據(jù)庫操作數(shù)據(jù)庫連接一般有3種方法:利用JDBC-ODBC(第一類)專用驅(qū)動(dòng)程序(第二類)利用數(shù)據(jù)庫廠家提供的函數(shù)庫,直接編程。(很少使用)連接效率增高JDBC是Java數(shù)據(jù)庫連接技術(shù)的簡(jiǎn)稱,提供連接各種常用數(shù)據(jù)庫的能力。是一種用于執(zhí)行SQL語句的JavaAPI,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一的訪問接口。在這里我們介紹一種通用的數(shù)據(jù)庫連接方法:連接四種數(shù)據(jù)庫(ACCESS、MYSQL、SQLSERVER、ORACLE)為什么不直接使用ODBCODBC不適合在Java中直接使用:ODBC是一個(gè)C語言實(shí)現(xiàn)的API,從Java中調(diào)用本地的C程序在安全性、完整性、健壯性方面都有缺點(diǎn)。無法精確實(shí)現(xiàn)從ODBCAPI到JavaAPI的翻譯(語言的限制:指針支持)。ODBC很難學(xué)不再是純JavaJDBC連接數(shù)據(jù)庫的兩大類基本操作JDBC驅(qū)動(dòng)由數(shù)據(jù)庫廠商提供在個(gè)人開發(fā)與測(cè)試中,可以使用JDBC-ODBC橋連方式在生產(chǎn)型開發(fā)中,推薦使用純Java驅(qū)動(dòng)方式DBServerDBServerJDBCAPIJDBCDriverManager純Java驅(qū)動(dòng)JDBC–ODBC橋Java應(yīng)用程序ODBCJDBC程序的工作原理JDBCAPI提供者:sun公司(Oracle公司)內(nèi)容:供程序員調(diào)用的接口與類,集成在java.sql和javax.sql包中,如:DriverManager類Connection接口Statement接口ResultSet接口DriverManager提供者:sun公司(Oracle公司)作用:載入各種不同的JDBC驅(qū)動(dòng)JDBC驅(qū)動(dòng)提供者:數(shù)據(jù)庫廠商作用:負(fù)責(zé)連接各種不同的數(shù)據(jù)庫SqlServerOracleJDBCAPIJDBCDriverManagerJDBC驅(qū)動(dòng)JDBC驅(qū)動(dòng)Java應(yīng)用程序JDBCAPIJDBCAPI可做三件事:與數(shù)據(jù)庫建立連接、執(zhí)行SQL語句、處理結(jié)果ConnectionDriverManagerPreparedStatementResultSet

DriverManager:依據(jù)數(shù)據(jù)庫的不同,管理JDBC驅(qū)動(dòng)

Connection:負(fù)責(zé)連接數(shù)據(jù)庫并擔(dān)任傳送數(shù)據(jù)的任務(wù)

PreparedStatement:由Connection產(chǎn)生、負(fù)責(zé)執(zhí)行SQL語句

ResultSet:負(fù)責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果客戶端數(shù)據(jù)庫服務(wù)器1234JDBC-ODBC方式連接Access數(shù)據(jù)庫橋連將對(duì)JDBCAPI的調(diào)用,轉(zhuǎn)換為對(duì)另一組數(shù)據(jù)庫連接API的調(diào)用優(yōu)點(diǎn):可以訪問所有ODBC可以訪問的數(shù)據(jù)庫缺點(diǎn):執(zhí)行效率低、功能不夠強(qiáng)大(Access例外)JDBC-ODBC橋Java應(yīng)用程序JDBCAPIODBCAPIODBC層DBServer課本上介紹的方式使用JDBC-ODBC進(jìn)行橋連1、在控制面板ODBC數(shù)據(jù)源系統(tǒng)DSN中配置數(shù)據(jù)源2、編程,通過橋連方式與數(shù)據(jù)庫建立連接------語法------Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:DataBase","","");JDBC-ODBC橋驅(qū)動(dòng)類的完全限定類名數(shù)據(jù)源名稱本項(xiàng)目推薦使用的方式使用JDBC-ODBC進(jìn)行橋連1、定義基本的數(shù)據(jù)庫驅(qū)動(dòng)信息與數(shù)據(jù)庫登錄信息2、編程,數(shù)據(jù)庫建立連接------語法------publicstaticfinalStringDBDRIVER="sun.jdbc.odbc.JdbcOdbcDriver";publicstaticStringDBURL="jdbc:odbc:Driver={MicrosoftAccessDriver(*.mdb)};DBQ=";publicstaticfinalStringDBUSER="";publicstaticfinalStringDBPASS="";Class.forName(DBDRIVER);conn=DriverManager.getConnection(URL,DBUSER,DBPASS);DBURL+真實(shí)的路徑本項(xiàng)目推薦使用的方式使用JDBC-ODBC進(jìn)行橋連------語法------publicstaticfinalStringDBDRIVER="sun.jdbc.odbc.JdbcOdbcDriver";publicstaticStringDBURL="jdbc:odbc:Driver={MicrosoftAccessDriver(*.mdb)};DBQ=";publicstaticfinalStringDBUSER="";publicstaticfinalStringDBPASS="";Class.forName(DBDRIVER);conn=DriverManager.getConnection(URL,DBUSER,DBPASS);Stringdbpath=application.getRealPath("\\Database\\Database.mdb");StringURL=DBURL+dbpath;DBURL+真實(shí)的路徑JDBC驅(qū)動(dòng)連接數(shù)據(jù)庫純Java驅(qū)動(dòng)由JDBC驅(qū)動(dòng)直接訪問數(shù)據(jù)庫優(yōu)點(diǎn):100%Java,快又可跨平臺(tái)缺點(diǎn):訪問不同的數(shù)據(jù)庫需要下載專用的JDBC驅(qū)動(dòng)JDBC

驅(qū)動(dòng)Java應(yīng)用程序JDBCAPIDBServerJDBC驅(qū)動(dòng)連接數(shù)據(jù)庫使用純Java驅(qū)動(dòng)方式進(jìn)行直連1、下載數(shù)據(jù)庫廠商提供的驅(qū)動(dòng)程序包2、將驅(qū)動(dòng)程序包引入工程中3、編程,通過純Java驅(qū)動(dòng)方式與數(shù)據(jù)庫建立連接4、基本書寫格式與JDBC-ODBC方式完全一致------語法------publicstaticfinalStringDBDRIVER=“………….";publicstaticfinalStringDBURL=“………………..”publicstaticfinalStringDBUSER=“………………";publicstaticfinalStringDBPASS=“………………...";Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);JDBC驅(qū)動(dòng)連接Oracle數(shù)據(jù)庫使用純Java驅(qū)動(dòng)方式進(jìn)行直連1、下載數(shù)據(jù)庫廠商提供的驅(qū)動(dòng)程序包ojdbc12.jar2、將驅(qū)動(dòng)程序包引入工程中3、編程,通過純Java驅(qū)動(dòng)方式與數(shù)據(jù)庫建立連接------語法------publicstaticfinalStringDBDRIVER=“oracle.jdbc.driver.OracleDriver";publicstaticfinalStringDBURL=“jdbc:oracle:thin:@localhost:1521:huyp”;publicstaticfinalStringDBUSER=“數(shù)據(jù)庫登錄用戶名(默認(rèn)scott)";publicstaticfinalStringDBPASS=“數(shù)據(jù)庫登錄用戶密碼(默認(rèn)tiger)";Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);IP端口號(hào)用戶名JDBC驅(qū)動(dòng)連接MYSQL數(shù)據(jù)庫使用純Java驅(qū)動(dòng)方式進(jìn)行直連1、下載數(shù)據(jù)庫廠商提供的驅(qū)動(dòng)程序包2、將驅(qū)動(dòng)程序包引入工程中3、編程,通過純Java驅(qū)動(dòng)方式與數(shù)據(jù)庫建立連接------語法------

";publicstaticfinalStringDBURL=“jdbc:mysql://localhost:3306/數(shù)據(jù)庫名稱”;publicstaticfinalStringDBUSER=“數(shù)據(jù)庫登錄用戶名";publicstaticfinalStringDBPASS=“數(shù)據(jù)庫登錄用戶密碼";Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);六步使用JDBC加載JDBCDriver獲取與數(shù)據(jù)庫Connection創(chuàng)建PreparedStatement對(duì)象執(zhí)行SQL語句處理ResultSet(針對(duì)查詢語句)關(guān)閉ConnectionJDBC程序編寫過程JDBC程序的工作模板try{Class.forName(JDBC驅(qū)動(dòng)類);}catch(ClassNotFoundExceptione){System.out.println("無法找到驅(qū)動(dòng)類");}try{Connectioncon=DriverManager.getConnection(JDBCURL,數(shù)據(jù)庫用戶名,密碼);

Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");

while(rs.next()){intx=rs.getInt("a");Strings=rs.getString("b");floatf=rs.getFloat("c");}con.close();}catch(SQLExceptione){e.printStackTrace();}獲得數(shù)據(jù)庫連接發(fā)送Sql語句處理結(jié)果注冊(cè)JDBC驅(qū)動(dòng)JDBCURL用來標(biāo)識(shí)數(shù)據(jù)庫必須處理的異常釋放資源必須處理的異常1)加載JDBCDriver使用DriverManager

類加載JDBCDriverDriverManager

類是

JDBC

的管理層,作用于用戶和驅(qū)動(dòng)程序之間,它跟蹤可用的驅(qū)動(dòng)程序,并在數(shù)據(jù)庫和相應(yīng)驅(qū)動(dòng)程序之間建立連接.加載

Driver

類的方式: Class.forName(“com.db.Driver");所有

Driver

類都包含一個(gè)靜態(tài)部分,它創(chuàng)建該類的實(shí)例,然后在加載該實(shí)例時(shí)在DriverManager類中進(jìn)行注冊(cè)DriverManager

類包含一列

Driver

類,它們已通過調(diào)用方法DriverManager.registerDriver對(duì)自己進(jìn)行了注冊(cè)TestJDBC1.javaMain:try{//1Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}catch(ClassNotFoundExceptione){e.printStackTrace();//若驅(qū)動(dòng)沒找到,則怎么辦}TestJDBC1.javaMain:Connectionconn=null;//2Stringurl="jdbc:sqlserver://:1433;databasename=test";conn=DriverManager.getConnection(url,"root","");3)創(chuàng)建Statement對(duì)象Statement對(duì)象用于將SQL語句發(fā)送到數(shù)據(jù)庫中。存在三種Statement對(duì)象:StatementPreparedStatement(從Statement繼承而來)CallableStatement(從PreparedStatement繼承而來)Statement對(duì)象由Connection的createStatement()方法創(chuàng)建:TestJDBC1.javaMain://3Statementst=conn.createStatement();4)執(zhí)行SQL語句Statement接口的常用方法:用于產(chǎn)生單個(gè)結(jié)果集的語句,例如SELECT語句。publicResultSetexecuteQuery(Stringsql)throwsSQLException用于執(zhí)行INSERT,UPDATE或DELETE語句以及SQLDDL語句,例如CREATETABLE和DROPTABLE。該方法返回一個(gè)整數(shù),指示受影響的行數(shù)。對(duì)于CREATETABLE或DROPTABLE等不操作行的語句,返回值總為零。publicintexecuteUpdate(Stringsql)throwsSQLException關(guān)閉Statement對(duì)象publicvoidclose()throwsSQLExceptionTestJDBC1.javaMain://4Stringsql="select*fromloginuser";ResultSetrs=st.executeQuery(sql);//或者執(zhí)行更新,刪除,插入數(shù)據(jù)Stringsql=“insertintoemailuservalues(‘a(chǎn)aa’,’ccc’)";introw=st.executeUpdate(sql);5)處理返回結(jié)果(ResultSet)ResultSet包含符合SQL語句條件的所有行,并且它通過一套getXxx()方法提供了對(duì)這些行中數(shù)據(jù)的訪問。取得當(dāng)前行中第columnIndex列的整數(shù)的值。intgetInt(intcolumnIndex)取得當(dāng)前行中列名為columnName的整數(shù)的值。intgetInt(StringcolumnName)取得當(dāng)前行中第columnIndex列的字符串的值。StringgetString(intcolumnIndex)取得當(dāng)前行中列名為columnName的字符串的值。StringgetString(StringcolumnName)ResultSet接口其他常用方法ResultSet維護(hù)指向其當(dāng)前數(shù)據(jù)行的光標(biāo),光標(biāo)向下移動(dòng)一行的方法:booleannext()關(guān)閉ResultSet對(duì)象voidclose()TestJDBC1.javaMain://5while(rs.next()){System.out.println(rs.getInt(1)+"---"+rs.getString("username")+"---"+rs.getString("userpass"));}6)關(guān)閉連接按照創(chuàng)建對(duì)象相反的順序關(guān)閉連接rs.close();//若是更新就沒有這一步st.close();conn.close();使用Statement插入數(shù)據(jù)2-1——代碼片斷——publicstaticvoidmain(String[]args){Connectioncon=null;Statementst=null;try{StringstrSql="insertintoemailuservalues('軍事','網(wǎng)管')";try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}catch(ClassNotFoundExceptione){System.out.println("無法找到驅(qū)動(dòng)類");}con=DriverManager.getConnection("jdbc:sqlserver://:1433;database=test","sa",“602");st=con.createStatement();st.executeUpdate(strSql);st.close();}catch(SQLExceptionsqlE){sqlE.printStackTrace();}finally{con.close();}}建立連接執(zhí)行sql語句數(shù)據(jù)庫連接使用完畢,及時(shí)釋放載入JDBC驅(qū)動(dòng)類異常處理異常處理綜合案例在servlet中演示第一步:注冊(cè)頁面(register.jsp)RegisterServlet

實(shí)現(xiàn)插入值的操作第二步:查看所有用戶信息。通過超鏈接---SearchAllServlet

實(shí)現(xiàn)查詢功能

案例小結(jié)發(fā)現(xiàn)一些問題:

1:動(dòng)態(tài)參數(shù)的處理statement較麻煩

2:連接數(shù)據(jù)庫的代碼類似,重復(fù)了。

3:想把結(jié)果返回到頁面太麻煩。

------不能到指定頁面;

------使用out.print(),構(gòu)建頁面太復(fù)雜

小結(jié)2在使用純Java驅(qū)動(dòng)方式進(jìn)行數(shù)據(jù)庫連接時(shí),如果程序在運(yùn)行時(shí)拋出異常:

:Nosuitabledriverfoundforjdbc:microsoft:sqlserver://localhost:1433;DatabaseName=news

那么出錯(cuò)的原因是什么?如何解決?請(qǐng)單獨(dú)建立一個(gè)類ConnectionManager,專門負(fù)責(zé)建立數(shù)據(jù)庫連接、以及關(guān)閉連接,并思考這樣做帶來的好處是什么找不到合適的驅(qū)動(dòng)類,原因:沒有把數(shù)據(jù)庫驅(qū)動(dòng)包引入工程好處在于:既便于管理、又可以提高代碼的復(fù)用性完整代碼實(shí)現(xiàn)PreparedStatementPreparedStatement接口(預(yù)編譯的SQL語句)Statement接口當(dāng)

SQL

語句將運(yùn)行多次時(shí),盡量使用PreparedStatement,以便提高運(yùn)行效率當(dāng)sql語句中的某個(gè)值不固定時(shí),使用PreparedStatementPreparedStatement接口繼承Statement接口PreparedStatement比普通的Statement對(duì)象使用起來更加靈活,更有效率PreparedStatementpst=conn.preparedStatement(sql);PreparedStatementSql的寫法---不固定的值用“?”代替例如insertintoemailuser(name,pass)values(?,?)select*fromemailuserwhereuserid=?為“?”設(shè)置值

pst.setInt(序號(hào),值);------序號(hào)指的是sql中第幾個(gè)”?”號(hào)

pst.setString(序號(hào),值);

pst.setDate(序號(hào),值);常用方法

ResultSetexecuteQuery()intexecuteUpdate()使用PreparedStatement插入數(shù)據(jù)publicclassNewsFirstTitleDB2{publicstaticvoidmain(String[]args){Connectioncon=null;PreparedStatementpst=null;try{con=ConnectionManager.getConnection();StringstrSql="insertintoemailuservalues(?,?,?)";pst=con.prepareStatement(strSql);pst.setInt(1,1);pst.setString(2,"軍事");pst.setString(3,"管理員");pStatement.executeUpdate();Pst.close();}catch(SQLExceptionsqlE){sqlE.printStackTrace();}finally{Con.close();}}}參數(shù)化的查詢語句設(shè)置每個(gè)

?

參數(shù)的值,列號(hào)從1開始執(zhí)行sql語句使用PreparedStatement刪除數(shù)據(jù)publicclassNewsFirstTitleDB3{publicstaticvoidmain(String[]args){Connectioncon=null;PreparedStatementpStatement=null;try{con=ConnectionManager.getConnection();StringstrSql="deletefromemailuserwhereusername=?";pStatement=con.prepareStatement(strSql);pStatement.setString(1,"軍事");introw=pStatement.executeUpdate();System.out.println(“成功刪除了"+row+"行數(shù)據(jù)!");Pst.close();}catch(SQLExceptionsqlE){sqlE.printStackTrace();}finally{con.close();}}}返回刪除記錄的行數(shù)使用PreparedStatement更新數(shù)據(jù)publicclassNewsFirstTitleDB4{publicstaticvoidmain(String[]args){Connectioncon=null;PreparedStatementpStatement=null;try{con=ConnectionManager.getConnection();StringSql="updateemailusersetusername=?whereuserid=?";pStatement=con.prepareStatement(Sql);pStatement.setString(1,"編輯");pStatement.setInt(2,1);introw=pStatement.executeUpdate();System.out.println("成功更新了"+row+"行數(shù)據(jù)!");Pst.close();}catch(SQLExceptionsqlE){sqlE.printStackTrace();}finally{Con.close();}}}返回更新記錄的行數(shù)小結(jié)3使用PreparedStatement語句執(zhí)行如下操作:刪除表emailuser中所有userid小于10的記錄,并在控制臺(tái)輸出刪除記錄的行數(shù)完整代碼實(shí)現(xiàn)使用PreparedStatement查詢數(shù)據(jù)2-1publicclassNewsFirstTitleDB5{publicstaticvoidmain(String[]args){intid=0;Connectioncon=null;PreparedStatementpstmt=null;ResultSetresSet=null;try{con=ConnectionManager.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論