您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)在springMVC中controller的返回類型有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
1、返回ModelAndView
返回ModelAndView時最常見的一種返回結(jié)果。需要在方法結(jié)束的時候定義一個ModelAndView對象,并對Model和View分別進行設(shè)置。
真實的訪問路徑=“前綴”+邏輯視圖名+“后綴”
注意:如果返回的String代表邏輯視圖名的話,那么Model的返回方式如下:
public String testController(Model model){ model.addAttribute(attrName,attrValue);//相當(dāng)于ModelAndView的addObject方法 return "邏輯視圖名"; }
redirect的特點和servlet一樣,使用redirect進行重定向那么地址欄中的URL會發(fā)生變化,同時不會攜帶上一次的request
案例:
public String testController(Model model){ return "redirect:path";//path代表重定向的地址 }
通過forward進行轉(zhuǎn)發(fā),地址欄中的URL不會發(fā)生改變,同時會將上一次的request攜帶到寫一次請求中去
案例:
public String testController(Model model){ return "forward:path";//path代表轉(zhuǎn)發(fā)的地址 }
返回這種結(jié)果的時候可以在Controller方法的形參中定義HTTPServletRequest和HTTPServletResponse對象進行請求的接收和響應(yīng)
request.getRequestDispatcher("轉(zhuǎn)發(fā)路徑").forward(request,response);
response.sendRedirect("重定向路徑");
response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter.write("json串");
以上三種返回值沒有什么重要和不重要的分別,一般來說都會使用到, 只不過有的時候使用的方式會有一些細微的差別
補充:SpringMvc中,Controller方法的多種實現(xiàn)方式(指定返回到哪個頁面,指定返回到頁面的數(shù)據(jù))
@RequestMapping("/list") public ModelAndView itemsList() throws Exception{ List<Items> list = itmesService.list(); //創(chuàng)建ModelAndView視圖 ModelAndView modelAndView = new ModelAndView(); //將list數(shù)據(jù)添加到試圖里 modelAndView.addObject("itemList", list); modelAndView.setViewName("itemList");//設(shè)置視圖的名稱,即返回到哪個頁面 //由于有視圖解析器的作用,省去了前綴和后綴,其實訪問的頁面為("/WEB-INF/jsp/itemList.jsp") return modelAndView; }
@RequestMapping("/itemEdit/{id}") public String itemEdit(@PathVariable("id") Integer id, HttpServletRequest reuqest, Model model) throws Exception{ //String idStr = reuqest.getParameter("id"); Items items = itmesService.findItemsById(id); //將items數(shù)據(jù)加到視圖中 model.addAttribute("item", items); //這里返回editItem,在@Controller的注解下,回自動添加前綴和后綴,實則是返回到頁面("/WEB-INF/jsp/editItem.jsp") return "editItem"; }
public void update(Items items,HttpServletRequest request,HttpServletResponse response)throws Exception{ //返回數(shù)據(jù),將items的內(nèi)容放入items里,jsp頁面調(diào)用items就行 request.setAttribute("items", items); //返回指定的頁面 //如果是void類型的話,就不會去調(diào)用SpringMvc的架構(gòu),因此無法自動加載視圖解析器,所以跳轉(zhuǎn)的 //網(wǎng)頁名稱應(yīng)該為其全路徑名稱 request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response); } 就不會去調(diào)用SpringMvc的架構(gòu),因此無法自動加載視圖解析器,所以跳轉(zhuǎn)的 //網(wǎng)頁名稱應(yīng)該為其全路徑名稱 request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response); }
舉3)中的例子,我在update方法中定義了:
Items items,HttpServletRequest request,以及HttpServletResponse response這三個類型.
但是大家可以發(fā)現(xiàn),其實我在方法中是沒有用到response的,因此,可以把其刪掉,對于程序來說,并不會
產(chǎn)生影響。
因此,大家在定義方法的時候,可以根據(jù)自己的實際需要來定義所需要的類,或者大家怕以后代碼需要改麻煩的話,
全部定義上也是可以的。
更新
例:
@RequestMapping("atimynyc/getUser") @ResponseBody public User getUser(String id){ User user = new User(); user.setUserName = "Atimynyc"; user.setUserAge = 18; user.setUserPhone = "123456789"; return User; }
通過加上ResponseBody,springmvc就知道該接口是返回數(shù)據(jù),例,當(dāng)我們用ajax調(diào)用上面的接口url時atimynyc/getUser,就可以獲得user這個對象。
關(guān)于在springMVC中controller的返回類型有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。