springboot拦截json后缀的请求,返回json数据
需求:请求list.json返回以下数据
{
"jsonResult": {
"code": 200,
"message": "查询成功",
"nextUrl": null,
"data": [
{
"pageNo": 0,
"id": 1,
"type": "personal",
"avatarUrl": null,
"source": null,
"loginName": "test",
"name": "测试人员",
"certStatus": 0,
"idNum": null,
"password": "567",
"jobId": "smartTravel",
"cellphone": null,
"cellphoneActived": false,
"email": null,
"emailActived": false,
"projectName": "测试项目111",
"balance": 0,
"paymentCode": null,
"provinceId": "beijing",
"cityId": "xichengqu",
"address": "北京市西直门大街3321-1号werer",
"enabled": true,
"createTime": [
2019,
9,
25,
14,
11,
38
]
}
]
}
}
Controller里面有两个方法
@PostMapping(value = "list")
public String list(Model model, String name, Integer certStatus,
@RequestParam(required = false) LocalDate startDate,
@RequestParam(required = false) LocalDate endDate,
Integer pageNo,Integer pageSize) { HashMap<String,Object> map = new HashMap<>();
map.put("name",name);
map.put("certStatus",certStatus);
map.put("startDate",startDate);
map.put("endDate",endDate); Page<ApiUser> list = userService.queryPage(map, pageNo,pageSize);
model.addAttribute("list", list); return "user2/list";
} @GetMapping(value = "list.json")
public JsonResult list(String name, Integer certStatus,
@RequestParam(required = false) LocalDate startDate,
@RequestParam(required = false) LocalDate endDate,
Integer pageNo,Integer pageSize) { HashMap<String,Object> map = new HashMap<>();
map.put("name",name);
map.put("certStatus",certStatus);
map.put("startDate",startDate);
map.put("endDate",endDate); Page<ApiUser> list = userService.queryPage(map, pageNo,pageSize); return successResult("查询成功",list);
}
调试的时候每次都进入list.json方法,实际返回结果却是网页代码。也就是返回list方法对应的视图。
只要进行如下配置就好:
/**
* 配置多视图解析器
*
* @param manager manager 会自动构建,configureContentNegotiation可以进行配置
* @param viewResolvers 当前项目的 viewResolver, (此时会包含上面配置的 freemarkerViewResolver)
* @return ContentNegotiatingViewResolver
* @see WebMvcConfigurerAdapter#configureContentNegotiation(org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer)
*/
@Bean
public ContentNegotiatingViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager, List<ViewResolver> viewResolvers) { ContentNegotiatingViewResolver viewResolver = new ContentNegotiatingViewResolver();
viewResolver.setContentNegotiationManager(manager); // 设置默认view, default view 每次都会添加到 真正可用的视图列表中, json视图没有对应的ViewResolver
View jackson2JsonView = new MappingJackson2JsonView();
viewResolver.setDefaultViews(Collections.singletonList(jackson2JsonView)); Map<String, MediaType> mapping = Collections.singletonMap("json", MediaType.valueOf("application/json;charset=UTF-8")); //实测需要加上这个,否则之前通过实体属性序列化成json,返回json的方法容易出错。 MappingMediaTypeFileExtensionResolver extensionsResolver = new MappingMediaTypeFileExtensionResolver(mapping); manager.addFileExtensionResolvers(extensionsResolver); viewResolver.setViewResolvers(viewResolvers);
return viewResolver;
}
转载自:https://segmentfault.com/a/1190000015721806
类似文章:请求路径@PathVariable注释中有点.英文句号的问题(忽略英文句号后面的后缀)
https://www.programcreek.com/java-api-examples/?class=org.springframework.web.accept.ContentNegotiationManager&method=addFileExtensionResolvers
springboot拦截json后缀的请求,返回json数据的更多相关文章
- shiro异步请求返回JSON响应
shiro异步请求返回JSON响应 需求1:当shiro请求资源,但是没有进行认证时,默认是进行重定向,现在需要返回JSON响应.注意异步请求,服务器重定向后,ajax拿到的是浏览器重定向后的到的页面 ...
- springmvc通过ajax异步请求返回json格式数据
jsp 首先创建index.jsp页面 <script type="text/javascript"> $(function () { $("#usernam ...
- 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法
在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...
- AJAX请求,返回json进行页面绑值
AJAX请求,返回json进行页面绑值 后台 controller @RequestMapping(value = "backjson.do",method=RequestMeth ...
- SpringBoot 拦截器获取http请求参数
SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 目录 SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 获取http请求参数是一种刚需 定义拦截器获取请求 为 ...
- spring 4.x下让http请求返回json串
当前很多应用已经开始将响应返回为json串,所以基于springframework框架开发的服务端程序,让响应返回json字符串成为了一种常用手段. 这里介绍一下如何在spring-MVC框架下方便快 ...
- ajax请求返回json字符串/json对象 处理
1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...
- 使用jQuery发送POST,Ajax请求返回JSON格式数据
问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...
- 学习网络请求返回json对应的model
原来泛型可以这样用: 网络返回基类,返回一个code,msg,body,其中body不确定,所以,我们把它写成泛型 import org.json.JSONObject; /** * 网络请求的基类 ...
随机推荐
- Herbert Schildt
赫伯特·希尔特; Herbert Schildt,是世界顶级程序设计大师,全球顶尖编程图书作者之一. www.HerbSchildt.com 1.c/c++的核心设计原理之一就是程序员的控制,java ...
- 网络编程 --- subprocess模块,struct模块,粘包,UDP协议,socket_server模块
目录 subprocess模块 struct模块 粘包 UDP协议 socket_server模块 subprocess模块 作用: 1.可以帮你通过代码执行操作系统的终端命令 2.并返回终端执行命令 ...
- Luogu 4751 动态DP 模板
题面 动态求最大独立集 题解 树剖后用矩阵转移. 具体见Tweetuzki的洛谷博客 CODE #include <bits/stdc++.h> using namespace std; ...
- Appium自动化测试教程-自学网-monkeyrunner API
MonkeyRunner API MonkeyRunner工具主要有三个类: MonkeyRunner MonkeyDevice MonkeyImage 官方API文档 :http://www.and ...
- Spring security invalid-session-url 的坑(配了permitAll仍然跳转到登录页)
Spring security session配置中如果配了如下的invalid-session-url,配置了permitAll链接首次链接系统时会跳转到登录页,将该配置删除即可解决此问题. < ...
- django项目部署上线 nginx + uwsgi
一.安装python3 安装步骤:https://www.cnblogs.com/zhangqigao/p/11661875.html 二.修改django中的配置文件 修改settings.py ( ...
- centos7的redis加哨兵系统
三台服务器 1.下载 wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gzcd r ...
- 初步学习MySQL
我们之前学习如何安装MySQL数据库 以及 navicat 管理数据库可视化工具 那么现在主要来学习一下如何使用,(操作数据库有很多方式,终端操作.可视化工具操作.编程语句操作) 我们首先学习在终端操 ...
- [vsftpd] ubuntu14.04 ansible剧本安装vsftpd流程及报错排查
需求: 在ubuntu14.04机器上搭建ftp服务,ftp账号通过winscp软件登录后,仅可增删改/data/wwwroot目录. 一.安装步骤 1.apt 安装vsftpd apt-get in ...
- Ubuntu 14.04 查看指定端口的服务
查看已经连接的服务端口(ESTABLISHED) netstat -a 查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap 查看指定端口,可以结合grep命令: net ...