当前位置: 首页 > news >正文

Spring MVC 返回JSON数据

1. 前置准备

1.1 导入jackson依赖

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

1.2 添加json数据转化器

@EnableWebMvc

//TODO: SpringMVC对应组件的配置类 [声明SpringMVC需要的组件信息]//TODO: 导入handlerMapping和handlerAdapter的三种方式//1.自动导入handlerMapping和handlerAdapter [推荐]//2.可以不添加,springmvc会检查是否配置handlerMapping和handlerAdapter,没有配置默认加载//3.使用@Bean方式配置handlerMapper和handlerAdapter
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "org.kkk.controller") //TODO: 进行controller扫描//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {}

2. @ResponseBody

2.1 方法上使用@ResponseBody

可以在方法上使用 @ResponseBody注解,用于将方法返回的对象序列化为 JSON 或 XML 格式的数据,并发送给客户端。在前后端分离的项目中使用!

@GetMapping("/accounts/{id}")
@ResponseBody
public Object handle() {// ...return obj;
}

具体来说,@ResponseBody 注解可以用来标识方法或者方法返回值,表示方法的返回值是要直接返回给客户端的数据,而不是由视图解析器来解析并渲染生成响应体(viewResolver没用)。

@RequestMapping(value = "/user/detail", method = RequestMethod.POST)
@ResponseBody
public User getUser(@RequestBody User userParam) {System.out.println("userParam = " + userParam);User user = new User();user.setAge(18);user.setName("John");//返回的对象,会使用jackson的序列化工具,转成json返回给前端!return user;
}

2.2 类上使用@ResponseBody

如果类中每个方法上都标记了 @ResponseBody 注解,那么这些注解就可以提取到类上。

@ResponseBody  //responseBody可以添加到类上,代表默认类中的所有方法都生效!
@Controller
@RequestMapping("param")
public class ParamController {
}

3. @RestController

类上的 @ResponseBody 注解可以和 @Controller 注解合并为 @RestController 注解。所以使用了 @RestController 注解就相当于给类中的每个方法都加了 @ResponseBody 注解。

例如上述代码可以简化为:

@RestController
@RequestMapping("param")
public class ParamController {
}
http://www.lryc.cn/news/319042.html

相关文章:

  • 前端基础——HTML傻瓜式入门(1)
  • 【AI】如何创建自己的自定义ChatGPT
  • 电子科技大学链时代工作室招新题C语言部分---题号E
  • K8S CNI
  • Python数据分析实验一:Python数据采集与存储
  • 丘一丘正则表达式
  • 工业物联网平台在水务环保、暖通制冷、电力能源等行业的应用
  • 【研发日记】Matlab/Simulink技能解锁(二)——在Matlab Function编辑窗口Debug
  • 从键盘输入两个数,求它们的和并输出 从键盘输入三个数到a,b,c中,按公式值输出
  • 密码解密 C卷(100%用例)(JavaPythonC++Node.jsC语言)
  • 因为manifest.json文件引起的 android-chrome-192x192.png 404 (Not Found)
  • 『 Linux 』进程替换( Process replacement ) 及 简单Shell的实现(万字)
  • 【Linux】从零开始认识进程 — 前篇
  • 公众号留言功能恢复了,你的开通了吗?
  • C语言葵花宝典之——文件操作
  • SSM框架,MyBatis-Plus的学习(下)
  • 边缘计算网关的工作原理及其在工业领域的应用价值-天拓四方
  • 下载指定版本的pytorch
  • STL:List从0到1
  • 利用高分五号02星高光谱数据进行地物识别
  • 前端如何识别上传的二维码---jsQR
  • flink1.18.0 自定义函数 接收row类型的参数
  • JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)
  • 基于eleiment-plus的表格select控件
  • 「❤️万文总结 时光回忆录❤️」那年,我在北京邮电大学计算机学院求学的日子
  • 【四 (1)数据可视化之如何选用正确的图表】
  • PHP<=7.4.21 Development Server源码泄露漏洞 例题
  • 大语言模型RAG-技术概览 (一)
  • 【嵌入式DIY实例】-DIY锂电池电压检测表
  • 生成baidu.com域名的私有证书:Linux系统命令示例