目录
-
Ajax
-
概念
- 异步的JavaScript和xml
- 无需重新加载整个页面的情况下,可以部分更新网页
-
发送异步请求是不会刷新整个页面的
-
实现方式
-
原生js实现
- 不推荐
- 步骤
- 创建核心对象
- 建立连接
- 发送请求
- 接收并处理服务器的响应结果
-
jq实现
- $.ajax()
- 通用方式, 但是有点麻烦
- 参数中使用大括号来传递键值对
- data : {"name":"lq" , "password":"123456"}
- success : function (data) { ... }
- 参数data是用来接受服务器传回来的数据的
- 常用键值对
- url
- type
- data
- success
- error
- dataType
- 设置接收到的数据的响应格式
-
$.ajax({ url:"ajaxServlet1111" , // 请求路径 type:"POST" , //请求方式 //data: "username=jack&age=23",//请求参数 data:{"username":"jack","age":23}, success:function (data) { alert(data); },//响应成功后的回调函数 error:function () { alert("出错啦...") },//表示如果请求响应出现错误,会执行的回调函数 dataType:"text"//设置接受到的响应数据的格式 });
- $.get()
- 和post一样
- $.post()
-
function fun() { $.post("ajaxServlet",{username:"rose"},function (data) { alert(data); },"text"); }
-
- $.ajax()
-
-
-
JSON
-
概念
- JavaScript Object Notation JavaScript对象封装
- JavaScript对象表示法, 可以将传输的数据封装为对象, 类似于javaBean
- 比xml更小更方便
- 使用JSON不需要导入jquery包
-
获取数据
- json对象.键名
- json["键名"]
- 写起来麻烦, 但是, 遍历一个json数据对象时, 如果你想获取值, 又必须使用这个, 因为上面的那个json对象.键名中的键名不能是字符串
- 数组对象[索引]
-
json对象与java对象相互转换
- json作为浏览器与服务器之间的数据传输媒介
-
java对象 ---> json字符串
- writeValue(Object)
- 概念
- json字符串的格式和我们之前写的一样
- 不太常用
- json解析器
- 常见的解析器
- Jsonlib
- 官方解析器
- Gson
- 谷歌家的解析器
- Fastjson
- 阿里的解析器
- jackson
- 我们学的解析器
- 因为后面Spring框架用的就是这个解析器
- Jsonlib
- 常见的解析器
- jackson
- 注解
- @JsonIgnore
- javaBean中有些成员变量并不作为属性使用, 这个时候就可以使用这个注解
- @JsonIgnore
- 注解
-
public void testNew() throws JsonProcessingException { //创建对象 Person person = new Person(); person.setName("lq"); person.setAge(21); person.setGender("m"); //创建核心对象 ObjectMapper objectMapper = new ObjectMapper(); //将java对象转成json字符串 String s = objectMapper.writeValueAsString(person); System.out.println("s = " + s); }
- jackson也可以转换list和map对象, 产生的字符串也正是我们期望的格式
-
@Test public void test5() throws Exception { //创建对象 String json="{\"name\":\"lq\",\"age\":21,\"gender\":\"m\",\"date\":\"2020-03-30\"}"; HashMap<String, Object> map = new HashMap<>(); //创建核心对象 ObjectMapper objectMapper = new ObjectMapper(); Person s = objectMapper.readValue(json,Person.class); System.out.println("s = " + s); }
-
-
json字符串 ---> java对象
- 概念
- readValue(json字符串数据 , Class)
- json字符串的大括号不能少
- 概念
-
-
案例 实时监测用户名是否合法
-
$("#username").blur(function () { //获取标签里的数据 var username = $("#username").val(); //使用post方式传输数据 $.post( "servletFindUser",//url {username:username},//json数据 function (data) {//回调函数 //期望的返回的数据的格式:{userExist:true/false} if (data.userExist){ //用户名存在 $("#span1").css("color","red") $("#span1").html("The username has existed,please use other one") } else { //不存在 $("#span1").html("The username is available") $("#span1").css("color","green") } }, "json"//服务器返回的数据类型, 如果不指定的话, 默认是字符串格式的, 不是json格式, 所以需要在此处特别声明一下 ) })
-
request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); //使用map存储数据 HashMap<String, Object> map = new HashMap<>(); ServiceUser serviceUser = new ServiceUserImpl(); boolean userExist= serviceUser.findUserByUsername(username); if (userExist){ //用户名存在 map.put("userExist",true); }else { //不存在 map.put("userExist",false); } ObjectMapper mapper = new ObjectMapper(); //需要设置响应文件的格式, 否则会乱码 response.setContentType("application/json;charset=utf-8"); //直接将json数据写到response.getWriter()中 mapper.writeValue(response.getWriter(),map);
-