javascript
SpringMVC小结
一放下就生疏,所以要溫故,所以要筆記。
?
Tip,多數情況下,SpringMVC建議單例執行,Struts2建議多例執行。
原因就在于Struts2使用屬性驅動或模型驅動,而SpringMVC則使用方法的形參接收參數。后者的方法在調用后數據就會銷毀。
?
前提一,SpringMVC的執行流程:DispatcherServlet - HandlerMapping - HandlerAdapter - ViewResolver。
其實就是解析Url,調用合適的Handler,處理Handler的返回數據(ModelAndView,查源碼可知其本質仍是操作request和response)。
注意,SpringMVC的Handler又叫Controller,概念可類比Struts2的Action。
前提二,SpringMVC的使用有傳統代碼和注解兩種方式。兩種方式需要在xml中配置的HandlerMapping和HandlerAdapter是不同的。
前提三,SpringMVC可以開啟RESTful風格訪問。
前提四,xml配置文件中的標簽都有對應的類或接口,所以如果不知道怎么配置,可以查找對應的類或接口。
?
Handler(Controller)的實現方式:
①(非注解)實現Controller接口;
②(非注解)實現HttpRequestHandler接口;
③(注解)@Controller@RequestMapping@RequestParam@PathVariable等。
非注解方式需要實現接口的方法,每次實現都只能對應一個Controller,不方便,僅作了解即可。
注解方式,靈活多變(方法有多種返回類型,方法返回的數據有多種操作方式),當是最佳選擇。
?
Handler(Controller)中方法的形參類似Struts2中Action的屬性或模型,通過不同的形參可以注入不同的對象(如request,pojo等)。
如:
@RequestMapping(value = "/xxx", method = { RequestMethod.POST, RequestMethod.GET }) public String xxx(HttpServletRequest request) throws Exception {request.setAttribute("xxx", xxx);return "abc/xxx";// return "redirect:xxx.action"; //路徑是相對于當前方法路徑的上一級路徑。// return "forward:xxx.action"; //路徑是相對于當前方法路徑的上一級路徑。// 其實就是類內的action。 }上面就是通過形參注入了request對象,從而可以在方法內部操作該對象。
?
?
---------------------------------------------------------------------
SpringMVC已加入了RESTful支持。RESTful是面向資源的架構思想,個人理解:對資源的訪問及處理是其重點。
SpringMVC通過以下三點來保證(個人理解):
??? 【】【】@ResponseBody使Controller【直接返回數據】,而不是直接指向具體的視圖;同時通過MessageConverter和produces="text/plain;charset=UTF-8"可以返回各種格式的數據(XML,json,RSS,TEXT,字節流等)。
?? ?【】【】@ResponseBody就是對應了HTTP協議里的響應體!!!
?? ?【】【】ResponseEntity可以認為是ResponseHeader+ResponseBody。
?? ?
?? ?以上三點(直接返回數據而非頁面、對應響應體、響應頭和響應體),都是針對RESTful風格所需。務必理解啊。
??? Controller方法直接返回ResponseEntity對象,@ResponseBody將該對象轉成符合格式的數據,然后直接返回。
?
轉載于:https://www.cnblogs.com/larryzeal/p/5336042.html
總結
以上是生活随笔為你收集整理的SpringMVC小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线生成CSS3
- 下一篇: SpringMVC一例 是否需要重定向