




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計(jì)外文文獻(xiàn)及其譯文學(xué)生姓名學(xué)號所在學(xué)院專業(yè)班級計(jì)算機(jī)科學(xué)與技術(shù)1201班2016年6月12日ANOVERVIEWOFSERVLETANDJSPTECHNOLOGYGildasAvoineandPhilippeOechslinEPFL,Lausanne,Switzerland1.1AServlet'sJobServletsareJavaprogramsthatrunonWeborapplicationservers,actingasamiddlelayerbetweenrequestscomingfromWebbrowsersorotherclientsanddatabasesorapplicationsontheserver.Theirjobistoperformthefollowingtasks,asillustratedinFigure1-1.Figure1-11.Readtheexplicitdatasentbytheclient.TheendusernormallyentersthisdatainanHTMLformonaWebpage.However,thedatacouldalsocomefromanappletoracustomclientprogram.2.Readtheimplicitrequestdatasentbythebrowser.Figure1-1showsasinglearrowgoingfromtheclienttotheWebserver(thelayerwhereservletsandJSPexecute),buttherearereallytwovarietiesofdata:theexplicitdatathattheenduserentersinaformandthebehind-the-scenesinformation.Bothvarietiesarecritical.Theinformationincludescookies,informationaboutmediatypesandcompressionschemesthebrowserunderstands,andsoon.3.Generatetheresults.Thisprocessmayrequiretalkingtoadatabase,executinganRMIorEJBcall,invokingaWebservice,orcomputingtheresponsedirectly.Yourrealdatamaybeinarelationaldatabase.Fine.Butyourdatabaseprobablydoesn'tspeakorreturnresultsinHTML,sotheWebbrowsercan'ttalkdirectlytothedatabase.Evenifitcould,forsecurityreasons,youprobablywouldnotwantitto.Thesameargumentappliestomostotherapplications.YouneedtheWebmiddlelayertoextracttheincomingdatafromthestream,talktotheapplication,andembedtheresultsinsideadocument.4.Sendtheexplicitdata(i.e.,thedocument)totheclient.Thisdocumentcanbesentinavarietyofformats,includingtext(HTMLorXML),binary(GIFimages),orevenacompressedformatlikegzipthatislayeredontopofsomeotherunderlyingformat.But,HTMLisbyfarthemostcommonformat,soanimportantservlet/JSPtaskistowraptheresultsinsideofHTML.5.Sendtheimplicitresponsedata.Figure1-1showsasinglearrowgoingfromtheWebmiddlelayer(theservletorJSPpage)totheclient.But,therearereallytwovarietiesofdatasent:thedocumentitselfandthebehind-the-scenesinformation.Again,bothvarietiesarecriticaltoeffectivedevelopment.Sendingresponsedatainvolvestellingthebrowserorotherclientwhattypeofdocumentisbeingreturned(e.g.,HTML),settingcookiesandcachingparameters,andothersuchtasks.1.2WhyBuildWebPagesDynamically?manyclientrequestscanbesatisfiedbyprebuiltdocuments,andtheserverwouldhandletheserequestswithoutinvokingservlets.Inmanycases,however,astaticresultisnotsufficient,andapageneedstobegeneratedforeachrequest.ThereareanumberofreasonswhyWebpagesneedtobebuilton-the-fly:1.TheWebpageisbasedondatasentbytheclient.Forinstance,theresultspagefromsearchenginesandorder-confirmationpagesatonlinestoresarespecifictoparticularuserrequests.Youdon'tknowwhattodisplayuntilyoureadthedatathattheusersubmits.Justrememberthattheusersubmitstwokindsofdata:explicit(i.e.,HTMLformdata)andimplicit(i.e.,requestheaders).Eitherkindofinputcanbeusedtobuildtheoutputpage.Inparticular,itisquitecommontobuildauser-specificpagebasedonacookievalue.2.TheWebpageisderivedfromdatathatchangesfrequently.Ifthepagechangesforeveryrequest,thenyoucertainlyneedtobuildtheresponseatrequesttime.Ifitchangesonlyperiodically,however,youcoulddoittwoways:youcouldperiodicallybuildanewWebpageontheserver(independentlyofclientrequests),oryoucouldwaitandonlybuildthepagewhentheuserrequestsit.Therightapproachdependsonthesituation,butsometimesitismoreconvenienttodothelatter:waitfortheuserrequest.Forexample,aweatherreportornewsheadlinessitemightbuildthepagesdynamically,perhapsreturningapreviouslybuiltpageifthatpageisstilluptodate.3.TheWebpageusesinformationfromcorporatedatabasesorotherserver-sidesources.Iftheinformationisinadatabase,youneedserver-sideprocessingeveniftheclientisusingdynamicWebcontentsuchasanapplet.Imagineusinganappletbyitselfforasearchenginesite:"Downloading50terabyteapplet,pleasewait!"Obviously,thatissilly;youneedtotalktothedatabase.GoingfromtheclienttotheWebtiertothedatabase(athree-tierapproach)insteadoffromanappletdirectlytoadatabase(atwo-tierapproach)providesincreasedflexibilityandsecuritywithlittleornoperformancepenalty.Afterall,thedatabasecallisusuallytherate-limitingstep,sogoingthroughtheWebserverdoesnotslowthingsdown.Infact,athree-tierapproachisoftenfasterbecausethemiddletiercanperformcachingandconnectionpooling.Inprinciple,servletsarenotrestrictedtoWeborapplicationserversthathandlerequestsbutcanbeusedforothertypesofserversaswell.Forexample,servletscouldbeembeddedinFTPormailserverstoextendtheirfunctionality.And,aservletAPIforSIP(SessionInitiationProtocol)serverswasrecentlystandardized(see:///en/jsr/detail?id=116).Inpractice,however,thisuseofservletshasnotcaughton,andwe'llonlybediscussingservlets.1.3TheAdvantagesofServletsOver"Traditional"CGIJavaservletsaremoreefficient,easiertouse,morepowerful,moreportable,safer,andcheaperthantraditionalCGIandmanyalternativeCGI-liketechnologies.1.EfficientWithtraditionalCGI,anewprocessisstartedforeachrequest.IftheCGIprogramitselfisrelativelyshort,theoverheadofstartingtheprocesscandominatetheexecutiontime.Withservlets,theJavavirtualmachinestaysrunningandhandleseachrequestwithalightweightJavathread,notaheavyweightoperatingsystemprocess.Similarly,intraditionalCGI,ifthereareNrequeststothesameCGIprogram,thecodefortheCGIprogramisloadedintomemoryNtimes.Withservlets,however,therewouldbeNthreads,butonlyasinglecopyoftheservletclasswouldbeloaded.Thisapproachreducesservermemoryrequirementsandsavestimebyinstantiatingfewerobjects.Finally,whenaCGIprogramfinisheshandlingarequest,theprogramterminates.Thisapproachmakesitdifficulttocachecomputations,keepdatabaseconnectionsopen,andperformotheroptimizationsthatrelyonpersistentdata.Servlets,however,remaininmemoryevenaftertheycompletearesponse,soitisstraightforwardtostorearbitrarilycomplexdatabetweenclientrequests.2.ConvenientServletshaveanextensiveinfrastructureforautomaticallyparsinganddecodingHTMLformdata,readingandsettingheaders,handlingcookies,trackingsessions,andmanyothersuchhigh-levelutilities.InCGI,youhavetodomuchofthisyourself.Besides,ifyoualreadyknowtheJavaprogramminglanguage,whylearnPerltoo?You'realreadyconvincedthatJavatechnologymakesformorereliableandreusablecodethandoesVisualBasic,VBScript,orC++.Whygobacktothoselanguagesforserver-sideprogramming?3.PowerfulServletssupportseveralcapabilitiesthataredifficultorimpossibletoaccomplishwithregularCGI.ServletscantalkdirectlytotheWebserver,whereasregularCGIprogramscannot,atleastnotwithoutusingaserver-specificAPI.CommunicatingwiththeWebservermakesiteasiertotranslaterelativeURLsintoconcretepathnames,forinstance.Multipleservletscanalsosharedata,makingiteasytoimplementdatabaseconnectionpoolingandsimilarresource-sharingoptimizations.Servletscanalsomaintaininformationfromrequesttorequest,simplifyingtechniqueslikesessiontrackingandcachingofpreviouscomputations.4.PortableServletsarewrittenintheJavaprogramminglanguageandfollowastandardAPI.ServletsaresupporteddirectlyorbyapluginonvirtuallyeverymajorWebserver.Consequently,servletswrittenfor,say,MacromediaJRuncanrunvirtuallyunchangedonApacheTomcat,MicrosoftInternetInformationServer(withaseparateplugin),IBMWebSphere,iPlanetEnterpriseServer,Oracle9iAS,orStarNineWebStar.TheyarepartoftheJava2Platform,EnterpriseEdition(J2EE;see://java.sun/j2ee/),soindustrysupportforservletsisbecomingevenmorepervasive.5.InexpensiveAnumberoffreeorveryinexpensiveWebserversaregoodfordevelopmentuseordeploymentoflow-ormedium-volumeWebsites.Thus,withservletsandJSPyoucanstartwithafreeorinexpensiveserverandmigratetomoreexpensiveserverswithhigh-performancecapabilitiesoradvancedadministrationutilitiesonlyafteryourprojectmeetsinitialsuccess.ThisisincontrasttomanyoftheotherCGIalternatives,whichrequireasignificantinitialinvestmentforthepurchaseofaproprietarypackage.Priceandportabilityaresomewhatconnected.Forexample,Martytriestokeeptrackofthecountriesofreadersthatsendhimquestionsbyemail.Indiawasnearthetopofthelist,probably#2behindtheU.S.MartyalsotaughtoneofhisJSPandservlettrainingcourses(see://courses.coreservlets/)inManila,andtherewasgreatinterestinservletandJSPtechnologythere.Now,whyareIndiaandthePhilippinesbothsointerested?Wesurmisethattheansweristwofold.First,bothcountrieshavelargepoolsofwell-educatedsoftwaredevelopers.Second,bothcountrieshave(orhad,atthattime)highlyunfavorablecurrencyexchangeratesagainsttheU.S.dollar.So,buyingaspecial-purposeWebserverfromaU.S.companyconsumedalargepartofearlyprojectfunds.But,withservletsandJSP,theycouldstartwithafreeserver:ApacheTomcat(eitherstandalone,embeddedintheregularApacheWebserver,orembeddedinMicrosoftIIS).Oncetheprojectstartstobecomesuccessful,theycouldmovetoaserverlikeCauchoResinthathadhigherperformanceandeasieradministrationbutthatisnotfree.ButnoneoftheirservletsorJSPpageshavetoberewritten.Iftheirprojectbecomesevenlarger,theymightwanttomovetoadistributed(clustered)environment.Noproblem:theycouldmovetoMacromediaJRunProfessional,whichsupportsdistributedapplications(Webfarms).Again,noneoftheirservletsorJSPpageshavetoberewritten.Iftheprojectbecomesquitelargeandcomplex,theymightwanttouseEnterpriseJavaBeans(EJB)toencapsulatetheirbusinesslogic.So,theymightswitchtoBEAWebLogicorOracle9iAS.Again,noneoftheirservletsorJSPpageshavetoberewritten.Finally,iftheirprojectbecomesevenbigger,theymightmoveitoffoftheirLinuxboxandontoanIBMmainframerunningIBMWebSphere.Butonceagain,noneoftheirservletsorJSPpageshavetoberewritten.6.SecureOneofthemainsourcesofvulnerabilitiesintraditionalCGIstemsfromthefactthattheprogramsareoftenexecutedbygeneral-purposeoperatingsystemshells.So,theCGIprogrammermustbecarefultofilteroutcharacterssuchasbackquotesandsemicolonsthataretreatedspeciallybytheshell.Implementingthisprecautionisharderthanonemightthink,andweaknessesstemmingfromthisproblemareconstantlybeinguncoveredinwidelyusedCGIlibraries.AsecondsourceofproblemsisthefactthatsomeCGIprogramsareprocessedbylanguagesthatdonotautomaticallycheckarrayorstringbounds.Forexample,inCandC++itisperfectlylegaltoallocatea100-elementarrayandthenwriteintothe999th"element,"whichisreallysomerandompartofprogrammemory.So,programmerswhoforgettoperformthischeckopenuptheirsystemtodeliberateoraccidentalbufferoverflowattacks.Servletssufferfromneitheroftheseproblems.Evenifaservletexecutesasystemcall(e.g.,withRuntime.execorJNI)toinvokeaprogramonthelocaloperatingsystem,itdoesnotuseashelltodoso.And,ofcourse,arrayboundscheckingandothermemoryprotectionfeaturesareacentralpartoftheJavaprogramminglanguage.7.MainstreamTherearealotofgoodtechnologiesoutthere.Butifvendorsdon'tsupportthemanddevelopersdon'tknowhowtousethem,whatgoodarethey?ServletandJSPtechnologyissupportedbyserversfromApache,Oracle,IBM,Sybase,BEA,Macromedia,Caucho,Sun/iPlanet,NewAtlanta,ATG,Fujitsu,Lutris,Silverstream,theWorldWideWebConsortium(W3C),andmanyothers.Severallow-costpluginsaddsupporttoMicrosoftIISandZeusaswell.TheyrunonWindows,Unix/Linux,MacOS,VMS,andIBMmainframeoperatingsystems.TheyarethesinglemostpopularapplicationoftheJavaprogramminglanguage.TheyarearguablythemostpopularchoicefordevelopingmediumtolargeWebapplications.Theyareusedbytheairlineindustry(mostUnitedAirlinesandDeltaAirlinesWebsites),e-commerce(ofoto),onlinebanking(FirstUSABank,BancoPopulardePuertoRico),Websearchengines/portals(excite),largefinancialsites(AmericanCenturyInvestments),andhundredsofothersitesthatyouvisiteveryday.Ofcourse,popularityaloneisnoproofofgoodtechnology.Numerouscounter-examplesabound.Butourpointisthatyouarenotexperimentingwithanewandunproventechnologywhenyouworkwithserver-sideJava.
Servlet和JSP技術(shù)簡述GildasAvoineandPhilippeOechslinEPFL,Lausanne,SwitzerlandServlet的功能Servlets是運(yùn)行在Web或應(yīng)用效勞器上的Java程序,它是一個(gè)中間層,負(fù)責(zé)連接來自Web瀏覽器或其他客戶程序的請求和效勞器上的數(shù)據(jù)庫或應(yīng)用程序。Servlet的工作是執(zhí)行西門的任務(wù),如圖1.1所示。圖1.1Web中間件的作用〔1〕讀取客戶發(fā)送的顯式數(shù)據(jù)。最終用戶一般在頁面的HTML表單中輸入這些數(shù)據(jù)。然而,數(shù)據(jù)還有可能來自applet或定制的客戶程序?!?〕讀取由瀏覽器發(fā)送的隱式請求數(shù)據(jù)。圖1.1中顯示了一條從客戶端到Web效勞器的單箭頭,但實(shí)際上從客戶端傳送到Web效勞器的數(shù)據(jù)有兩種,它們分別為用戶在表單中輸入的顯式數(shù)據(jù),以及后臺的信息。兩種數(shù)據(jù)都很重要。信息包括cookie、瀏覽器所能識別的媒體類型和壓縮模式等。〔3〕生成結(jié)果。這個(gè)過程可能需要訪問數(shù)據(jù)庫、執(zhí)行RMI或EJB調(diào)用、調(diào)用Web效勞,或者直接計(jì)算得出對應(yīng)的響應(yīng)。實(shí)際的數(shù)據(jù)可能存儲在關(guān)系型數(shù)據(jù)庫中。該數(shù)據(jù)庫可能不理解,或者不能返回HTML形式的結(jié)果,所有Web瀏覽器不能直接與數(shù)據(jù)庫進(jìn)行會話。即使它能夠做到這一點(diǎn),為了平安上的考慮,我們也不希望讓它這么做。對應(yīng)大多數(shù)其他應(yīng)用程序,也存在類似的問題。因此,我們需要Web中間層從流中提取輸入數(shù)據(jù),與應(yīng)用程序會話,并將結(jié)果嵌入到文檔中?!?〕向客戶發(fā)送顯式數(shù)據(jù)〔即文檔〕。這個(gè)文檔可以用各種格式發(fā)送,包括文本〔HTML或XML〕,二進(jìn)制〔GIF圖〕,甚至可以式建立在其他底層格式之上的壓縮格式,如gzip。但是,到目前為止,HTML式最常用的格式,故而servelt和JSP的重要任務(wù)之一就式將結(jié)果包裝到HTML中?!?〕發(fā)送隱式的響應(yīng)數(shù)據(jù)。圖1.1中顯示了一條從Web中間層到客戶端的單箭頭。但是,實(shí)際發(fā)送的數(shù)據(jù)有兩種:文檔本身,以及后臺的信息。同樣,兩種數(shù)據(jù)對開發(fā)來說都式至關(guān)重要的。響應(yīng)數(shù)據(jù)的發(fā)送過程涉及告知瀏覽器或其他客戶程序所返回文檔的類型〔如HTML〕,設(shè)置cookie和緩存參數(shù),以及其他類似的任務(wù)。2.
動(dòng)態(tài)構(gòu)建網(wǎng)頁的原因預(yù)先建立的文檔可以滿足客戶的許多請求,效勞器無需調(diào)用servlet就可以處理這些請求。然而,許多情況下靜態(tài)的結(jié)果不能滿足要求,我們需要針對每個(gè)請求生成一個(gè)頁面。實(shí)時(shí)構(gòu)建頁面的理由有很多種:1、網(wǎng)頁基于客戶發(fā)送的數(shù)據(jù)。例如,搜索引擎生成的頁面,以及在線商店的訂單確認(rèn)頁面,都要針對特定的用戶請求而產(chǎn)生。在沒有讀取到用戶提交的數(shù)據(jù)之前,我們不知道應(yīng)該顯示什么。要記住,用戶提交兩種類型的數(shù)據(jù):顯示〔即HTML表單的數(shù)據(jù)〕和隱式〔即請求的報(bào)頭〕。兩種輸入都可用來構(gòu)建輸出頁面。基于cookie值針對具體用戶構(gòu)建頁面的情況尤其普遍。2、頁面由頻繁改變的數(shù)據(jù)導(dǎo)出。如果頁面需要根據(jù)每個(gè)具體的請求做出相應(yīng)的改變,當(dāng)然需要在請求發(fā)生時(shí)構(gòu)建響應(yīng)。但是,如果頁面周期性地改變,我們可以用兩種方式來處理它:周期性地在效勞器上構(gòu)建新的頁面〔和客戶請求無關(guān)〕,或者僅僅在用戶請求該頁面時(shí)再構(gòu)建。具體應(yīng)該采用哪種方式要根據(jù)具體情況而定,但后一種方式常常更為方便,因?yàn)樗恍韬唵蔚氐却脩舻恼埱蟆@?,天氣預(yù)報(bào)或新聞網(wǎng)站可能會動(dòng)態(tài)地構(gòu)建頁面,也有可能會返回之前構(gòu)建的頁面〔如果它還是最新的話〕。3、頁面中使用了來自公司數(shù)據(jù)庫或其他數(shù)據(jù)庫斷數(shù)據(jù)源的信息。如果數(shù)據(jù)存儲在數(shù)據(jù)庫中,那么,即使客戶端使用動(dòng)態(tài)Web內(nèi)容,比方applet,我們依舊需要執(zhí)行效勞器端處理。想象以下,如果一個(gè)搜索引擎網(wǎng)站完全使用applet,那么用戶將會看到:“正在下載50TB的applet,請等待!”。顯然,這樣很愚蠢;這種情況下,我們需要與數(shù)據(jù)庫進(jìn)行會話。從客戶端到Web層再到數(shù)據(jù)庫〔三層結(jié)構(gòu)〕,要比從applet直接到數(shù)據(jù)庫〔二層結(jié)構(gòu)〕更靈活,也更平安,而性能上的損失很少甚至沒有。畢竟數(shù)據(jù)庫調(diào)用通常是對速度影響最大的步驟,因而,經(jīng)過中間層可以執(zhí)行高速緩存和連接共享。理論上講,servelt并非只用于處理請求的Web效勞器或應(yīng)用效勞器,它同樣可以用于其他類型的效勞器。例如,servlet能夠嵌入到FTP或郵件效勞器中,擴(kuò)展他們的功能。而且,用于會話啟動(dòng)協(xié)議效勞器的servletAPI最近已經(jīng)被標(biāo)準(zhǔn)化〔參見:///en/jsr/detail?id=116〕。但在實(shí)踐中,servelt的這種用法尚不流行,在此,我們只論述Servlet。Servlet相對于“傳統(tǒng)”CGI的優(yōu)點(diǎn)和傳統(tǒng)CGI及許多類CGI技術(shù)相比,Javaservelt效率更高、更易用、更強(qiáng)大、更容易移植、更平安、也更廉價(jià)。1、效率應(yīng)用傳統(tǒng)的CGI,針對每個(gè)請求都用啟動(dòng)一個(gè)新的進(jìn)程。如果CGI程序自身相比照擬簡短,那么啟動(dòng)進(jìn)程的開銷會占用大局部執(zhí)行時(shí)間。而使用servelt,Java虛擬時(shí)機(jī)一直運(yùn)行,并用輕量級的Java線程處理每個(gè)請求,而非重量級的操作系統(tǒng)進(jìn)程。類似地,應(yīng)用傳統(tǒng)的CGI技術(shù),如果存在對同一CGI程序的N個(gè)請求,那么CGI程序的代碼會載入內(nèi)存N次。同樣的情況,如果使用servlet那么啟動(dòng)N個(gè)線程,單僅僅載入servlet類的單一副本。這種方式減少了效勞器的內(nèi)存需求,通過實(shí)例化更少的對象從而節(jié)省了時(shí)間。最后,當(dāng)CGI程序結(jié)束對請求的處理之后,程序結(jié)束。這種方式難以緩存計(jì)算結(jié)果,保持?jǐn)?shù)據(jù)庫連接翻開,或是執(zhí)行依靠持續(xù)性數(shù)據(jù)的其他優(yōu)化。然而,servelt會一直停留在內(nèi)存中〔即使請求處理完畢〕,因而可以直接存儲客戶請求之間的任意復(fù)雜數(shù)據(jù)。2、便利Servelt提供大量的根底構(gòu)造,可以自動(dòng)分析和解碼HTML的表單數(shù)據(jù),讀取和設(shè)置報(bào)頭,處理cookie,跟蹤會話,以及其他次類高級功能。而在CGI中,大局部工作都需要我們資金完成。另外,如果您已經(jīng)了解了Java編程語言,為什么還有學(xué)校Perl呢?您已經(jīng)成認(rèn)應(yīng)用Java技術(shù)編寫的代碼要比VisualBasic,VBScript或C++編寫的代碼更可靠,且更易重用,為什么還有倒退回去選擇那些語言來開發(fā)效勞器端的程序呢?3、強(qiáng)大Servlet支持常規(guī)CGI難以實(shí)現(xiàn)或根本不能實(shí)現(xiàn)的幾項(xiàng)功能。Servlet能夠直接于Web效勞器對話,而常規(guī)的CGI程序做不到這一點(diǎn),至少在不使用效勞器專有API的情況下是這樣。例如,與Web效勞器的通信使得講相對URL轉(zhuǎn)換成具體的路徑名變得更為容易。多個(gè)servelt還可以共享數(shù)據(jù),從而易于實(shí)現(xiàn)數(shù)據(jù)庫連接共享和類似的資源共享優(yōu)化。Servelt還能維護(hù)請求之間的信息,使得諸如會話跟蹤和計(jì)算結(jié)果緩存等技術(shù)變得更為簡單。4、可移植性Servelt使用Java編程語言,并且遵循標(biāo)準(zhǔn)的API。所有主要的Web效勞器。實(shí)際上都直接或通過插件
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中介借款合同范本
- 2025企業(yè)與自然人借款合同模板(標(biāo)準(zhǔn)版)
- 蝸牛叔叔繪本課程分享
- 2025簡易家電維修服務(wù)合同
- 定制櫥柜訂單合同范本
- 金融詐騙防范知識
- 提供木門展架合同范本
- 2025年3月份高空清洗作業(yè)安全責(zé)任補(bǔ)充協(xié)議
- 造血干細(xì)胞移植前的護(hù)理
- 2025年份1月無人機(jī)巡檢影像數(shù)據(jù)存儲與共享協(xié)議模板
- (一模)桂林市、來賓市2025屆高考第一次跨市聯(lián)合模擬考試英語試卷(含答案詳解)
- 2025深圳市房產(chǎn)交易居間合同
- 玉盤二部合唱簡譜
- 中期引產(chǎn)病人護(hù)理pPT
- 建筑施工企業(yè)三類人員變更申請表(外省市)
- 通用精美電子小報(bào)模板(35)
- 廣州大學(xué)畢業(yè)論文格式
- 《電工與電子技術(shù)基礎(chǔ)》試題庫及答案
- 畢業(yè)論文(設(shè)計(jì))液壓滑臺設(shè)計(jì)
- 繪本這不是我的帽子PPT課件
- 理療學(xué)之低頻電療法
評論
0/150
提交評論