温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-22 10:39:07 来源:网络 阅读:328 作者:wx5d42865f47214 栏目:编程语言

好程序员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”;

  }

  }

  

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

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

 

类型转换器

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

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

  这里提示没有对应的转换器,这里可以添加转换器将数据转换为特定的格式,如:xmljson等,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;

      }

  

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

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

  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;

  }

  

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

  

  可以看到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;

      }

  

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

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

 

@RestController注解

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

  

总结

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI