@RestController与@Controller的区别 以及ResourceProperties资源路径

简述Spring 注解的两个@RestController与@Controller之间的区别。

总结:
1、@RestController用于返回像json类型的数据,等价于@Controller+@ResponseBody同样可以返回json类型数据。
2、另外,@Controller还可以返回指定页面,而@RestController不能返回指定页面,只能返回数据。

分析:

开发RESTful API 时,一般都会在Controller上加上@Controller注解,但是有时候加上@RestController

1、@RestController注解等价于@ResponseBody + @Controller。

2、共同点:@RestController和@Controller都可以用来表示Spring某个类是否可以接收HTTP请求

3、不同点:@RestController无法返回指定页面,而@Controller可以

4、@RestController可以直接返回数据,@Controller需要@ResponseBody辅助。但是@RestController无法返回指定页面,而@Controller可以。

5、如果需要返回JSON,XML或自定义mediaType内容到页面,@RestController自己就可以搞定,这个注解对于返回数据比较方便,因为它会自动将对象实体转换为JSON格式。 而@Controller需要在对应的方法加上@ResponseBody注解。

@RestController
@RequestMapping("/showList")
public class ListController {
	
  @RequestMapping(value="findAll", method = RequestMethod.GET)
  public List<User> findAll(){
        //查询所有
        List<User> users = new ArrayList<User>();

        User user1 = new User();
        user1.setUsername("杨过1");
        user1.setPassword("123456");
        user1.setAge(18);
        user1.setSex("男");

        User user2 = new User();
        user2.setUsername("杨过2");
        user2.setPassword("123456");
        user2.setAge(18);
        user2.setSex("男");

        User user3 = new User();
        user3.setUsername("杨过3");
        user3.setPassword("123456");
        user3.setAge(18);
        user3.setSex("男");

        users.add(user1);
        users.add(user2);
        users.add(user3);

        return users ;
    }
  
}

alt

通过@Controller访问页面

源码

@ConfigurationProperties(
    prefix = "spring.resources",
    ignoreUnknownFields = false
)
public class ResourceProperties {
    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{
      "classpath:/META-INF/resources/", 
      "classpath:/resources/", 
      "classpath:/static/", 
      "classpath:/public/"};
  ...
  ...

根据spring ResourceProperties定义,默认的静态资源路径为:

•	classpath:/META-INF/resources/
•	classpath:/resources/
•	classpath:/static/ 常用静态资源目录
•	classpath:/public

我们只要静态资源放在这些目录中任何一个,SpringMVC都会帮我们处理。 我们习惯会把静态资源放在classpath:/static/ 目录下。在resources目录下创建index.html文件

直接访问 http://localhost:8080/index.html 也可以 通过controller由其他页面跳转也可以

@Controller
@RequestMapping("/welcomePage")
public class loginController(){
  
  @GetMapping(value="/login")
  public String login(){
    
   	return "index"; //跳转到视图层indexn.html
    
  }
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务