




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
SpringMVC背景介Spring框架提供了構建Web應用程序的全功能MVC模塊。使用Spring可插入的MVCSpringWebStrutsWeb框架。通Spring(JSP)技術、Velocity、Tiles、iTextPOI。SpringMVC框架并不知道使用的視圖,所JSP技術。SpringMVC分離了控制器、模型對象、分派器以及處理開發(fā)效率上,基本正好相反。值得強調(diào)的是,springmvcstruts2Spring3MVC1、Spring3MVCStruts2,Struts2用不上的多余功2、Spring3MVC很容易就可以寫出性能優(yōu)秀的程序,Struts2要處處才可以寫出性能優(yōu)秀的程序(MVC部分)環(huán)境搭建第一步:導入spring/libs/jar包第二步:配置請求分發(fā)器DispatcherServlet>>第三步:在classpath下建立一個spring- 配置文<?xml<?xmlversion="1.0"encoding="UTF-<beans""""<ponent-scanbase-第四步:導入日志環(huán)境 ,并添加perties配置文##LicensedtotheApacheSoftwareFoundation(ASF)underoneor#contributorlicenseagreements.SeetheNOTICEfiledistributed#thisworkforadditionalinformationregardingcopyright#TheASFlicensesthisfiletoYouundertheApacheLicense,Version#(the"License");youmaynotusethisfileexceptincompliance#theLicense.YoumayobtainacopyoftheLicense##Unlessrequiredbyapplicablelaworagreedtoinwriting,software#distributedundertheLicenseisdistributedonan"ASIS"BASIS,#WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpress#SeetheLicenseforthespecificlanguage erningpermissionsand#limitationsundertheLicense.#Anexamplelog4jconfigurationfilethatoutputsto#outputinformationconsistsofrelativetime,loglevel,#name,loggername,nesteddiagnosticcontextandthemessagein##Forthegeneralsyntaxofpropertybasedconfigurationfilessee#documenationoflog4j.rootLogger=DEBUG,#A1issettobeaConsoleAppenderwhichoutputstoSystem.out.#A1usesPatternLayout.##Theconversionpatternusesformatspecifiers.Youmightwant#changethepatternanwatchtheoutputformatchange.log4j.appender.A1.layout.ConversionPattern=%-4r%-5p[%t]%37c%3x-#Inthisexample,wearenotreallyinterestedinINNERloopor#messages.Seetheeffectsmentingandchangingthe#thefollowing#.apache.log4j.examples.SortAlgo.INNER=WARN#.apache.log4j.examples.SortAlgo.SWAP=WARN第五步:編寫一個 發(fā)送請求項目名 publicclassDemoController public return}}SpringMVC3.0深DispatchServlet內(nèi)部,通過HandleMap檢查這個url有沒有對應的Controller。如果Controller。ControllerController執(zhí)行完畢后,如果返回字符串,則ViewResolver將字符串轉(zhuǎn)化成相應的視圖ModelAndView對象,該對象本身就包含了視圖對象信息。討論HandlerMap起到了什么作用?? 如果你學過struts2是否記得有一ActionMap呢spring3.0jarspringaopspringasm字節(jié)碼生IOCIOCspring的springwebmvc<filter-name>CharacterEncodingFilter</filter-<init-<param-name>encoding</param-<param-value>utf-8</param-</init-<filter-><filter-name>CharacterEncodingFilter</filter-<url-pattern>/*</url-</filter->@ControllerStruts1一樣,SpringControllerSingleton的。這就意味著會被多個請求線程共spring3.0中,通過@controllerclasscontroller ponent-scanbase-packagepackageimportimportimport;importpublicclassUserControllerprivateUserServicepublicStringreg(Stringuname) return}publicUserServicegetUserService()return}publicvoidsetUserService(UserServiceuserService)this.userService=}}publicStringreg5(@RequestParam("name")Stringmap)return}publicStringreg4(ModelMapmap){ map.addAttribute("u","uuuu");//將u放入request作用域中,這樣return}} publicclassUserController這個注解可以跟@SessionAttributesModelMap中屬性的值通packageimportimportimportimportorg.springframework.web.bind.annotation.ModelAttribute;importorg.springframework.web.bind.annotation.RequestMap importorg.springframework.web.bind.annotation.SessionAttributes; publicclassUserController publicStringreg4(ModelMapmap) return} publicStringreg5(@ModelAttribute("u")Stringuname,ModelMapmap){ return}}ControllerController}returnpublicStringreg4(ModelMapmap)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對象、sessionpublicclassUserControllerpublicStringreg2(Stringuname,HttpServletRequestreq,ModelMapreq.setAttribute("a","aa");req.getSession().setAttribute("b","bb");return}}}map的實現(xiàn),可以在其中存放屬性,作用域同request。下面這個示例,我們可以在packagepackageimportimportimport;;publicclassUserControllerextendsMultiActionControllerpublicStringreg(Stringuname,ModelMapmap){map.put("a","aaa");return}}<%@<%@pagelanguage="java"import="java.util.*"<%@taglibprefix="c"/jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<c:outModelAndViewModelAndViewModel代表模型,View代表視圖。即,這個類把要顯示的數(shù)據(jù)到了Model屬性中,要跳轉(zhuǎn)的視圖信息到了view屬性。我們看一下ModelAndView的部分源碼,即可知其中關系:publicpublicclassModelAndView/**ViewinstanceorviewnameStringprivateObject/**ModelMapprivateModelMap*Indicateswhetherornotthisinstancehasbeenclearedwithacallto{@link#clear()}.privatebooleancleared=Defaultconstructorforbean-styleusage:populatingpropertiesinsteadofpassinginconstructor@see@seepublicModelAndView()}ConvenientconstructorwhenthereisnomodeldatatoCanalsobeusedinconjunction@paramviewNamenameoftheViewtorender,tobebytheDispatcherServlet's@seepublicModelAndView(StringviewName)this.view=}ConvenientconstructorwhenthereisnomodeldatatoCanalsobeusedinconjunction@param@paramviewViewobjectto@seepublicModelAndView(Viewview)this.view=}CreatesnewModelAndViewgivenaviewnameanda@paramviewNamenameoftheViewtorender,tobebytheDispatcherServlet's@parammodelMapofmodelnames(Strings)tomodel(Objects).Modelentriesmaynotbe<code>null</code>,modelMapmaybe<code>null</code>ifthereisnomodelpublicModelAndView(StringviewName,Map<String,?>model)this.view=if(model!=null){}}*CreatesnewModelAndViewgivenaViewobjectanda*<emphasis>Note:dmodeldataiscopiedinto*storageofthisclass.Youshouldnotconsiderto Mapaftersupplyingittothis@paramviewViewobjectto@parammodelMapofmodelnames(Strings)tomodel(Objects).Modelentriesmaynotbe<code>null</code>,modelMapmaybe<code>null</code>ifthereisnomodelpublicModelAndView(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){this.view=view;addObject(modelName,modelObject);}SetaviewnameforthisModelAndView,toberesolvedDispatcherServletviaaViewResolver.Willoverridepre-existingviewnameorpublicvoidsetViewName(StringviewName)this.view=}ReturntheviewnametoberesolvedbytheviaaViewResolver,or<code>null</code>ifweareusingaViewobject.publicpublicStringgetViewName()return(this.viewinstanceofString?this.view:}SetaViewobjectforthisModelAndView.Willoverridepre-existingviewnameorpublicvoidsetView(Viewview)this.view=}ReturntheViewobject,or<code>null</code>ifweareusingaviewnametoberesolvedbytheDispatcherServletviaapublicViewgetView()return(this.viewinstanceofView?(View)this.view}Indicatewhetherornotthis<code>ModelAndView</code>hasaview,eitherasaviewnameorasadirect{@linkView}publicbooleanhasView()return(this.view!=}Returnwhetherweuseaviewreference,iftheviewhasbeenspecifiedviaanametoberesolvedbytheDispatcherServletviaapublicbooleanisReference()return(this.viewinstanceof}Returnthemodelmap.MayreturnCalledbyDispatcherServletforevaluationoftheprotectedMap<String,Object>getModelInternal()return}Returntheunderlying<code>ModelMap</code>instance(never<code>null</code>).publicModelMapgetModelMap()if(this.model==null)thisthis.model=new}return}Returnthemodelmap.NeverreturnsTobecalledbyapplicationcodeformodifyingthepublicMap<String,Object>getModel()return}Addanattributetothe@paramattributeNamenameoftheobjecttoaddtothe@paramattributeValueobjecttoaddtothemodel@seeModelMap#addAttribute(String,@seepublicModelAndViewaddObject(StringattributeName,ObjectattributeValue){return}Addanattributetothemodelusingparametername@paramattributeValuetheobjecttoaddtothemodel(never<code>null</code>)@see@seepublicModelAndViewaddObject(ObjectattributeValue){return}AddallattributescontainedintheprovidedMaptothe@parammodelMapaMapofattributeName->attributeValue@see@seepublicModelAndViewaddAllObjects(Map<String,?>modelMap){return}ClearClearthestateofthisModelAndViewTheobjectwillbeempty<p>CanbeusedtosuppressrenderingofagivenModelAndViewobjectinthe<code>postHandle</code>methodofa@see@seepublicvoidclear(){this.view=null;this.model=null;this.cleared=true;}ReturnwhetherthisModelAndViewobjectisi.e.whetheritdoesnotholdanyviewanddoesnotcontainamodel.publicbooleanisEmpty()return(this.view==null&&}ReturnwhetherthisModelAndViewobjectisemptyasaresultofacallto{@link#clear}i.e.whetheritdoesnotholdanyviewanddoescontaina<p>Returns<code>false</code>ifanyadditionalstatewasaddedtotheinstance<strong>after</strong>thecallto{@link@seepublicbooleanwasCleared()return(this.cleared&&}ReturndiagnosticinformationaboutthismodelandpublicStringtoString()StringBuildersb=newStringBuilder("ModelAndView:if(isReference())sb.append("referencetoviewwithname}elsesb.append("materializedViewis}sb.append(";modelisreturn}}packageimportimport import;import publicclassUserControllerextendsMultiActionController publicModelAndViewreg(StringModelAndViewmv=new mv.setView(newUseru=newUser(); 寫的類名”mv.addObject("a",return}}<%@pagelanguage="java"import="java.util.*"<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01spring3.0mvcspring使用 mons下得上傳組件,因此,我們需要引入兩個jar包<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為無限止(-1)--><%@<%@pagelanguage="java"import="java.util.*"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<formaction="upload.do"method="post"enctype="multipart/form-<inputtype="text"name="name"<inputtype="file"name="file"<inputtype="submit"packagepackageimportimportimportimportimportorg.springframework.web.bind.annotation.RequestMap importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importimportpublicvoidsetServletContext(ServletContextcontext){ =context;} (value="/upload.do",method=if(!file.isEmpty())Stringpath= StringfileName=StringfileType=fileName.substring(fileName.lastIndexOf("."));Filefile2newFile(path,newDate().getTimefileType新建一個文件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ā)布項目,運試: ajax請 in;charset=utf-public@ResponseBodyfindById(IntegerUseruser=new//這里可以使用gsonreturn"{id:1,name:'小嘎return}json格式的數(shù)據(jù)<script<scriptvarvarfunctiontest(){}}returnnull; public testAdd(@RequestBodyUser<buttononclick="test();"}自動轉(zhuǎn)換json為響應內(nèi)容checkName(StringSpringSpring<mvc:annotation-driven></mvc:annotation-項目下要加入jacksonjarjackson-all-}return// po--Useruser=newSpring中的定義spring器兩種基本方注意:參數(shù)中的Objecthandler是下一個器 (HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsExceptiontrueaction。 (HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,ModelAndViewmodelAndView)throwsExceptionpublicvoid pletion(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,Exceptionex)throwsExceptionex是否為空,來進行相spring框架從而到了這個方法中。 packagepackageimportimportimportimportimportpublic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生豬養(yǎng)殖與農(nóng)業(yè)產(chǎn)業(yè)扶貧合作協(xié)議
- 二零二五年度制造業(yè)工傷責任保險合同
- 2025年度男方道歉夫妻共同生活保證協(xié)議
- 2025年度飯店短期勞務合同-客房服務員職業(yè)健康與安全協(xié)議
- 二零二五年度物業(yè)公司員工勞動合同(含社區(qū)文化活動)
- 監(jiān)理技術服務合同
- 綠色數(shù)據(jù)中心建設運營合同
- 環(huán)境影響評估結果展示表
- 股份制企業(yè)股權分配與管理制度文書
- 財務與成本控制管理細則
- 2024年高考英語易錯題 閱讀理解:推理判斷題4大陷阱(教師版新高考專用)
- 醫(yī)院環(huán)境衛(wèi)生學監(jiān)測和院感控制課件
- 《力與形變》教學課件(一)
- 湖北省2024年村干部定向考試真題
- 部編版三年級語文下冊期中試卷及參考答案
- JT-T-1199.1-2018綠色交通設施評估技術要求第1部分:綠色公路
- 酒店能耗分析報告
- 桃花紅杏花紅混聲合唱簡譜
- DL-T995-2016繼電保護和電網(wǎng)安全自動裝置檢驗規(guī)程
- 2024年蘇州農(nóng)業(yè)職業(yè)技術學院單招職業(yè)適應性測試題庫含答案
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術學院單招職業(yè)適應性測試題庫含答案
評論
0/150
提交評論