版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第天:springmvc基础知识什么是springmvc?springmvc框架原理(掌握)前端控制器、处理器映射器、处理器适配器、视图解析器springmvc入门程序目的:对前端控制器、处理器映射器、处理器适配器、视图解析器学习非注解的处理器映射器、处理器适配器注解的处理器映射器、处理器适配器(掌握)springmvc和mybatis整合(掌握)springmvc注解开发:常用的注解学习参数绑定(简单类型、pojo、集合类型)自定义参数绑定(掌握)spring和structs2区另U、springmvc®础知识1springmvc!1.1什么是springmvcspringmvc是
2、spring框架的一个模块,两者无需通过中间整合进行整合springmvc是一个基于mvc的web框架。ORMDAOAOP1.2mvc在b/s系统下的应用mvc是一个设计模式,mvc在b/s系统下的应用:request请求用1;户I/response响应C控制器controller接口用户请求响应请求模型进行处理视图渲染将模型数据填充到request域处理结果返回V视图ViewHs系统下模型无法将数据填充到视图M模型(model)pojoactionservicedao1.3springmvc框架1、request请求11、response响应10、视图渲染,将模型数据填充到,request域
3、视图jspfreemarker前端控制器DispatcherServlet接口用户请求、响应处理器映射器HandlerMapping、返Mo行elAndVie6、MiewHandlerExecutionChainHandlerinterceptor1Handler处理器平常叫做controller器执8、请求进行试图解析1And2、请求查找Handler(根据url查找handler)3、返回一个执行链Handlerinterceptor29、返回View视图解析器Viewresolver处理器适配器Handleradapter去执行Handler5、执行步骤:第一步:第二步:第三步:第四步:
4、第五步:第六步:第七步:第八步:excelpdf发起请求到前端控制器(DispatcherServlet)前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找处理器映射器HandlerMapping向前端控制器返回Handler前端控制器调用处理器适配器去执行Handler处理器适配器去执行HandlerHandler执行完成给适配器返回ModelAndView处理器适配器向前端控制器返回ModelAndViewModelAndView是springmvc框架的一个底层对象,包括Model和View前端控制器请求视图解析器去进行试图解析根据逻辑视图名解析
5、成真正的视图(jsp)第九步:视图解析器向前端控制器返回View第十步:前端控制器进行视图渲染视图渲染将模型数据(在ModelAndView对象中)填充到request域第十一步:前端控制器向用户响应结果组件:1、前端控制器DispatcherServlet(不需要程序员开发)作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。2、处理器映射器HandlerMapping(不需要程序员开发)作用:根据请求的url查找Handler3、处理器适配器Handleradapter作用:按照特定规则(Handleradapter要求的规
6、则)去执行Handler4、处理器Handler(需要程序员开发)注意:编写Handler时按照Handleradapter的要求去做,这样适配器才可以去正确执行Handler5、视图解析器Viewresolver(不需要程序员开发)作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)6、视图View(需要程序员开发jsp)View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf)2入门程序2.1 需求以案例作为驱动Springmvc和mybatis使用同一个案例(商品订单管理)。功能需求:商品列表查询2.2 环境准备数据库环境先导入sql_table.
7、sq历导入sql_data.sql!却本:外键:orders_id外键:usersid一对一:一个订单只能由一个用户创建订单表:orders记录了用户创建的订单创建用户:users_id(外键)订单号创建时间订单状态一对多用户可以创建多个订单用户表:user记录了购买商品的用户信息Id:唯一标识一个用户商品信息:items记录了所以商品信息商品id:id(主键)商品名称:商品介绍数据库环境mysql5.1Java环境:Jdk1.7.0_52eclipseindigospringmvc版本:spring3.2需要spring3.2所有jar(定要有spring-webmvc-3.2.3.RELE
8、ASE.jarccnwfcons'lQegmg-LILjwWjstL-1.2.J4T印门ng-也叩7-NRELEASEspring_ect2.0.RELEASE.jar印nn-b总瓯写7-20.RELEASEjwspri2.0.KELEAZE.j=jsprin-eolitht-support_3.2.0EILEA._,?pring-cor*-3,2.0.RELEASEjtr_Jspring-*xpr«,&sion_3.Z.0.RELEA5I.,aprirk«-jdtc-3.2.0.RELEASE.j4rspring-orm_3.2.0REISE.jarspr
9、iiLg'test-3.2.0.RELEASE,j虹ysprinfi-tx'3,2.0.RELEASE.j«r,sprin.g-web_3.2.0RELEASEjorsprin5-wfctihvc-3.2.0.RELEASEjir2.3 配置前端控制器在web.xml中配置前端控制器4I-4-pripgrw¥<<5ervlet><1ir:L"11d-mi>5pr1iflgninirC,-t-r4-'rlrtir-><ser-u1h-1-c1dsorigBspringframework.web-ser
10、-vlet.DispatcherServlet-ev1t-:1=3.s><1-COntf51JftCon11gLstion&jg5pr1npmvrlcKt:(Kg旧置茏曜J魄史JJ.让学豆芽事如聚不出青匚口ntextCcnfigLociStloo*IhAJjrtllBtt/WfB-INF/i&r'yletJt-serlvet.kjbI<pringiivc.-servletxolknitfparan-name>contextConfigLocation/p白厂白-rt/t>cp.s.irr-vi1Lje>cl>5Sp«t
11、h'ipringvivc.xnl<p-.iu*-></servlet><«erwlet-ffljpping>I-1(ridJusprinigniivc:m->!第仲:*,action-两色|“tIgh堵星由Di卯NchNMcr*JctiB行jff折H二班hJU以荀j幽咖/IMltHspatuh"&ezlM亳M析.刮干IH成喃明活要时I不让心ix>ai:uh£YEr"El:暹行葡舞书比冲巧式可以实现RESTfuJLirl三阚/,这甲S岂不对侵用这根SJL黄务持室第4j*i币而以仍不会出口Hsp
12、ml:仁卜日5£"工£七颦新力£问址.下灵装梨jsp里面低到h13ndi役nCurl-pjttGrnJ-CtiXfi</Lirl-pjft(?rn></3.ePvlet-nappir1ig>2.4 配置处理器适配器在classpath下白Sspringmvc.xml中配置处理器适配器所有厂博寻力配翔环强HandlerAdapterQr*><be#nclflss*frarg,springp/rcnnewor.*b国servletSiiwpi,eCcwitroiKerHandlerAtfopferBB/>通过查看源代
13、码:publicclassSimpleControllerHandlerAdapterimplementsHandlerAdapterublicbeoleansupports(Objecthandler)(retyrn(handleirlhBtanc«ofController此适配器能执行实现Controller接口的Handlerpublicint«iPic«Controll«r(DispatcherServletItindicatestMt2Mode1AndVietiProcesstherequestandreturnaModelAndVieobje
14、ctwhichthewi11render,A<code>null</(ode>returnvalueisinoterrcr;thisobjectcosipiletedreque&tpricessingitself3.比humthereistorerkder»AparwrcquotcurrentHTTPrequest脚!小”currentHTTPrpcns4re-turnaNodeAndView|orcr*dr,口<c.ode->nul1C/c_c<lc>ifk&HtddirectlyptbrowsEMceptioninc
15、aseoferrorsdellLriiJVicrhhandIrRcqlie?t(tittp47rvlciI«|li<stHttrtfletRnsporiresporlioJlthrowsEJtc«ption;«rcex>riiaclFM-i!r*xA-v«bs-arTlat-«vMalek-EarL-ciCl.Ha>d*LuilTnsvlxllui!tIK£fim«risrk:网1iLktlluverantafalvdj.xti.3cL2.5 编写Handler需要实现controller接口,才能由org
16、.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter适配器执行publicclacIternstontrolledimplementsControllergOverridepublicModelAndvlewhandleRequest(HttpServletRequestrequestj.Http5ervletRespanseresponse)throwsException/,出弓曾欣症些雷,交雷宅鼻上暴,卫星学用F声激咤N投ListItems?itemsList=n<ewArray-1st<1!ternsJ
17、,/百Liw七中王e芹专盆后Itemsitems_l=newItems();|itemsl,setHa*ne(;it«ni5_l,setP('ice(6&0Of);itemsl.ietDetail('*ThirikPadT4钝*摹党Zt电埼:"):Itemsiteni£_2=newItems();items_2,setHame(*11)jiteirs_2*setPrice(5&&©f;item5_2,setDetail("iPhonmf=栗*r"):itni5_Lst.add(itEns-_L)
18、i±emsList.add(土七eifm_2);H隹五痴deAndViewModelAndViewiriodeJLAndView=nev*riOdelAndView()j/州当于squEEt热耳已t口tt广ibirt三j与口页三中啸cit史m与Limt7之挎mcdelAndVievf.addObject("itemsListitemsList3;H殖宅W事modelAndView.setViewHant("/NEB-INF/sp/itens/iteasList»jspM)returnmpdel/indviewj)2.6 视图编写TTWEB-IMPQKp-
19、Aitems,rJitem5ListjspIII2.7 酉己置Handler将编写的Handler在spring容器里加载。<I-H?WHjnidler-<bpan"/queryrtemsPoction"class=BPc/i+ftcast,写手rontroilerBControLLerl"/>2.8 配置处理器映射器在classpath下白Sspringmvc.xml中配置处理器映射器<1-好理翔西崎X上门的1M修期1师此1.漫行亘»SSnMHjrtdUrflfjhTb*-力力由名miurlj*><bwniC1a55
20、="cjrgFtjpringrfraHKtrk.iwrfjqfffrvlet_jh<jnci(er-0ranNaieUr,lHandLerffcippingn/>2.9 配置视图解析器需要配置解析jsp的视图解析器<1-陋解圻善扁诉jfpW,密认/用标爸,Q个蟹理£虾的母gjstl的包<bed/尸q-spririgi/ramwtsrJrtueb-servlet.sMjrrpViFiwiffesfflur'r></bf*Hn>2.10 部署调试访问地址:http:/localhost:8080/springmvc/queryI
21、tems.action处理器映射器根据url找不到Handler,报下边的错TTPStatus404-S5ESutusreportThergcnjestedrrsouixegnotavaMb依.3.非注解的处理器映射器和适配器3.1 非注解的处理器映射器非注解的处理器映射器(根据url找Handler)org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping另一个映射器org.springframework.web.servlet.handler.SimpleUrlHandlerMapping<I-aurl<
22、beanservletshandier.SimpLeUrLHQndler(itGppirjg'I><property"mappings”?<props>-ritemsCcntrollerlLj«i5i4xXffjr./queryItemsl*action->|key-.actioniteniisControllerl</prop>Icey="/彳小巴。Heem52.actionr'?ite«isControllerl/p"匚u<propleey=.actionH%iteirsCon
23、troller2</prop></props></property>t/been>多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理3.2非注解的处理器适配器org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter要求编写的Handler实现Controller接口org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter要求编写的Handler实现HttpRequestHandler
24、接口Overridepublicvoidhafld1eRe4ucst(HttpServletReqhmtrefl|LiestfHttpServlfttResiponiseresponse)throwiiServletExc«pticnwlOtMceptioni(,/鼻用,“尸中门¥亶随熊德际.黄iW吊耳事!遮里博固11可批11博巩Lisitcltvvi%>iEwList-n«wn尸,法|liSt中餐充*江湘加Hs(匚1=ntvItefli5();items_l.setNane"fe挈单打"):items_l-setPricft(6000f
25、);it=卅+I,jetOrt#i1f-Th11kPadT4%联士星,山电ItHilntv1七/式)二,£片tNaM尊手机YL£*tPrlc«(S009f)jitems_2,setDetai1("iphvnw尚草W干,"'JiitcmsList.add(ittnts_l);itensList.addtltents_2j;reut.setAttribute(*lte«£List".itemsLI);好帛t,getR*quP5tDispatth?r(,'/kEINF/jsp/items/itw5List
26、,jsp")+forward(rqustjtsponse);/使用防志司以通过侬response设置啊应的数摄格式,比如响应”。侦搐response,setCharacterEncoding('*utf8'*)jresponse.setContentType(,1application/json;chansct=utf-8M);response,getWriter().write(d,(son");T/J4.DispatcherSpertiesJepring-webmve-2.2.3.REL£ASE.pr-.:二:二"
27、:J£,0rg,&pringframework.web.servlet%pAsyncHandlertnterceptoir.cl启ssRDi5patcherSendelclas?部FlahMap.class;也FhehMapManag&r,daes£FrameworkServIet.dassl4也HendlerAdapter.cla5s益HandlerExceptionResolverchss汕l-landlerEKecutiorCihain.class岛Handlerlnterceptor.class总HandlerMppingxla&5ihHtt
28、pServletBean.cIas益L。己白%rr4d©55ModelAndView,class%ModelAndViewDefiningExceptionxlas&扁ReqjestToViewNanneTransiator.cla55乩ResourctServletxlass遍SmartView.da55|心Them&RMsIv&r.elaie.Viewxlass4巾ViewRendererServIet.class松ViewReiolverxlass前端控制器从上边的文件中加载处理映射器、适配器、视图解析器等组件,如果不在spring.xml中配置,使用默
29、认加载的。5.注解的处理器映射器和适配器在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHand
30、lerAdapter注解适配器在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器5.1 配置注解映射器和适配器CE-*chrin11v*-kg&广捌滥乩®11s加附Pofk学丁才小用才kpandt叩£可>t1/芝玩珏clibss-r印4叮打日nwwcZaEb、而此f二开丁耳叼廿白巾34万口臣汤尸Aicypte尸*9nCl-rvc:an-dtitiandf-1vp+tifii-is*-1irvttannutati
31、on-drjns-卞r左._兰1手口口星中与一产,-zs:it*T*nie:anrrotatiDH-driverResuestrpcIngHaid1-ettapplnsReqfMandleAd:apter尹尸市“:anigtjtiondriu-Eflihuesanncta-d"l'a£n>:armotaticn-driven>->5.2 开发注解的handler使用注解的映射器和注解的适配器,(必须配对使用)gContrarier/任用匚ont01r巧识定是一十芟b!罪publicclsItemsCcntrollerJ(/同其耳映工素/R已ques
32、tMappingTrqnerylT方把斜包一小黎港/一敢连R畏故新手格彗表一庠(SRe-quet1;appin.g(',yquerylterns'publicrilodelAndViewqueryltemsfJthrowsException"力声“Hi”型土金空士登-£N三文表.三里笠W爵哥翕金史也L15t<Iteni5>itensL15t=newArrayList<Items)j/巨Li5t一若无柠否章至Itemsitems_l=newTtemsf)jiteffis_l*已("串声球氾出",jitsfli5_l.set
33、Piriee(6ft00+j;items_l.setDetallf"ThinkPadT450居理量二事=":")iItemsitejns_2=neitfItemsC);itens_2.setNameCf"r);ltens_ZsetPrice(5&Wf);itensZ.5±tDEt3il("iPhoneSR黑手匕;H);itemsLlst.aJdi(iteniSl)3itemsList.add(items_2Jj/-SModeAndViewModelAridViemodelAndView=fiewhtodelAndViewO;/
34、TrequcstsetAttribut,iftzriciteinsListdmodelAnd/iew.addOb-ject(11itemsList*itemsLlst);/指定中莅rod?lAnd7i?w.k''/WEE-JNy75p;'itemi/itemiLiitJsp")jreturnmack14rlem士之阀j)5.3 在spring容器中力口载Handler<1-对于注解的Handl6可以单个配置.实际在发中建议使用组件扫描“<!-<beanclass=11tn-itcast.ssm.controller.ItemsControll
35、er3M/>->-<I-可以扫描8nt广oiler、service.j这里让打推ent广指定ent广。11”的包<context:component'Scanbase-packsge="cn.itcast.ssm.controlierx/context:compcnent-scan>+5.4 部署调试访问:http:/localhost:8080/springmvc/queryItems.action6源码分析(了解)通过前端控制器源码分析spring的执行过程。第一步:前端控制器接收请求调用doDiapathchvoid(fHttpServ1e
36、tRequestrequestgHttpServletResponseresponse)throwsHttpServletRequestprocessedFtequest=requestHandlerExecutionChAinmappedHandl0r3null;intinterceptcrlndex-1;第二步:前端控制器调用处理器查找Handler1/Determinehandlerforthecurrentrequest,m/ppdHdndlcr=口门dln(p广ck25scdRequ史5十protectedgetlidndler(HttpServlete-que与trequest)t
37、hiroHsLxception(for(iHdridlehMdppinghn1this.hdndlertdpping&)if(loggcr.itTracaEfM>bl*d()logger/tract'T-tstinghandlermipa,+hm"inDisputcherServletwithnsug'm+getSsrvletHandlerEecLitionChaSnhandler=getHandler(re-quest);If(handlerI=null)肝七u1sHhandler;returnnull第三步:调用处理器适配器执行Handler,得到执
38、行的结果ModelAndView/Actuallyinvokethehondler.mv-hahandle(processedRequestresponsej(ndppfldHandler.getHandler();第四步:视图渲染,将model的数据填充到request域视图解析,得到viewIhhenctdLuresolveHit;白,udihE.s/icw=resolveViCkfName(nrv.gctViewNanc()<iu,gctMcdc1InternalOjIqcrequest);调用view的渲染方法,将model的数据填充到request域渲染方法ret«&
39、#163;t*cd簟nMexpct*ModeAstA11rabutev(Msp<StringBObject>BodeljHttpS-rv1etR«auestreqmt)threw#营算工针for(Mjp.lEntrytStringj,Oejiect>entry:udel.entry&ct()(StringaodJluie-entry,etKey()ObjectodelvulM-entr-cetV41ue(iif(vodelValue!nuill)(requEmt>-.etAttrliute(fldelFidffiej.mo-JlVdiue);if(lo
40、eeer,IsOtbugEnabled()l.oggrBdobyg("Addrd>k"1.hj=t'"*wdclJiow*'oftyp«"*HodelV«Iu«,frtCl»in().Nm«-("torequestinviewwi±h-+eet9eanilaRe()寸""")j>)Elsa(zquart11rMeAttribunt*model;if(logger.isOebugEnabled()loggerPdebug(Remowflid»odelabjectfc*nod*l榻m才H1f1'prequcitin“彳withh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大连市2027届四上数学期末经典试题含解析
- 2027届承德市滦平县数学三年级第一学期期末联考试题含解析
- 古浪镇卫生院重点传染病防控培训考试题
- 2027届福清市江镜中心小学三上数学期末考试试题含解析
- 齐齐哈尔市2025-2026学年高三适应性调研考试生物试题含解析
- 2026全球工业软件云化转型趋势与本土化替代策略
- 2026中国显示屏企业融资模式创新与资本运作路径研究报告
- 2026中国大数据中心绿色节能行业市场发展趋势与前景展望战略研究报告
- 宏观深度报告:上期有色金属指数2026年7月复盘与8月展望
- 2026中国医美注射填充剂行业消费者行为变迁与营销创新报告
- 心外科临床小讲课
- ESG培训课件教学课件
- 【MOOC】运动与健康-湖北大学 中国大学慕课MOOC答案
- 计算机基础教程电子版
- 城市供水排水设备更新维护
- 五年级暑假日记300字50篇
- 冠状动脉搭桥术后的高血脂管理
- 《统计分析与SPSS的应用(第7版)》课件 第7-12章 SPSS的非参数检验-SPSS的判别分析
- 中国地质矿业有限公司环江县洞吉铅锌矿矿山地质环境保护与土地复垦方案
- SB/T 11067-2013金属材料仓储技术与管理规范
- GB/Z 25756-2010真空技术可烘烤法兰刀口法兰尺寸
评论
0/150
提交评论