文章來源:https://www.cnblogs.com/hello-tl/p/9202658.html
@RestController注解相當於@ResponseBody + @Controller合在一起的作用
// 一般用於接口 或 前后端分離
1.如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp,html頁面,配置的視圖解析器 InternalResourceViewResolver不起作用,返回的內容就是return 里的內容。
// 一般用於后台頁面
2.如果需要返回到指定頁面,則需要用 @Controller 配合視圖解析器 InternalResourceViewResolver 才行。
如果需要返回JSON,XML或自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody注解。
例如
1.如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp,html頁面,配置的視圖解析器 InternalResourceViewResolver不起作用,返回的內容就是return 里的內容。
package com.web.TestRestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.ResponseBody;
@RestController
@RequestMapping("/TestController")
public class TestRestController{
// 返回 return 里面的內容
@RequestMapping(value = "index", method = RequestMethod.GET)
public String index(){
// 返回 return 里面的內容 如字符串 json xml 或自定義返回
return "{}";
}
}
2.如果需要返回到指定頁面,則需要用 @Controller 配合視圖解析器 InternalResourceViewResolver 才行。
如果需要返回JSON,XML或自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody注解。
package com.web.TestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/TestController")
public class TestController{
// 映射文件
@RequestMapping(value = "index", method = RequestMethod.GET)
public String index(){
// 他就會映射到 TestController 目錄下 index.jsp 或 index.html 文件
return "TestController/index";
}
// 返回 return 里面的內容
@RequestMapping(value = "index", method = RequestMethod.GET)
@ResponseBody
public String index(){
// 返回 return 里面的內容 如字符串 json xml 或自定義返回
return "{}";
}
}
