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

原文連接:http://www.yiidian.com/springmvc/return-value.htmlhtml

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

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

1 普通字符串

返回普通字符串這種狀況比較常見,主要用在咱們處理完業務邏輯後,須要跳轉到應用的其餘頁面。spring

代碼示例:mvc

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

視圖解析器配置: fileapp

頁面地址:yii

file

2 轉發字符串

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

代碼示例:學習

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

頁面地址:網站

file

3 重定向字符串

若是但願使用重定向的方式跳轉頁面,這時可使用重定向字符串完成。3d

代碼示例:

/**
 * 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

相關文章
相關標籤/搜索