@Controller和@RestController的区别?

Posted xnuuuu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@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();
    }

 

技术图片

以上是关于@Controller和@RestController的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch源码分析-索引分析(一)

如何在我的新 Spring Boot 项目中关闭 Spring Security?

JavaFX: FXML嵌套和子Controller(Sub-Controller)

@Controller和@RestController的区别?

iOS第八课——Navigation Controller和Tab bar Controller

Angularjs,使用 data-ng-controller 和 ng-controller [重复]