1、 JSON的优势如下:

1、没有结束标签,长度更短,读写更快。
2、能够直接被JavaScript解析器解析。
3、可以使用数组。
JSON:
{
“id” : 12,
“name” : “gao”,
“age” : 30,
“gender” : “男”,
“interests” : [“篮球”, “爬山”, “旅游”]
}

2、ajax

什么是ajax
Ajax: asynchronous javascript and xml (异步js和xml)
其是可以与服务器进行(异步/同步)交互的技术之一。
ajax的语言载体是javascript。
最大特点:异步请求,不刷新整个页面,只刷新局部也叫局部刷新。

什么是同步,什么是异步
同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态
异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死

易懂的理解:
异步请求:你传输吧,我去做我的事了,你传输完了告诉我一声。
同步请求:你现在传输,我要亲眼看着你传输完成,才去做别的事。

Jquery的Ajax技术(重点)

jquery是一个优秀的js框架,自然对js原生的ajax进行了封装,封装后的ajax的操 作方法更简洁,功能更强大,与ajax操作相关的jquery方法有如下几种,但开发中 经常使用的有三种
1).get(url,[data],[callback],[type])后面三个是可选的可以没有2).get(url, [data], [callback], [type]) 后面三个是可选的可以没有 2).get(url,[data],[callback],[type])后面三个是可选的可以没有2).post(url, [data], [callback], [type])
其中:
url:代表请求的服务器端地址
data:代表请求服务器端的数据(可以是key=value形式也可以是json格式)
callback:表示服务器端成功响应所触发的函数
type:表示服务器端返回的数据类型(jquery会根据指定的类型自动类型转换)
常用的返回类型:text、json、html等

<script>function ajaxGet() {//$.get(url, [data], [callback], [type])$.get('<%=request.getContextPath()%>/ajax',{'name': '张三'},function (jsonObj) {console.log(jsonObj);},'json');}function ajaxPost() {//$.get(url, [data], [callback], [type])$.post('<%=request.getContextPath()%>/ajax',{'name': '张三11'},function (jsonObj) {console.log(jsonObj);},'json');}</script>

3).ajax(option1:value1,option2:value2...);语法:.ajax( { option1:value1,option2:value2... } ); 语法:.ajax(option1:value1,option2:value2...);语法:.ajax({键值对});
常用的option有如下:
async:是否异步,默认是true代表异步。(get/post方式只能异步,不能配置)
data:发送到服务器的参数,建议使用json格式
dataType:服务器端返回的数据类型,常用text和json
success:成功响应执行的函数,对应的类型是function类型
type:请求方式,POST/GET
url:请求服务器端地址

    function ajaxTest() {//$.get(url, [data], [callback], [type])$.ajax({async: true,url: '<%=request.getContextPath()%>/ajax',type: 'GET',data: {'name': '赵六'},dataType: 'json',success: function (jsonObj) {console.log(jsonObj);}});}function ajaxTest() {//$.get(url, [data], [callback], [type])$.ajax({async: true,url: '<%=request.getContextPath()%>/ajax',type: 'Post',data: {'name': '赵六'},dataType: 'json',success: function (jsonObj) {console.log(jsonObj);}});}

3、JSON数据和Java对象的相互转换

@JsonIgnore // 忽略该属性
@JsonFormat(pattern = “yyyy-MM-dd”)以日期格式化该属性


private Date birthday;
//Java对象转为JSON字符串
@Test
public void test1() throws Exception {//1.创建Person对象Person person  = new Person();person.setName("张三");person.setAge(23);person.setGender("男");//2.创建Jackson的核心对象  ObjectMapperObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(person);// {"name":"张三","age":23,"gender":"男","birthday":null}System.out.println(json);
}@Test
public void test4() throws Exception {//1.创建map对象Map<String,Object> map = new HashMap<String,Object>();map.put("name","张三");map.put("age",23);map.put("gender","男");//2.转换ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(map);System.out.println(json);//{"gender":"男","name":"张三","age":23}
}//演示 JSON字符串转为Java对象
@Test
public void test5() throws Exception {//1.初始化JSON字符串// String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";String json = "";//2.创建ObjectMapper对象ObjectMapper mapper = new ObjectMapper();//3.转换为Java对象 Person对象Person person = mapper.readValue(json, Person.class);System.out.println(person);
}
方法 作用
mapper.readValue (对象,类) 将字符串转换为对象
mapper.writeValueAsString(对象) 将对象转换为json字符串
mapper.readValue
//将字符串转换为对象
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);//将对象转换为json字符串
jsonString = mapper.writeValueAsString(student);
System.out.println(jsonString);结果:
Student [ name: Hyl, age: 20 ]{"name" : "Hyl","age" : 20
}

