Spring中ModelAndView的5种常用方法详解:从基础到实战应用
鍝庯紝浣犲垰瀛pring鐨勬椂鍊欙紝鏈夋病鏈夐亣鍒拌繃杩欑鎯呭喌锛熸槑鏄庢暟鎹兘瀛樺ソ浜嗭紝椤甸潰姝绘椿鏄剧ず涓嶅嚭鏉ワ紱鎴栬€呮兂璺宠浆涓鍥撅紝缁撴灉娴忚鍣ㄧ洿鎺ユ姤404銆傚埆鎱岋紝浠婂ぉ鍜变滑灏卞敔鍞犺繖涓晳鍦虹鍣ㄢ€斺€斺€?strong>鈥婱odelAndView鈥?/strong>鈥嬶紝淇濆噯浣犲惉瀹岀洿鎷嶅ぇ鑵匡細"鍘熸潵杩樿兘杩欎箞鐜╋紒"
涓€銆佸暐鏄疢odelAndView锛熷厛鎼炴噦杩欎釜鍐嶈锛?/h3>
绠€鍗曠矖鏆村湴璇达紝瀹冨氨鏄€?strong>鈥嬫暟鎹揩閫掑憳+瀵艰埅浠€?/strong>鈥嬬殑缁撳悎浣撱€備妇涓牀瀛愶紝浣犲幓椁愬巺鐐硅彍锛圕ontroller澶勭悊璇锋眰锛夛紝鏈嶅姟鍛樺緱鎶婅彍绔笂妗岋紙杩斿洖瑙嗗浘锛夛紝杩樺緱鎹庡甫璋冩枡鐡讹紙浼犻€掓暟鎹級瀵瑰惂锛烳odelAndView灏辨槸骞茶繖涓椿鐨勶紒
鈥?strong>鈥嬩笁涓牳蹇冨姛鑳解€?/strong>鈥嬬粰浣犲垝閲嶇偣锛?/p>
- 馃摝 鎵撳寘瑕佷紶缁欓〉闈㈢殑鏁版嵁锛圡odel閮ㄥ垎锛?/li>
- 馃椇锔?鍛婅瘔Spring璇ュ線鍝釜椤甸潰璺筹紙View閮ㄥ垎锛?/li>
- 鈿?鏀寔閾惧紡璋冪敤锛堝啓浠g爜璐兼祦鐣咃級
浜屻€?澶у繀鏉€鎶€锛屼粠闈掗摐鍒扮帇鑰?/h3>
1. 绌烘墜閬撹捣鎵嬪紡鈥斺€旀棤鍙傛瀯閫犲嚱鏁?/h4>
java澶嶅埗ModelAndView mav = new ModelAndView();
mav.addObject("msg", "娆㈣繋鏂板悓瀛︼紒");
mav.setViewName("welcome");
java澶嶅埗ModelAndView mav = new ModelAndView(); mav.addObject("msg", "娆㈣繋鏂板悓瀛︼紒"); mav.setViewName("welcome");
鈥?strong>鈥嬮€傚悎鍦烘櫙鈥?/strong>鈥嬶細闇€瑕佸垎姝ユ搷浣滄椂锛屽氨鍍忔惌绉湪涓€鏍锋參鎱㈢粍瑁呫€備笉杩囪瀹炶瘽锛岃繖绉嶅啓娉曠幇鍦ㄧ敤寰楀皯浜嗭紝姣曠珶鍚庨潰鏈夋洿棣欑殑鍐欐硶绛夌潃鍜变滑銆?/p>
鈥?strong>鈥嬫暡榛戞澘鈥?/strong>鈥嬶細璁板緱鏈€鍚庝竴瀹氳setViewName锛屼笉鐒跺氨鍍忓瘎蹇€掓病鍐欏湴鍧€锛屼笢瑗块€佸摢鍘伙紵
2. 涓€姝ュ埌浣嶈鏁版嵁鈥斺€斿甫Model鍙傛暟鐨勬瀯閫?/h4>
java澶嶅埗Map params = new HashMap<>();
params.put("userCount", 158);
ModelAndView mav = new ModelAndView("dashboard", params);
Map params = new HashMap<>();
params.put("userCount", 158);
ModelAndView mav = new ModelAndView("dashboard", params);
鈥?strong>鈥嬩紭鍔垮姣旇〃鈥?/strong>鈥嬶細
鏂规硶 | 浠g爜琛屾暟 | 鍙鎬?/th> | 閫傚悎鍦烘櫙 |
---|---|---|---|
鏃犲弬鏋勯€犲嚱鏁?/td> | 3琛?/td> | 涓€鑸?/td> | 澶嶆潅鏁版嵁缁勮 |
甯odel鍙傛暟鐨勬瀯閫?/td> | 2琛?/td> | 浼樼 | 宸叉湁鐜版垚鏁版嵁闆嗗悎 |
鈥?strong>鈥嬮伩鍧戞寚鍗椻€?/strong>鈥嬶細鏈変簺鏂版墜浼氭妸Map鐨勬硾鍨嬪啓鎴?string,>锛岀粨鏋滀紶涓猆ser瀵硅薄杩涘幓鐩存帴鍘熷湴鐖嗙偢锛屽崈涓囨敞鎰忔暟鎹被鍨嬪尮閰嶏紒
3. 鑺卞紡浼犲弬娉曗€斺€攁ddObject鍏ㄥ妗?/h4>
java澶嶅埗// 鏈€甯哥敤濮垮娍
mav.addObject("currentUser", user);
// 闅愯棌鎶€鑳斤細涓嶆寚瀹歬ey鍚?/span>
mav.addObject(user); // 鑷姩鍙栫被鍚嶉瀛楁瘝灏忓啓锛坲ser锛?/span>
// 涓€娆″澶氫釜
mav.addAllObjects(paramsMap);
// 鏈€甯哥敤濮垮娍
mav.addObject("currentUser", user);
// 闅愯棌鎶€鑳斤細涓嶆寚瀹歬ey鍚?/span>
mav.addObject(user); // 鑷姩鍙栫被鍚嶉瀛楁瘝灏忓啓锛坲ser锛?/span>
// 涓€娆″澶氫釜
mav.addAllObjects(paramsMap);
鈥?strong>鈥嬩釜浜哄績寰椻€?/strong>鈥嬶細鍒氬紑濮嬪鐨勬椂鍊欐€荤籂缁搆ey鍚嶆€庝箞璧凤紝鍚庢潵鍙戠幇鑷姩鍛藉悕鏄湡棣欙紒涓嶈繃鍥㈤槦寮€鍙戞椂杩樻槸寤鸿鏄惧紡鍛藉悕锛岄槻姝㈠悗闈㈠悓浜嬬湅浠g爜涓€鑴告嚨銆?/p>
4. 瑙嗗浘璺宠浆榛戠鎶€鈥斺€攕etViewName鐨勫鐢?/h4>
java澶嶅埗// 鏅€氭ā寮?/span>
mav.setViewName("redirect:/login"); // 閲嶅畾鍚?/span>
// 杩涢樁鐜╂硶
mav.setViewName("forward:/api/getData"); // 璇锋眰杞彂
// 鍐风煡璇嗭細杩樿兘鐩存帴new瑙嗗浘瀵硅薄
mav.setView(new RedirectView("/home"));
// 鏅€氭ā寮?/span>
mav.setViewName("redirect:/login"); // 閲嶅畾鍚?/span>
// 杩涢樁鐜╂硶
mav.setViewName("forward:/api/getData"); // 璇锋眰杞彂
// 鍐风煡璇嗭細杩樿兘鐩存帴new瑙嗗浘瀵硅薄
mav.setView(new RedirectView("/home"));
鈥?strong>鈥嬭娉暀璁€?/strong>鈥嬶細鏈夋蹇樹簡鍐?redirect:"鍓嶇紑锛岀粨鏋滅洿鎺ヨ烦杞埌/WEB-INF/views/redirect:/login.jsp锛岀洿鎺?04璀﹀憡锛佸悇浣嶅紩浠ヤ负鎴掑晩銆?/p>
5. 閾惧紡缂栫▼鈥斺€旇閫煎繀澶?/h4>
java澶嶅埗return new ModelAndView("report")
.addObject("sales", salesData)
.addObject("chartType", "3D鏌辩姸鍥?);
return new ModelAndView("report")
.addObject("sales", salesData)
.addObject("chartType", "3D鏌辩姸鍥?);
鈥?strong>鈥嬩紭鍔垮垎鏋愨€?/strong>鈥嬶細
- 浠g爜琛屾暟鍘嬬缉50%
- 涓嶇敤璧蜂复鏃跺彉閲忓悕
- 璇昏捣鏉ュ儚鑷劧璇█
涓嶈繃瑕佹彁閱掕悓鏂帮紝鍒负浜嗛摼寮忚€岄摼寮忥紝閬囧埌澶嶆潅閫昏緫杩樻槸鍒嗘鍐欐洿绋冲Ε銆?/p>
涓夈€佸疄鎴樹腑鐨勯獨鎿嶄綔
鏈€杩戠粰鐢靛晢椤圭洰鍋氳鍗曡鎯呴〉锛岄亣鍒颁釜鍏稿瀷鍦烘櫙锛氭棦瑕佹樉绀鸿鍗曟暟鎹紝鍙堣璺宠浆鍒版敮浠橀〉闈€傜敤ModelAndView鍙互杩欎箞鐜╋細
java澶嶅埗ModelAndView mav = new ModelAndView("payment"); mav.addObject("order", orderService.getLatestOrder(userId)); mav.addObject("paymentTypes", Arrays.asList("寰俊","鏀粯瀹?,"閾惰仈"));
鈥?strong>鈥嬪叧閿偣鈥?/strong>鈥嬶細鎶婁笟鍔℃煡璇㈢洿鎺ュ祵濂楀湪閾惧紡璋冪敤閲岋紝鏃繚鎸佷簡浠g爜鏁存磥锛屽張鎶婇〉闈㈤渶瑕佺殑鏁版嵁涓€娆℃€у榻愩€?/p>
鍥涖€佷綘鍙兘浼氳俯鐨勫潙
- 鈥?strong>鈥嬩贡鐢ㄩ噸瀹氬悜瀵艰嚧鏁版嵁涓㈠け鈥?/strong>鈥嬶細璁颁綇閲嶅畾鍚戞槸涓ゆ璇锋眰锛岃鐢≧edirectAttributes瀛樻暟鎹?/li>
- 鈥?strong>鈥嬭鍥捐矾寰勫啓閿欌€?/strong>鈥嬶細鏄庢槑鏂囦欢鍦?WEB-INF/views涓嬶紝闈炶鍐欏叏璺緞
- 鈥?strong>鈥嬬嚎绋嬪畨鍏ㄩ棶棰樷€?/strong>鈥嬶細鍗冧竾鍒妸ModelAndView澹版槑鎴愭垚鍛樺彉閲忥紒锛堣杩囨湁钀屾柊杩欎箞骞诧紝缁撴灉鏁版嵁鍏ㄤ贡濂楋級
鏈€鍚庣殑纰庣蹇?/h3>
铏界劧鐜板湪娴佽鍓嶅悗绔垎绂伙紝浣哅odelAndView鍦ㄤ紶缁熼」鐩噷杩樻槸鎵涙妸瀛愮骇鍒殑瀛樺湪銆傝鍙ユ帍蹇冪獫鐨勮瘽锛岀敪绠℃柊鎶€鏈€庝箞鍙橈紝鈥?strong>鈥嬫帉鎻″簳灞傚師鐞嗏€?/strong>鈥嬫墠鏄‖閬撶悊銆備笅娆$湅鍒伴潰璇曢闂?Model銆丮odelMap銆丮odelAndView鏈変粈涔堝尯鍒?锛屼綘鍑嗚兘鎬煎緱闈㈣瘯瀹樼洿鐐瑰ご锛?/p>
锛堝畬锛?/p>
本文由嘻道妙招独家原创,未经允许,严禁转载