Spring MVC中控制器方法的返回值


原文鏈接:http://www.yiidian.com/springmvc/return-value.html

Spring MVC的控制器方法返回值可以支持多種寫法,每種寫法的場景和效果都不一樣。下面分別來看看每種返回值的使用。

  • 普通字符串
  • 轉發字符串
  • 重定字符串
  • void
  • ModelAndView
  • Java對象

1 普通字符串

返回普通字符串這種情況比較常見,主要用在我們處理完業務邏輯后,需要跳轉到應用的其他頁面。

代碼示例:

/**
 * 1)字符串 - 普通字符串(代表頁面名稱,不是完整路徑,最后經過視圖解析器的解析)
 *    優勢:寫法簡單
 *    劣勢:只能轉發到視圖解析器指定的特定目錄
 */
@RequestMapping("/string")
public String string(){
    System.out.println("一點教程網-普通字符串....");
    //這里返回頁面名稱,必須經過視圖解析器解析的!!!
    return "index";
}

視圖解析器配置:
file

頁面地址:

file

2 轉發字符串

普通字符串,只能轉發到視圖解析器指定前綴的目錄下的頁面,如果想轉發到視圖解析器目錄以外的頁面,這時可以使用轉發字符串的寫法。

代碼示例:

/**
 * 2)字符串 - 轉發字符串
 *     轉發字符串格式:
 *        forward:完整頁面的路徑      例如:forward:/pages/index.jsp
 *
 *    優勢:更加靈活,可以轉到本項目下的任何頁面,可以傳遞request域對象數據
 *    劣勢:寫法稍復雜
 */
@RequestMapping("/forward")
public String forward(){
    System.out.println("一點教程網-轉發字符串....");
    return "forward:/index.html";
}

頁面地址:

file

3 重定向字符串

如果希望使用重定向的方式跳轉頁面,這時可以使用重定向字符串完成。

代碼示例:

/**
 * 3)字符串 - 重定向字符串
 *     重定向字符串格式:
 *        redirect:完整頁面的路徑      例如:redirect:/pages/index.jsp
 *
 *    優勢:很靈活,可以重定向到項目內和項目以外的頁面
 *    劣勢:寫法稍復雜,不能轉發requesy域對象數據
 */
@RequestMapping("/redirect")
public String redirect(){
    System.out.println("一點教程網-重定向字符串....");
    return "redirect:http://www.yiidian.com";
}

4 返回空

一般我們在文件下載的時候,就不需要控制器方法返回任何內容,所以設置為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;
}

5 ModelAndView

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;
}

6 返回Java對象

這里返回的Java對象,可能是普通JavaBean,也可以是List或Map集合等。一般希望把控制器的返回Java對象轉換為Json字符串,才需要返回Java對象。我們下章節重點來講解:《Spring MVC JSON數據轉換》

源碼下載:https://pan.baidu.com/s/1sINJe9oIuysksT00LK31ng

file

歡迎關注我的公眾號::一點教程。獲得獨家整理的學習資源和日常干貨推送。
如果您對我的系列教程感興趣,也可以關注我的網站:yiidian.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM