提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
很多同学使用Ajax时,传数据到Controller中成功了,但是返回数据时回调函数却获取不到,下面是解决的办法。
注解问题
@RestController
public class GoodController {
@Autowired
GoodService goodService;
@RequestMapping("/insertGood")
public void insertGood(Good good , HttpServletRequest request, HttpServletResponse response){
try {
request.setCharacterEncoding("utf-8");
response.setHeader("text/html","UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("进来了");
System.out.println(good);
String goodName = "";
try {
goodName =new String(good.getGoodName().getBytes("iso8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
int i = goodService.insertGood(good);
if (i==1){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
}
}
将@Controller改为@RestController即可
也可以在每个方法上写@ResponseBody
这个注解的功能就是把根据前台设置的dataType,去调用相应的HttpMessageConverter,例如json和xml
总结
@RestController注解写在在类上,它是由@Controller和@ResponseBody一起结合的,写在类上会在每个方法中有效
并且该注解相当于给当前控制器中的每一个方法添加一个@ResponseBody注解。
该注解注释后就不会再走视图解析器了(viewResolver),相当于直接使用HTTPServletResponse给响应体设置内容。