JSON
前后端分离,数据交互
@Controller
public class json {
@RequestMapping(“json1”)
//jackson是第三方jar包,包含@ResponseBody
//@ResponseBody,将服务端返回的对象转换为json对象响应回去,只需要一个简单地注解就可以实现
// @RequestBody
@ResponseBody
public String json1() throws IOException {
//需要一个Jackson的对象的映射器,就是一个类,使用它就可以直接将对象转换为json字符串
ObjectMapper objectMapper = new ObjectMapper();
//创建一个对象
User user = new User();
//将Java对象转换为Json字符串
String string = objectMapper.writeValueAsString(user);
return string;//由于使用了 @ResponseBody注解,这里会将string对象以JSON格式的字符串返回,十分方便
}
}
AJAX
异步的JavaScript和XML
是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
AJAX是一种创建更好更快以及交互性更强的web应用程序的技术
增加B/S的体验性
1,编写Controller,返回消息或者字符串或者json格式的数据;
2,编写ajax请求
1.url:Contrller请求
2.data:键值对
3.success:回调函数
3,给Ajax绑定事件,点击click,失去焦点onblur,键盘弹起 keyup
//第一种方式,服务器要返回一个字符串直接使用repsonse
@RequestMapping(“a1”)
public void ajax1(String name, HttpServletResponse response) throws IOException {
if (“admin”.equals(name)){
response.getWriter().println(“true”);
}
@RequestMapping("/a2")
@RequestBody
public List ajax2(){
List list = new ArrayList<>();
return JsonUtils.getJson(list);//由于@RequestBody 注解,他会返回一个字符串
@ResponseBody 和 @RequestBody 注解的区别:
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用;
在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。例如,异步获取 json 数据,加上 @Responsebody 注解后,就会直接返回 json 数据。
@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。