您的位置:首页 > 其它

@Controller和@RestController的区别

2016-11-01 00:00 330 查看
官方文档:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

例如:本来应该到success.jsp页面的,则其显示success.

2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

总结:@RestController

整个类所有方法不再返回视图页面,全部返回方法中定义的返回内容,比如json:

例如:

package com.kbs.platform.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/json")
@RestController
public class JsonController {

@RequestMapping("/map")
public Map<String, String> getmap(){
Map<String, String> map=new HashMap<>();
map.put("a", "b");
map.put("c", "d");
map.put("d", "小家心");
return map;
}

@RequestMapping("/body")
public Map<String, String> getmap2(){
Map<String, String> map=new HashMap<>();
map.put("a", "b");
map.put("c", "d");
map.put("d", "小家心");
return map;
}

}

//实例二 @ResponseBody + @Controller
//这个类的方法既可以返回视图,又可以返回想要的数据

package com.kbs.platform.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/json")
@Controller
public class JsonController {

//这个方法返回视图,没有对应的视图就会报错
@RequestMapping("/map")
public Map<String, String> getmap(){
Map<String, String> map=new HashMap<>();
map.put("a", "b");
map.put("c", "d");
map.put("d", "小家心");
return map;
}
//这个方法返回json 不再返回视图
@RequestMapping("/body")
public Map<String, String> getmap2(){
Map<String, String> map=new HashMap<>();
map.put("a", "b");
map.put("c", "d");
map.put("d", "小家心");
return map;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息