• @ResponseBody使用须知


    -------------------siwuxie095

       

       

       

       

       

       

       

       

    @ResponseBody 使用须知

       

       

    使用 @ResponseBody 注解映射响应体

       

       

    @ResponseBody 注解可被应用于方法上,标志该方法的返回值

    应该被直接写回到 HTTP 响应体中去(而不会被被放置到 Model

    被解释为一个视图名)

       

       

       

    在实际开发中,返回 JSON 是最常见的一种方式,而 SpringMVC

    提供了一种更为简便的方式输出 JSON(非 JSP 页面),那就是使

    用 @ResponseBody 注解

       

       

       

    在输出 JSON 时,需要 Jackson 的 jar 包支持,2.x 版本需要导入

    如下三个 jar 包:

       

    1jackson-core

       

    https://github.com/FasterXML/jackson-core/wiki

       

    http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/

       

       

    2jackson-annotations

       

    https://github.com/FasterXML/jackson-annotations/wiki

       

    http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/

       

       

    3jackson-databind

       

    https://github.com/FasterXML/jackson-databind/wiki

       

    http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/

       

       

    「截止目前(2018/03/01),Jackson 最新版本为 2.9.4」

       

       

       

       

       

    例如:

       

    编写一个实体类

       

    User.java:

       

    package com.siwuxie095.entity;

       

    public class User {

       

    private String userId;

    private String userName;

    private String userSex;

    private String userAge;

    public String getUserId() {

    return userId;

    }

    public void setUserId(String userId) {

    this.userId = userId;

    }

    public String getUserName() {

    return userName;

    }

    public void setUserName(String userName) {

    this.userName = userName;

    }

    public String getUserSex() {

    return userSex;

    }

    public void setUserSex(String userSex) {

    this.userSex = userSex;

    }

    public String getUserAge() {

    return userAge;

    }

    public void setUserAge(String userAge) {

    this.userAge = userAge;

    }

    @Override

    public String toString() {

    return "User [userId=" + userId + ", userName=" + userName

    + ", userSex=" + userSex + ", userAge=" + userAge + "]";

    }

    }

       

       

       

    编写一个 Controller 类

       

    UserController.java:

       

    package com.siwuxie095.controller;

       

    import java.util.ArrayList;

    import java.util.List;

       

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.ResponseBody;

       

    import com.siwuxie095.entity.User;

       

       

    @Controller

    public class UserController {

       

    /**

    * 注意:这里返回类型不是 ModelAndView

    *

    * 使用 @ResponseBody 注解将返回的 POJO

    * 对象的 List 集合序列化成 JSON

    */

    @RequestMapping("/show/hi")

    @ResponseBody

    public List<User> show() {

    List<User> userList = new ArrayList<User>();

    for (int i = 0; i < 10; i++) {

    User user = new User();

    user.setUserId("100" + i);

    user.setUserName("小明-"+i);

    user.setUserSex("");

    user.setUserAge("1" + i);

    userList.add(user);

    }

    return userList;

    }

    }

       

       

       

    访问路径:

       

    http://localhost:8080/工程名/show.do

       

       

       

       

       

    原理:

       

    当一个处理请求的方法被标记为 @ResponseBody 时,就说明

    该方法需要输出其它视图(JSON、XML),SpringMVC 通过

    已定义的转化器做转化输出,默认输出 JSON

       

       

       

    注:源码详见 spring-webmvc 的 jar 包中第二个包 org.springframework.

    web.servlet.config 中第一个类 AnnotationDrivenBeanDefinitionParser

       

       

       

       

       

       

    值得注意的是:

       

    @RequestBody 是写在方法参数前,作用于方法参数

       

    @ResponseBody 是写在方法上,作用于方法返回值

       

       

       

    参考链接:

       

    参考链接1参考链接2参考链接3

       

       

       

       

       

    附:

       

    推荐一个模拟发送请求的 Chrome 插件 Advanced REST Client,非常好用!

       

    https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    ListView自定义滑动条
    使用天天模拟器开发Android应用
    自定义对话框
    显示下载进度
    PullToRefresh的使用
    Cookie
    Servlet
    HTTP
    svn
    转:MAVEN常用命令
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/8487428.html
Copyright © 2020-2023  润新知