大家好,關于springmvc的處理流程很多朋友都還不太明白,不過沒關系,因為今天小編就來為大家分享關于spring的工作流程的知識點,相信應該可以解決大家的一些困惑和問題,如果碰巧可以解決您的問題,還望關注下本站哦,希望對各位有所幫助!
springmvc事務處理注解方式
tx這樣的annotatiom方式更簡單不需要再去寫代碼創建鏈接等
springmvc怎么處理返回值
以下是SpringMvc原生支持的返回類型,如果返回Json,可以用JsonString或者Map,
ModelAndView
Model
ModelMap
Map
View
String
Void
還可以返回類,操作步驟見下面介紹。
需要注意的是,SpringMvc與Jackson結合使用時,如果返回的是一個 Object、或者返回的Map中是Object型的,就需要對Object中的成員變量加注解,否則會報 錯:org.springframework.web.HttpMediaTypeNotAcceptableException:Couldnot findacceptablerepresentation,500codeerror。
原因是Jackson默認情況下不知道怎么去序列化,方法有:
1.為成員變量增加getter、setter方法
2.或者也可以給field加上@JsonProperty注解,(也可在getter上加),還能用它指定序列化時的屬性名
@JsonProperty可以標注在field或者getter上,
Definesnameofthelogicalproperty,i.e. Jsonobjectfieldnametouseforthe property(i.e.@JsonProperty("GID")):ifemptyString(whichisthe default),willusenameofthefieldthatisannotated.
代碼示例:
classItemContent{ privateintgid; privateintsid; privateDatecreateTime; privateStringgname; privateStringname; privateStringnologinUrl; @JsonProperty intgetGid(){ returngid; } voidsetGid(intgid){ this.gid=gid; } @JsonProperty intgetSid(){ returnsid; } ............................. @RequestMapping(value="/dissert/getServerList.do") @ResponseBody publicObjectgetServerList(HttpServletRequestrequest){ Map<String,Object>resultMap=newHashMap<String,Object>(); .................................. List<ItemContent>tempList=newArrayList<ItemContent>(); for(GameServergameServer:listServers){ ...................... ItemContentitem=newItemContent(); item.setGid(gameServer.getGid()); item.setGname(gameServer.getGname()); item.setSid(gameServer.getSid()); item.setName(gameServer.getName()); item.setCreateTime(gameServer.getCreateTime()); } tempList.add(item); } } resultMap.put("open",tempList); returnresultMap; }
springmvc重要組件
SpringMVC重要的五大組件:
DispatcherServlet、HandleMapping、Controller、ModeAndView、ViewResolver。
1.DispatcherServlet
這個控件是SpringMVC最核心的一個控件,顧名思義其實他就是一個Servlet,是Spring寫好的一個Servlet
2.HandleMapping
控件標明了路徑與Controller的對應關系,不同的路徑訪問不同的Controller
3.Controller
用來處理業務邏輯的Java類
4.ModeAndView
Mode用來綁定處理后所得的數據,View視圖名
5.ViewResolver
視圖解析器明確了視圖名與視圖對象的關系,是調用demo.jsp還是調用demo.html,以及明確視圖的位置
spring mvc原理詳解
SpringMVC運行原理
1.客戶端請求提交到DispatcherServlet
2.由DispatcherServlet控制器查詢一個或多個HandlerMapping,找到處理請求的Controller
3.DispatcherServlet將請求提交到Controller
4.Controller調用業務邏輯處理后,返回ModelAndView
5.DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖
6.視圖負責將結果顯示到客戶端
springmvc的工作流程是什么
spring工作的流程
流程如下:
1、用戶發起請求到前端控制器(DispatcherServlet),該控制器會過濾出哪些請求可以訪問Servlet、哪些不能訪問。就是url-pattern的作用,并且會加載springmvc.xml配置文件。
2、前端控制器會找到處理器映射器(HandlerMapping),通過HandlerMapping完成url到controller映射的組件,簡單來說,就是將在springmvc.xml中配置的或者注解的url與對應的處理類找到并進行存儲,用map<url,handler>這樣的方式來存儲。
3、HandlerMapping有了映射關系,并且找到url對應的處理器,HandlerMapping就會將其處理器(Handler)返回,在返回前,會加上很多攔截器。
4、DispatcherServlet拿到Handler后,找到HandlerAdapter(處理器適配器),通過它來訪問處理器,并執行處理器。
5、執行處理器
6、處理器會返回一個ModelAndView對象給HandlerAdapter
7、通過HandlerAdapter將ModelAndView對象返回給前端控制器(DispatcherServlet)
8、前端控制器請求視圖解析器(ViewResolver)去進行視圖解析,根據邏輯視圖名解析成真正的視圖(jsp),其實就是將ModelAndView對象中存放視圖的名稱進行查找,找到對應的頁面形成視圖對象
9、返回視圖對象到前端控制器。
10、視圖渲染,就是將ModelAndView對象中的數據放到request域中,用來讓頁面加載數據的。
11、通過第8步,通過名稱找到了對應的頁面,通過第10步,request域中有了所需要的數據,那么就能夠進行視圖渲染了。最后將其返回即可。
好了,文章到此結束,希望可以幫助到大家。