识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
例如:
1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
若返回json等内容到页面,则需要加@ResponseBody注解
@CrossOrigin @Controller public class FileUploadController { //跳转到上传文件的页面 @RequestMapping(value="/gouploadimg", method=RequestMethod.GET) public String goUploadImg() { //跳转到 templates 目录下的 uploadimg.html return "uploadimg"; } //处理文件上传 @RequestMapping(value="/testuploadimg", method=RequestMethod.POST) public @ResponseBody String uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) { System.out.println("调用文件上传方法"); String contentType=file.getContentType(); String fileName=file.getOriginalFilename();
2.@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
单独使用 @Controller 不加 @ResponseBody的话一般使用在要返回一个视图。
public class TestController{
// 映射文件
@RequestMapping(value="index", method=RequestMethod.GET)
public String index(){
// 他就会映射到 TestController 目录下 index.jsp 或 index.html 文件
return "TestController/index";
}
}
@RestController 返回JSON 或 XML 形式数据
@RestController只返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中。
@RestController
@RequestMapping("/TestController")
public class TestRestController{
// 返回 return 里面的内容
@RequestMapping(value="index", method=RequestMethod.GET)
public String index(){
// 返回 return 里面的内容 如字符串 json xml 或自定义返回
return "{}";
}
}
@Controller +@ResponseBody 返回JSON 或 XML 形式数据
@Controller +@ResponseBody=@RestController
. Controller, RestController的共同点
都是用来表示Spring某个类的是否可以接收HTTP请求
2. Controller, RestController的不同点
@Controller标识一个Spring类是Spring MVC controller处理器
@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。
示例如下:
@Controller
@ResponseBody
public class MyController { }
--------------------------------------------------------------------------------------------------
@RestController
public class MyRestController { }
文章来自https://www.cnblogs.com/huaxingtianxia/p/5632697.html
*请认真填写需求信息,我们会在24小时内与您取得联系。