向springmvc发送json数据失败,来人帮忙看看

braveboyny 2019-05-16 02:09:42
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script src="http://libs.baidu.com/json/json2/json2.js"></script>
<script type="text/javascript">
$("document").ready(function(){

$("#btn").click(function(){
$.ajax({
type:"POST",
url:"/convert.do",
dataType:"json",
contentType:"application/json",
data:JSON.stringify({id:1,name:"java ee企业级应用"}),
async:true,
success:function(data){
console.log(data);
$("#id").html(data.id);
$("#name").html(data.name);
$("#author").html(data.author);
},
error:function(){
alert("数据发送失败");
}
});
});

});

</script>
<title>Insert title here</title>
</head>
<body>
编号:<span id="id"></span><br>
书名:<span id="name"></span><br>
作者:<span id="author"></span><br>
<button id="btn">发送</button>
</body>
</html>

服务端:


@Controller
public class MyController {
@RequestMapping(value = "/convert")
public void setJson(@RequestBody Book book,HttpServletResponse response) throws IOException {
ObjectMapper mapper = new ObjectMapper();
book.setAuthor("neolyao");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(mapper.writeValueAsString(book));
}
}


最后客户端显示415
...全文
302 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41474050 2019-05-30
  • 打赏
  • 举报
回复
大神,你知道easyui分页实现时查询到的数据闪了一下就又消失了吗?
哒哒BOBO李丶 2019-05-24
  • 打赏
  • 举报
回复
引用 16 楼 qq_28641255的回复:
后台直接返回book 试试 或者转成json 返回json
或者 加上responsebody注解
哒哒BOBO李丶 2019-05-24
  • 打赏
  • 举报
回复
后台直接返回book 试试 或者转成json 返回json
北冥有鱼VoV 2019-05-23
  • 打赏
  • 举报
回复
你反回json数据为什么不用json工具呢?
ZhuCheng Xie 2019-05-22
  • 打赏
  • 举报
回复
不用配置但要有jackson的库,也可以用gson,这两个springmvc会注册消息转换器
braveboyny 2019-05-18
  • 打赏
  • 举报
回复
引用 11 楼 softFE 的回复:
那个, 我没怎么用过json 传参数. 不过, 你后台@RequestBody标注的参数, 不该是String ?
我是直接把json 转换成java对象
toward_south 2019-05-18
  • 打赏
  • 举报
回复
单纯的返回一个类的json对象,就需要json相关的依赖罢了,不需要再去xml里面配置了转换器了,使用默认的转换器就行。
softFE 2019-05-17
  • 打赏
  • 举报
回复
那个, 我没怎么用过json 传参数. 不过, 你后台@RequestBody标注的参数, 不该是String ?
braveboyny 2019-05-16
  • 打赏
  • 举报
回复
引用 1 楼 浪费七年时间 的回复:
既然ajax设置了dataType:"json",请求是Accept: application/json,你后端还response.setContentType("text/html;charset=utf-8")?
我用fastjson 配置就对了,用默认的就不行我把2种不同的地方贴出来你看下 默认spingmvc.xml

<mvc:annotation-driven/>
默认配置服务端

@Controller
public class MyController {
	@RequestMapping(value = "/convert")
	public void setJson(@RequestBody Book book,HttpServletResponse response) throws IOException {
		ObjectMapper maper =new ObjectMapper();
		book.setAuthor("neolyao");
		response.setContentType("application/json;charset=UTF-8");
		response.getWriter().println(maper.writeValueAsString(book));
	}
}
用阿里的fastjson, springmvc.xml

	<mvc:annotation-driven>
			<mvc:message-converters register-defaults="false">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
			<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
			<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
			<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
			<bean id="fastJsonHttpMessageConverter" 
   class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>text/html;charset=UTF-8</value>
						<value>application/json;charset=UTF-8</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>
服务端

@Controller
public class MyController {
	@RequestMapping(value = "/convert")
	@ResponseBody
	public Object setJson(@RequestBody Book book,HttpServletResponse response) throws IOException {
		book.setAuthor("neolyao");
		return book;
	}
}
浪费七年时间 2019-05-16
  • 打赏
  • 举报
回复
引用 8 楼 braveboyny 的回复:
[quote=引用 2 楼 浪费七年时间 的回复:] 既然ajax设置了dataType:"json",请求是Accept: application/json,你后端还response.setContentType("text/html;charset=utf-8")?
去掉了这个dataType:"json",还是显示415,我想问下用springmvc默认的配置,只需要在配置文件里面加<mvc:annotation-driven/> 就行了吧,MapingJacksonHttpMessageConverter不用显式配置了吧,还有就是除了spring的库 还需要引入其他的库吗[/quote] 不用配置但要有jackson的库,也可以用gson,这两个springmvc会注册消息转换器
braveboyny 2019-05-16
  • 打赏
  • 举报
回复
引用 2 楼 浪费七年时间 的回复:
既然ajax设置了dataType:"json",请求是Accept: application/json,你后端还response.setContentType("text/html;charset=utf-8")?
去掉了这个dataType:"json",还是显示415,我想问下用springmvc默认的配置,只需要在配置文件里面加<mvc:annotation-driven/> 就行了吧,MapingJacksonHttpMessageConverter不用显式配置了吧,还有就是除了spring的库 还需要引入其他的库吗
Gemini_Kanon 2019-05-16
  • 打赏
  • 举报
回复
引用 5 楼 braveboyny 的回复:
[quote=引用 3 楼 Gemini_Kanon 的回复:]
头两天刚遇到和你类似的情况,你是没获取到前端的传参吗

我在客户端点发送了,服务器这边都没啥反应[/quote]
嗯,我当时也是,报了400错误,后来后台用流接收的ajax传的application/json类型数据
浪费七年时间 2019-05-16
  • 打赏
  • 举报
回复
引用 4 楼 braveboyny 的回复:
[quote=引用 2 楼 浪费七年时间 的回复:] 既然ajax设置了dataType:"json",请求是Accept: application/json,你后端还response.setContentType("text/html;charset=utf-8")?
我把esponse.setContentType("text/html;charset=utf-8") 这个删了,好像还是一样[/quote] 要么去掉ajax的dataType:"json",要么response.setContentType("application/json")
braveboyny 2019-05-16
  • 打赏
  • 举报
回复
引用 3 楼 Gemini_Kanon 的回复:
头两天刚遇到和你类似的情况,你是没获取到前端的传参吗
我在客户端点发送了,服务器这边都没啥反应
braveboyny 2019-05-16
  • 打赏
  • 举报
回复
引用 2 楼 浪费七年时间 的回复:
既然ajax设置了dataType:"json",请求是Accept: application/json,你后端还response.setContentType("text/html;charset=utf-8")?
我把esponse.setContentType("text/html;charset=utf-8") 这个删了,好像还是一样
Gemini_Kanon 2019-05-16
  • 打赏
  • 举报
回复
头两天刚遇到和你类似的情况,你是没获取到前端的传参吗
浪费七年时间 2019-05-16
  • 打赏
  • 举报
回复
既然ajax设置了dataType:"json",请求是Accept: application/json,你后端还response.setContentType("text/html;charset=utf-8")?
braveboyny 2019-05-16
  • 打赏
  • 举报
回复
book.java

import java.io.Serializable;

public class Book implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String author;
public Book()
{
super();
}
public void setId(Integer id){
this.id=id;
}
public Integer getId(){
return this.id;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAuthor(String author){
this.author=author;
}
public String getAuthor(){
return this.author;
}
@Override
public String toString()
{
return "Book [id="+id+",name="+name+",author="+author+"]";
}
}

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