




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SpringMVC背景介Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MVC模塊。使用Spring可插入的MVCSpringWebStrutsWeb框架。通Spring(JSP)技術(shù)、Velocity、Tiles、iTextPOI。SpringMVC框架并不知道使用的視圖,所JSP技術(shù)。SpringMVC分離了控制器、模型對(duì)象、分派器以及處理開(kāi)發(fā)效率上,基本正好相反。值得強(qiáng)調(diào)的是,springmvcstruts2Struts2OGNL和值棧造成的。所以,如果你的系統(tǒng)并發(fā)量高,可Spring3MVC1、Spring3MVCStruts2,Struts2用不上的多余功2、Spring3MVC很容易就可以寫出性能優(yōu)秀的程序,Struts2要處處才可以寫出性能優(yōu)秀的程序(MVC部分)然也不會(huì),不會(huì)因使用了MVC框架而感到有任何的限制環(huán)境搭建第一步:導(dǎo)入spring/libs/jar包第二步:配置請(qǐng)求分發(fā)器DispatcherServlet>>第三步:在classpath下建立一個(gè)spring- 配置文<?xml<?xmlversion="1.0"encoding="UTF-<beans""""<ponent-scanbase-第四步:導(dǎo)入日志環(huán)境 ,并添加perties配置文#LicensedtotheApacheSoftwareFoundation(ASF)underoneormore##LicensedtotheApacheSoftwareFoundation(ASF)underoneormore#contributorlicenseagreements.SeetheNOTICEfiledistributedwith#thisworkforadditionalinformationregardingcopyrightownership.#TheASFlicensesthisfiletoYouundertheApacheLicense,Version2.0#(the"License");youmaynotusethisfileexceptincompliancewith#theLicense.YoumayobtainacopyoftheLicenseat##Unlessrequiredbyapplicablelaworagreedtoinwriting,software#distributedundertheLicenseisdistributedonan"ASIS"BASIS,#WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.#SeetheLicenseforthespecificlanguageerningpermissionsand#limitationsundertheLicense.#Anexamplelog4jconfigurationfilethatoutputstoSystem.out.The#outputinformationconsistsofrelativetime,loglevel,thread#name,loggername,nesteddiagnosticcontextandthemessageinthat#order.#Forthegeneralsyntaxofpropertybasedconfigurationfilesseethe#documenationoforg.apache.log4j.PropertyConfigurator.log4j.rootLogger=DEBUG,#A1issettobeaConsoleAppenderwhichoutputstoSystem.out.#A1usesPatternLayout.#Theconversionpatternusesformatspecifiers.Youmightwant#changethepatternanwatchtheoutputformatchange.log4j.appender.A1.layout.ConversionPattern=%-4r%-5p[%t]%37c%3x-##Inthisexample,wearenotreallyinterestedinINNERloopor#messages.Seetheeffectsmentingandchangingthelevels#thefollowing#.apache.log4j.examples.SortAlgo.INNER=WARN#.apache.log4j.examples.SortAlgo.SWAP=WARN第五步:編寫一個(gè) 發(fā)送請(qǐng)求項(xiàng)目名 publicclassDemoController public return}}SpringMVC3.0深DispatchServlet內(nèi)部,通過(guò)HandleMap檢查這個(gè)url有沒(méi)有對(duì)應(yīng)的Controller。如果有,則調(diào)用Controller。ControllerControllerViewResolver將字符串轉(zhuǎn)化成相應(yīng)的視圖ModelAndView對(duì)象,該對(duì)象本身就包含了視圖對(duì)象信息。討論HandlerMap起到了什么作用?? 如果你學(xué)過(guò)struts2是否記得有一個(gè)ActionMap呢spring3.0jarspringaopspringasm字節(jié)碼生IOCIOCspring的org.springframework.expression-springwebmvc<filter-name>CharacterEncodingFilter</filter-<filter-name>CharacterEncodingFilter</filter-<filter-/filter-<init-<param-name>encoding</param-<param-value>utf-8</param-</init-<filter-><filter-name>CharacterEncodingFilter</filter-<url-pattern>/*</url-</filter->@ControllerStruts1一樣,SpringControllerSingleton的。這就意味著會(huì)被多個(gè)請(qǐng)求線程共spring3.0中,通過(guò)@controllerclasscontrollerspringcontroller的bean,spring-context ponent-scanbase-在類前面定義,則將urlpackagepackageimportimportimport;importpublicclassUserControllerprivateUserServicepublicStringreg(Stringuname) return}publicpublicUserServicegetUserService()return}publicvoidsetUserService(UserServiceuserService)this.userService=}}publicStringreg5(@RequestParam("name")Stringmap)return}publicStringreg4(ModelMapmap){ map.addAttribute("u","uuuu");//將u放入request作用域中,這樣轉(zhuǎn)return}} publicclassUserController這個(gè)注解可以跟@SessionAttributesModelMap中屬性的值通packagepackageimportimportimportimportimportimport;importpublicclassUserControllerpublicStringreg4(ModelMapmap) return}publicStringreg5(@ModelAttribute("u")Stringuname,ModelMapmap)return}}ControllerController}returnpublicStringreg4(ModelMapmap)ModelMap、ModelAndView、map、List、Set、Object一般建packagepackageimportimportimportimportimportimport;publicclassUserControllerpublicStringreg4(ModelMapmap)returnreturn"forward:user.do?method=reg5"return"redirect:user.do?method=reg5";//return";//}publicStringreg5(Stringuname,ModelMapmap)return}}p:prefix="/WEB-INF/jsp/"<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>request對(duì)象、session普通的ControllerpublicclassUserControllerpublicStringreg2(Stringuname,HttpServletRequestreq,ModelMapreq.setAttribute("a","aa");req.getSession().setAttribute("b","bb");return"index";}}<!DOCTYPE<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01/jsp/jstl/core"<%@taglibprefix="c"<%@pagelanguage="java"import="java.util.*"}publicStringreg(Stringuname,ModelMapmap){map.put("a","aaa");return}publicclassUserControllerextendsMultiActionController;;importimportimportpackage<c:outModelAndViewModelAndViewModel代表模型,View代表視圖。即,這個(gè)類把要顯示的數(shù)據(jù)到了Model屬性中,要跳轉(zhuǎn)的視圖信息到了view屬性。我們看一下ModelAndView的部分源碼,即可知其中關(guān)系:publicpublicclassModelAndView/**ViewinstanceorviewnameStringprivateObject/**ModelMapprivateModelMap*Indicateswhetherornotthisinstancehasbeenclearedwithacallto{@link#clear()}.privatebooleancleared=Defaultconstructorforbean-styleusage:populatingpropertiesinsteadofpassinginconstructor@see@seepublicModelAndView()}Canalsobeusedinconjunctionwith@paramviewNamenameoftheViewtorender,tobebytheDispatcherServlet's@seepublicModelAndView(StringviewName)this.view=}Canalsobeusedinconjunctionwith@paramviewViewobjectto@seepublicModelAndView(Viewview)this.view=}CreatesnewModelAndViewgivenaviewnameanda@paramviewNamenameoftheViewtorender,tobebytheDispatcherServlet's@parammodelMapofmodelnames(Strings)tomodelpublicModelAndView(StringviewName,Map<String,?>model)this.view=if(model!=null){}}*CreatesnewModelAndViewgivenaViewobjectanda*<emphasis>Note:dmodeldataiscopiedintostorageofthisclass.YoushouldnotconsidertomodifytheMapaftersupplyingittothis@paramviewViewobjectto@parammodelMapofmodelnames(Strings)tomodelpublicpublicModelAndView(Viewview,Map<String,?>model)this.view=if(model!=null){}}Convenientconstructortotakeasinglemodel@paramviewNamenameoftheViewtorender,tobebytheDispatcherServlet's@parammodelNamenameofthesingleentryinthe@parammodelObjectthesinglemodelpublicModelAndView(StringviewName,StringmodelName,ObjectmodelObject){this.view=viewName;addObject(modelName,modelObject);}Convenientconstructortotakeasinglemodel@paramviewViewobjectto@parammodelNamenameofthesingleentryinthe@parammodelObjectthesinglemodelpublicModelAndView(Viewview,StringmodelName,ObjectmodelObject){thisthis.view=view;addObject(modelName,modelObject);}SetaviewnameforthisModelAndView,toberesolvedbyDispatcherServletviaaViewResolver.Willoverridepre-existingviewnameorpublicvoidsetViewName(StringviewName)this.view=}ReturntheviewnametoberesolvedbytheviaaViewResolver,or<code>null</code>ifweareusingaViewpublicStringgetViewName()return(this.viewinstanceofString?(String)this.view}SetaViewobjectforthisModelAndView.Willoverridepre-existingviewnameorpublicvoidsetView(Viewview)this.view=}ReturntheViewobject,or<code>null</code>ifweareusingaviewnametoberesolvedbytheDispatcherServletviaapublicViewgetView()}Indicatewhetherornotthis<code>ModelAndView</code>hasaview,eitherasaviewnameorasadirect{@linkView}publicbooleanhasView()return(this.view!=}iftheviewhasbeenspecifiedviaanametoberesolvedDispatcherServletviaapublicbooleanisReference()returnreturn(this.viewinstanceof}Returnthemodelmap.MayreturnCalledbyDispatcherServletforevaluationoftheprotectedMap<String,Object>getModelInternal()return}Returntheunderlying<code>ModelMap</code>instancepublicModelMapgetModelMap()if(this.model==null)this.model=new}return}Returnthemodelmap.NeverreturnsTobecalledbyapplicationcodeformodifyingthepublicMap<String,Object>getModel()return}Addanattributetothe@paramattributeNamenameoftheobjecttoaddtothe@paramattributeValueobjecttoaddtothemodel@seeModelMap#addAttribute(String,@seepublicModelAndViewaddObject(StringattributeName,ObjectattributeValue){return}@paramattributeValuetheobjecttoaddtothemodel@see@seepublicModelAndViewaddObject(ObjectattributeValue){return}@see@seepublicModelAndViewaddAllObjects(Map<String,?>modelMap){return}ClearthestateofthisModelAndViewTheobjectwillbeempty<p>CanbeusedtosuppressrenderingofagivenModelAndView@see@seepublicvoidclear(){this.view=null;this.model=null;this.cleared=true;}ReturnReturnwhetherthisModelAndViewobjectisi.e.whetheritdoesnotholdanyviewanddoesnotcontainamodel.publicbooleanisEmpty()return(this.view==null&&}ReturnwhetherthisModelAndViewobjectisemptyasaresultofacallto{@link#clear}i.e.whetheritdoesnotholdanyviewanddoesnotcontainamodel.totheinstance<strong>after</strong>thecallto{@link@seepublicbooleanwasCleared()return(this.cleared&&}ReturndiagnosticinformationaboutthismodelandpublicStringtoString()StringBuilderStringBuildersb=newStringBuilder("ModelAndView:if(isReference())sb.append("referencetoviewwithname}elsesb.append("materializedViewis}sb.append(";modelisreturn}}packagepackageimportimport;import;importpublicclassUserControllerextendsMultiActionControllerpublicModelAndViewreg(Stringuname){ModelAndViewmv=newModelAndView(); mv.setView(newUseru=newUser(); mv.addObject("a",return}}<%@pagelanguage="java"import="java.util.*"<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01spring3.0mvcspring使用 <beanResolver"<propertyname="defaultEncodingvalue="gbk"(ISO-8859-1)--<propertyname="maxInMemorySizevalue="10240"最大內(nèi)存大小(10240)--><propertyname="uploadTempDirvalue="/upload/"上傳后的目錄名(WebUtils#TEMP_DIR_CONTEXT_ATTRIBUTE)--><propertyname="maxUploadSizevalue="-1"最大文件大小,-1為無(wú)限止(-1)--><%@<%@pagelanguage="java"import="java.util.*"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<formaction="upload.do"method="post"<inputtype="text"name="name"<inputtype="file"name="file"<inputtype="submit"packagepackageimportjava.io.File;importimportimportorg.springframework.web.bind.annotation.RequestMap importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.context.ServletContextAware;import publicvoidsetServletContext(ServletContextcontext){ =context;} (value="/upload.do",method= name,@RequestParam("file")CommonsMultipartFilefile){if(!file.isEmpty())Stringpath= //StringfileName=StringfileType=fileName.substring(fileName.lastIndexOf("."));Filefile2newFile(path,newDate().getTimefileType新建一個(gè)文件try{);//}catch(Exceptione)}returnreturn}}}upload_ok.jsp<%@<%@pagelanguage="java"import="java.util.*"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<%@<%@pagelanguage="java"import="java.util.*"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01發(fā)布項(xiàng)目,運(yùn)試: ajax請(qǐng)(value="/byid",produces="text/plain;charset=utf-public@ResponseBodyfindById(IntegerUseruser=new//這里可以使用gsonreturn"{id:1,name:'小嘎return}json格式的數(shù)據(jù)<scriptvar varstr=JSON.stringify(user);function}<buttononclick="test();" public testAdd(@RequestBodyUserreturnnull;}自動(dòng)轉(zhuǎn)換json為響應(yīng)內(nèi)容SpringSpring配置文件要加入如下配置<mvc:annotation-driven></mvc:annotation-項(xiàng)目下要加入jacksonjarjackson-all-}return// po--Useruser=newcheckName(StringSpring中的定義spring器兩種基本方注意:參數(shù)中的Objecthandler是下一個(gè)器 (HttpServletRequestrequest,HttpServletResponseObjecthandler)throwsactiontrueaction。 (HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,ModelAndViewmodelAndView)throwsExceptionpublicvoid pletion(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,Exceptionex)throwsExceptionex是否為空,來(lái)進(jìn)行相spring框架從而到了這個(gè)方
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度互聯(lián)網(wǎng)企業(yè)員工入職知識(shí)產(chǎn)權(quán)保護(hù)合同
- 二零二五年度電子元器件出口業(yè)務(wù)合同范本
- 2025年度石灰粉生產(chǎn)節(jié)能減排技術(shù)創(chuàng)新合作協(xié)議
- 動(dòng)產(chǎn)拍賣委托代理協(xié)議書(2025年度房產(chǎn)拍賣項(xiàng)目)
- 2025年度補(bǔ)充協(xié)議簽訂與否的違約責(zé)任認(rèn)定與處理機(jī)制合同
- 二零二五年度公司與自然人教育培訓(xùn)合作協(xié)議
- 二零二五年度新能源項(xiàng)目股東股份交易保密協(xié)議
- 二零二五年度學(xué)校圖書資料室租賃合同協(xié)議
- 老齡化社會(huì)養(yǎng)老保障2025年度老人存款管理與社區(qū)互助協(xié)議
- 2025年度長(zhǎng)租公寓交房后物業(yè)費(fèi)及租住服務(wù)合同
- 人教版六年級(jí)上冊(cè)道德與法治教案(5篇)
- (中職)中職生創(chuàng)新創(chuàng)業(yè)能力提升教課件完整版
- 中班健康課件《我不挑食》
- 生豬屠宰獸醫(yī)衛(wèi)生人員考試題庫(kù)答案(414道)
- 《完善中國(guó)特色社會(huì)主義法治體系》課件
- 2024至2030年中國(guó)石油瀝青市場(chǎng)前景及投資機(jī)會(huì)研究報(bào)告
- 2025版 高考試題分析-數(shù)學(xué)-部分4
- 武漢大學(xué)張?。?024生成式人工智能大模型及其電力系統(tǒng)數(shù)智化應(yīng)用前沿報(bào)告
- (高清版)AQ 1056-2008 煤礦通風(fēng)能力核定標(biāo)準(zhǔn)
- 2024版高一上冊(cè)語(yǔ)文模擬試卷
- 《內(nèi)陸干旱區(qū)季節(jié)性河流生態(tài)流量(水量)確定技術(shù)導(dǎo)則》
評(píng)論
0/150
提交評(píng)論