ITPub博客

首页 > 应用开发 > Java > 好程序员Java分享SpringMVC之@ResponseBody注解

好程序员Java分享SpringMVC之@ResponseBody注解

原创 Java 作者:好程序员IT 时间:2019-08-22 17:36:07 0 删除 编辑

好程序员Java 分享 SpringMVC @ResponseBody 注解,本章我们学习到 SpringMVC 的服务器端如何提供数据查询服务,这里需要使用两个重要的注解: @ResponseBody @RestController

@ResponseBody 注解

      在前面使用SpringMVC 时, Controller 中的方法返回值会通过视图处理器 ViewResolver 处理为页面的 URL ,然后跳转到对应页面中,如下面例子返回的 hello ,将转换为 /WEB-INF/pages/hello.jsp

  @Controller
  public class UserController{
  @RequestMapping(“/login”)
  public String login(){
  return “hello”;
  }
  }

  

   有时候我们需要用Controller 实现网络服务接口,比如:商品查询、查询天气、新闻数据等。就不需要进行页面跳转而是直接返回数据。

  这时候我们可以在方法上,添加注解:@ResponseBody

  @Controller
  public class UserController{
  @ResponseBody
  @RequestMapping(“/login”)
  public String login(){
  return “hello”;
  }
  }

  

  

  在浏览器中直接显示hello 文字,也就是说添加了 @ResponseBody 注解的方法,返回值会通过 HTTP 响应主体直接发送给浏览器。

 

类型转换器

  默认情况下,使用@ResponseBody 返回的数据只能是 String 类型,其它类型返回时会出现异常:

  

  这里提示没有对应的转换器,这里可以添加转换器将数据转换为特定的格式,如:xml json 等, JSON 是数据通信的主要格式,我们将添加一个 JSON 格式的转换器。配置方法非常简单,我们只需要添加jackson-databind依赖:

  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.7</version>
  </dependency>

  

  Jackson 库可以实现 Java 对象和 JSON 的相互转换,引入 Jackson-databind 依赖后, SpringMVC 会自动添加 Jackson 的转换器。

 

转换自定义类型

  接下来我们再进行测试,添加方法测试返回boolean 数据

      @ResponseBody
      @RequestMapping("/login2")
      public boolean login2(){
          return false;
      }

  


  我们进行数据查询时,需要返回自定义类型的数据,如:用户、商品、订单、文章等,这里我们测试返回自定义类型:

  public class User {
      private int id;
      private String username;
      private String birthday;
      private String sex;
      private String address;
        //添加get\set\构造方法

  

        ...

  }
  @ResponseBody
  @RequestMapping("/login3")
  public User login3(){
      User user = new User(1, "张三", "1990-2-1", "男", "武汉");
      return user;
  }

  


  

  可以看到User对象被转换成了JSON格式。再测试对象集合:

      @ResponseBody
      @RequestMapping("/login4")
      public List<User> login4(){
          List<User> users = new ArrayList<>();
          users.add(new User(1, "张三", "1990-2-1", "男", "武汉"));
          users.add(new User(2, "李四", "1990-2-1", "男", "武汉"));
          users.add(new User(3, "王五", "1990-2-1", "男", "武汉"));
          return users;
      }

  

  

  List集合被转换成了JSON数组,我们从数据库查询到数据后都会放入对应的实体类集合中,然后把集合转换成JSON格式发送给客户端,有了@ResponseBody和Jackson转换器可以很容易的实现。

 

@RestController 注解

  如果一个Controller 类主要用于做网络服务,所有的方法都需要添加 @ResponseBody 注解,我们可以在类的前面加上 @RestController 注解,这个注解相当于 @Controller+@ResponseBody ,也就是说它既可以用于声明类为 Controller ,也可以给所有方法自动添加 @ResponseBody 注解。

  

总结

  本章我们学习了SpringMVC中的@ResponseBody注解,有该注解的方法,可以将数据直接返回给客户端,我们还学习了利用Jackson库提供的转换器,将自定义类型转换为JSON格式,实际项目中有很多地方需要它们来提供查询数据的服务。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913892/viewspace-2654622/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
欢迎关注公众号:好程序员特训营 web前端教程分享 723729549 大数据教程分享 703503210

注册时间:2019-03-20

  • 博文量
    372
  • 访问量
    241238