一:首先是把环境配置好
准备工作:导入对json处理的jar包,在pom.xml中添加依赖。
dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 处理json -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
在src/main/java目录下创建ajax文件,以及User实例类。
①在webapp下新建jquery3.4.1.js文件
②在Servlet中的doPost方法中引入jqusry文件。
二:在webapp中建立ajax.jsp页面,按钮绑定单击事件,通过ajax请求,部署在服务器中的AjaxServlet对象,如下:
ajax页面详解
三 , ①因为还未连接服务器的原因,我们需要在我们的项目中新建一个User类,以存储数据,
②然后再在AjaxServlet对象中创建list集合存储User对象。当然还可以添加map集合通过键值对来改变一下它的格式。
③需要注意的一点是,在我们将数据传入页面中的时候,我们就需要将数据改成json格式,这里可以借助框架JsonUtils(不会用的小伙伴可以尝试一下,博主强烈推荐),其中objectToJson方法可以帮我们将数据转换为json格式。
eg:String strjson=JsonUtils.objectToJson(map);
④最后我们通过response.getWriter().priint(strjson);方法先获取一个输出流,再通过输出流的.print()方法将其传给页面。
上述用到的重要方法记忆:
1.解决输入中文代码混乱问题:
request.setCharacterEncoding("UTF-8");
解决输出中文代码混乱问题:
response.setContentType("text/html;charset=utf-8");
2.使用第三方工具类将 map集合转换成json格式的字符串
String str=JsonUtils.objecToJson(map);
3.使用字符流在不跳转页面的情况下,将字符串发送给页面
response.getWriter().print(str);
4.ajax请求的模板方法:
//第一个参数,请求的servlet的地址。
//第二个参数,是一个对象,里面的内容是键值对格式是 {"key":value}
//第三个参数,方法输出依次是服务器返回的数据,数据类型,以及数据中心的第一个key所对应的value的名字
//第四个参数,传回来的数据时何种格式。
$.post(
"AjaxServlet",
{
//Json.stringify();
//字符串转化为json
"data" : JSON.stringify({
"userId" : 1001,
"userName" : "qiufen",
"userPwd" : "123456"
})} ,
function(data) {
console.info(data);
console.info(typeof data);
console.info(data.list[0].userName);
},
"json");