实例1 登录重名提示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form><input type="text" name="name" id="nameId"/><span id="span_nameId"></span><br/><input type="text" name="password" id="password"/><span id="span_password"></span><br/><input type="submit" value="登录"/></form>
<script src="static/js/jquery-2.1.4.js"></script>
<script>$(function (){$('#nameId').blur(function (){var name=$(this).val();$.post('<%=request.getContextPath()%>/ajax2',{'name':name},  //String name = req.getParameter("name"); 获取的数据function (jsonObj){console.log(jsonObj);if(jsonObj.exist){$('#span_nameId').html(jsonObj.msg); //如果和tom相等,在后面输出msg并css改变格式$('#span_nameId').css("color","red");}else{$('#span_nameId').html(jsonObj.msg);$('#span_nameId').css("color","green");}},'json');});});
</script>
</body>
</html>
package com.situ.web.controller;import com.fasterxml.jackson.databind.ObjectMapper;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;@WebServlet("/ajax2")
public class Ajax2Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String name = req.getParameter("name");//{'exist':true,'msg':'此用户太受欢迎,请换一个'}//{'exist':true,'msg':'此用户可以使用'}Map<String,Object> map=new HashMap<>();if(name.equalsIgnoreCase("tom")){  //相等返回真,不相等返回假。map.put("exist",true);map.put("msg","此用户太受欢迎,请换一个");}else{map.put("exist",false);map.put("msg","此用户可以使用");}resp.setContentType("text/html;charset=utf-8");ObjectMapper objectMapper = new ObjectMapper();//objectMapper.writeValueAsString(map) 拿到字符串不返回//map(java对象)转换成json,objectMapper.writeValue(resp.getWriter(),map);}
}

实例2、显示省,市,区

package com.situ.web.controller;import com.fasterxml.jackson.databind.ObjectMapper;
import com.situ.web.pojo.City;
import com.situ.web.pojo.Province;
import com.situ.web.pojo.Area;
import com.situ.web.util.JDBCUtil;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;@WebServlet("/ajax3")
public class Ajax3Servlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String method = req.getParameter("method");switch (method){case "selectProvince":selectProvince(req,resp);break;case "selectCity":selectCity(req,resp);case "selectArea":selectArea(req,resp);default:System.out.println("Ajax3Servlet.service");break;}}private void selectArea(HttpServletRequest req, HttpServletResponse resp) throws IOException {String cityId = req.getParameter("cityId");Connection connection = null;PreparedStatement statement = null;ResultSet resultSet = null;List<Area> list = new ArrayList<>();try {connection = JDBCUtil.getConnection();String sql = "select id,area,city_id from tm_area where city_id=?";statement = connection.prepareStatement(sql);statement.setInt(1, Integer.parseInt(cityId));System.out.println(statement);resultSet = statement.executeQuery();while (resultSet.next()) {int id = resultSet.getInt("id");String area = resultSet.getString("area");Area a = new Area(id,area,Integer.parseInt(cityId));list.add(a);}} catch (SQLException throwables) {throwables.printStackTrace();}resp.setContentType("text/html;charset=utf-8");ObjectMapper objectMapper = new ObjectMapper();objectMapper.writeValue(resp.getWriter(), list);}private void selectCity(HttpServletRequest req, HttpServletResponse resp) throws IOException {String provinceId = req.getParameter("provinceId");Connection connection = null;PreparedStatement statement = null;ResultSet resultSet = null;List<City> list = new ArrayList<>();try {connection = JDBCUtil.getConnection();String sql = "select id,city,province_id from tm_city where province_id=?";statement = connection.prepareStatement(sql);statement.setInt(1, Integer.parseInt(provinceId));System.out.println(statement);resultSet = statement.executeQuery();while (resultSet.next()) {int id = resultSet.getInt("id");String city = resultSet.getString("city");City ci = new City(id, city, Integer.parseInt(provinceId));list.add(ci);}} catch (SQLException throwables) {throwables.printStackTrace();}resp.setContentType("text/html;charset=utf-8");ObjectMapper objectMapper = new ObjectMapper();objectMapper.writeValue(resp.getWriter(), list);}private void selectProvince(HttpServletRequest req, HttpServletResponse resp) throws IOException {Connection connection=null;PreparedStatement statement= null;ResultSet resultSet =null;List<Province> list=new ArrayList<>();try {connection= JDBCUtil.getConnection();  //JDBCUtil工具类建立链接String sql = "select id,province from tm_province";//写sql语句statement=connection.prepareStatement(sql);//执行sql语句System.out.println(statement);resultSet=statement.executeQuery();//executeQuery将执行结果保存到resultSet中while(resultSet.next()){//如果不为空,得到各个值,存到表单中int id=resultSet.getInt("id");String province = resultSet.getString("province");Province provin=new Province(id,province);list.add(provin);}} catch (SQLException throwables) {throwables.printStackTrace();}
resp.setContentType("text/html;charset=utf-8"); //规范编码ObjectMapper objectMapper = new ObjectMapper();  //new objectMapper对象objectMapper.writeValue(resp.getWriter(),list); //response.getWriter()响应信息通过生成的对象输出到网页上,当响应结束时它自动被关闭,与jsp页面无关,无需刷新页面//形象的比喻:当我们调用response.getWriter()这个对象同时获得了网页的画笔,这时你就可以通过这个画笔在网页上画任何你想要显示的东西。}
}
<%--Created by IntelliJ IDEA.User: dellDate: 2022/7/28Time: 9:08To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
省份:<select id="provinceId"></select>
城市:<select id="cityId"><option>----请选择城市----</option>
</select>
区县:<select id="areaId"><option>----请选择地区----</option>
</select>
<script src="static/js/jquery-2.1.4.js"></script>
<script type="text/javascript">$(function (){  //ajax表单$.post(    //post请求'<%=request.getContextPath()%>/ajax3?method=selectProvince',  //url地址function (jsonObj){console.log(jsonObj);//19: {id: 450000, province: '广西壮族自治区'}// 20: {id: 460000, province: '海南省'}// for(var i=0;i<jsonObj.length;i++){//// }$(jsonObj).each(function (){  //callback:表示服务器端成功响应所触发的函数//this//<option value='460000'>海南省<option>$('#provinceId').append('<option value="'+this.id+'">'+this.province+'</option>'); //选择省份id在后面添加option,value='this.id' ,信息即省份});},'json'  //type:表示服务器端返回的数据类型(jquery会根据指定的类型自动类型转换)  常用的返回类型:text、json、html等);$('#provinceId').change(function() {   //('#')id选择器var provinceId = $('#provinceId').val();$('#cityId option:gt(0)').remove();   //gt(0)表示,大于option组第0个,(从第一个开始)移除后面的消息,只保留<option>----请选择城市----</option>//这样可以在更换省份的时候仅保留更换后显示的城市$.post('<%=request.getContextPath()%>/ajax3?method=selectCity',{'provinceId': provinceId},  //获取省份来查看城市// data:代表请求服务器端的数据(可以是key=value形式也可以是json格式)function (jsonObj) {       //callback:表示服务器端成功响应所触发的函数console.log(jsonObj);$(jsonObj).each(function () {$('#cityId').append('<option value="' + this.id + '">' + this.city + '</option>');});},'json');});$('#cityId').change(function (){var cityId=$('#cityId').val();$('#areaId option:gt(0)').remove();$.post('<%=request.getContextPath()%>/ajax3?method=selectArea',{'cityId':cityId},function (jsonObj){console.log(jsonObj);$(jsonObj).each(function (){$('#areaId').append('<option value="' + this.id + '">' + this.area + '</option>')});},'json');});});
</script>
</body>
</html>

最近所学的Json以及ajax的应用相关推荐

  1. 翻译:三分钟学懂JSON

    Understanding JSON: the 3 minute lesson 三分钟学懂JSON Two months ago you'd never heard of JSONIf you are ...

  2. Servlet学习DAY_02:重定向/ 文件上传/ Cookie和Session/ 导入一个工程 / 配置欢迎页面 / 同步请求和异步请求/JSON和AJax介绍 /过滤器

    重定向 重定向是服务器告诉客户端往指定的路径再次发出请求的指令 执行过程: 当服务器执行重定向方法时会给客户端返回302状态码和一个请求路径,浏览器接收到302后会立即往指定的路径再次发出请求 res ...

  3. 使用jquery+json实现ajax的方法

    在使用Jquery + json 的过程中由于一个小问题没有注意到,程序一直有错误.在网上找了很多JSON方面的文章但基本都是很简单的举例,所以我觉得有必要写一个完整的JQuery + json 实现 ...

  4. js中的json ajax,js结合json实现ajax简单实例

    这篇文章主要为大家详细介绍了js结合json实现ajax简单实例的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前期准备 1.安装wampserver或者其他相似软件来搭建本地集成安装环 ...

  5. java笔记:自己动手写javaEE框架(七)--使用JSON和Ajax技术

    今天我要将json和ajax引入到我所写的框架,不过今天用到的技术有部分不是我框架最终使用到的技术,比如ajax技术,我用到的是最为原始的ajax技术,这次算是对老技术的回顾,不过不管技术如何演进,对 ...

  6. ajax解析json中的对象数组对象,在JQuery中检索json数组后获取json对象Ajax

    我使用JQuery AJAX检索某些数据(标题和说明).正如你可以看到我打通的结果,并出结果的JSON数组和循环div标签中在JQuery中检索json数组后获取json对象Ajax success ...

  7. jQuery——高级(js对象、json、ajax)

    目录 js对象 json ajax js对象 创建js对象的两种方式: 1.通过new Object创建: var p1 = new Object(); // 设置属性,和方法 p1.name = & ...

  8. 精通 Grails: 用 JSON 和 Ajax 实现异步 Grails

    本文讨论 Grails 对于其互补技术 JSON 和 Ajax 的支持.在前几期的 精通 Grails 系列文章中,JSON 和 Ajax 都扮演支援者的角色,而这一次,它们担任主角.您将使用内置的 ...

  9. JSON與ajax使用方法

    JSON:JavaScript 对象表示法(JavaScript Object Notation 是存储和交换文本信息的语法.类似 XML. 比 XML 更小.更快,更易解析. JSON 是一种数据格 ...

最新文章

  1. 多级页表如何节省内存
  2. 鼠标右击 html5,认识HTML--写出第一个简易网页 -------16岁的小前端
  3. Java经典编程题50道之十七
  4. 2463: [中山市选2009]谁能赢呢? Codeforces Round #429 (Div. 2) B. Godsend noip三国游戏...
  5. JavaScript中 var reEmail=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; //邮箱检测
  6. 【学习笔记】3、Jupyter Notebook无法打开问题处理
  7. C++N queensN皇后的优化算法(附完整源码)
  8. 形参与实参在函数中的传递
  9. github怎么切换到gitee_AOSP-RISCV 的开源仓库在 Gitee 上新建了镜像
  10. 电脑显示器不亮主机正常_电脑主机已开机 显示屏却不亮(看完秒懂)
  11. STM32F407+CubeMX-使用TIM计算编码器的脉冲总数,并计算脉冲方向
  12. Codeforces Round #381 (Div. 2)
  13. 遇到一个valgrind自身的bug
  14. Sampleson Reed106 Mac - Sampleson系列插件中一款出色的电钢琴模拟插件
  15. 如何自定义一个注解(@Annotation)
  16. ScreenToGif录制录屏gif软件的推荐通用设置,优化使用体验
  17. Linux: SSH免密登录配置完了不生效
  18. 模拟人生畅玩版无线连接服务器超时,打开模拟人生™:畅玩版提示网络异常或者连接不上...
  19. 《Head First HTML5 javascript》第7章 表单
  20. 76. Lotus Notes编程中的命名习惯

热门文章

  1. c语言程序设计策划书,C语言程序设计大赛策划书(陈雷)
  2. PDF文件只能打印出第一页
  3. 【开源教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解
  4. Pytorch的骚操作
  5. 从国外的网站上下载包很慢的解决办法
  6. 【CAD算法】【计算机图形学】Bezier贝塞尔曲线生成程序(python/numpy实现)[1]
  7. 移动端复制文本到剪贴板唤起微信安卓和ios兼容性
  8. 经济寒冬下更要学技术
  9. 在Linux 系统下安装zotero
  10. 【观察】让创新和效率走出“办公室”,联想智慧办公“再进化”