@Controller和@RestController的区别?

1.@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

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

例如:
1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
若返回json等内容到页面,则需要加@ResponseBody注解
 1 @Controller
 2 @RequestMapping("/login")
 3 //@Api(value = "登录接口",tags = "login control")  坑 tags中如果写中文,swagger无法展开
 4 @Api(description = "登录接口")
 5 public class LoginController {
 6 
 7     @Autowired
 8     IUserService iUserService;
 9 
10     private UsernamePasswordToken token;
11     /**
12      * 登录页面
13      *
14      * @return
15      */
16     @GetMapping("/tologin")
17     public String tologin() {
18         return "/page/backstage/blogin.html";
19     }

2.@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

 

@RestController
@RequestMapping("/menu")
@Api(description = "菜单")
public class MenuController {

    @Autowired
    IMenuService iMenuService;

    @GetMapping("/getMenu")
    @ApiOperation("获取菜单")
    public Result getMenu() {
        List<Tree> menu = iMenuService.findMenu();
        return Result.builder().code(200).object(menu).build();
    }

 

posted @ 2019-12-21 19:21  兰茶茶  阅读(494)  评论(0编辑  收藏  举报