原文連接:http://www.yiidian.com/springmvc/return-value.htmlhtml
Spring MVC的控制器方法返回值能夠支持多種寫法,每種寫法的場景和效果都不同。下面分別來看看每種返回值的使用。java
返回普通字符串這種狀況比較常見,主要用在咱們處理完業務邏輯後,須要跳轉到應用的其餘頁面。spring
代碼示例:mvc
/** * 1)字符串 - 普通字符串(表明頁面名稱,不是完整路徑,最後通過視圖解析器的解析) * 優點:寫法簡單 * 劣勢:只能轉發到視圖解析器指定的特定目錄 */ @RequestMapping("/string") public String string(){ System.out.println("一點教程網-普通字符串...."); //這裏返回頁面名稱,必須通過視圖解析器解析的!!! return "index"; }
視圖解析器配置: app
頁面地址:yii
普通字符串,只能轉發到視圖解析器指定前綴的目錄下的頁面,若是想轉發到視圖解析器目錄之外的頁面,這時可使用轉發字符串的寫法。jsp
代碼示例:學習
/** * 2)字符串 - 轉發字符串 * 轉發字符串格式: * forward:完整頁面的路徑 例如:forward:/pages/index.jsp * * 優點:更加靈活,能夠轉到本項目下的任何頁面,能夠傳遞request域對象數據 * 劣勢:寫法稍複雜 */ @RequestMapping("/forward") public String forward(){ System.out.println("一點教程網-轉發字符串...."); return "forward:/index.html"; }
頁面地址:網站
若是但願使用重定向的方式跳轉頁面,這時可使用重定向字符串完成。3d
代碼示例:
/** * 3)字符串 - 重定向字符串 * 重定向字符串格式: * redirect:完整頁面的路徑 例如:redirect:/pages/index.jsp * * 優點:很靈活,能夠重定向到項目內和項目之外的頁面 * 劣勢:寫法稍複雜,不能轉發requesy域對象數據 */ @RequestMapping("/redirect") public String redirect(){ System.out.println("一點教程網-重定向字符串...."); return "redirect:http://www.yiidian.com"; }
通常咱們在文件下載的時候,就不須要控制器方法返回任何內容,因此設置爲void便可。
代碼示例:
/** * 4)返回void * 用於文件下載 */ @RequestMapping("/void") public void returnVoid(HttpServletResponse response){ System.out.println("void...."); //模擬文件下載 //1.讀取須要下載的文件 File file = new File("e:/spring.jpg"); //2.構建文件輸入流 try { InputStream in = new FileInputStream(file); //3.獲取文件輸出流(從response對象獲取) OutputStream out = response.getOutputStream(); //4.邊讀邊寫 byte[] buf = new byte[1024]; int len = 0; while( (len = in.read(buf))!=-1 ){ out.write(buf,0,len); } //5.流資源關閉 out.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } return; }
Spring MVC提供了ModelAndView對象,該對象既能夠存儲數據到request域,也能夠設置視圖。其實Spring MVC任何處理器適配器最終執行完控制器後,都會返回ModelAndView對象。因此這是一個比較底層的對象。
代碼示例:
/** * 5)ModelAndView: 封裝了Model數據和視圖數據的對象 */ @RequestMapping("/mv") public ModelAndView mv(){ ModelAndView mv = new ModelAndView(); //設置模型數據 mv.addObject("model","一點教程網"); //設置視圖數據 mv.setViewName("index"); return mv; }
這裏返回的Java對象,多是普通JavaBean,也能夠是List或Map集合等。通常但願把控制器的返回Java對象轉換爲Json字符串,才須要返回Java對象。咱們下章節重點來說解:《Spring MVC JSON數據轉換》
源碼下載:https://pan.baidu.com/s/1sINJe9oIuysksT00LK31ng
歡迎關注個人公衆號::一點教程。得到獨家整理的學習資源和平常乾貨推送。 若是您對個人系列教程感興趣,也能夠關注個人網站:yiidian.com