快速入门
介绍
原生js实现ajax
jQuery实现ajax
<body>
<form action="/userServlet" method="post">
<input type="text" name="username" id="btn1"><span id="uSpan"></span>
<input type="text" name="password" style="color: green" id="">
</form>
</body>
<script>
$("#btn1").blur(function(){
$.post(
"userServlet",
"username="+$("#btn1").val(),
function (data){
$("#uSpan").html(data)
},
"text"
)
})
</script>
<body>
<input type="text" name="username" id="btn1"><span id="uSpan"></span>
</body>
<script>
$("#btn1").blur(function(){
$.ajax(
{
url:"userServlet",
async:true,
data:"username="+$("#btn1").val(),
type:"get",
dataType:"text",
success:function (data){
$("#uSpan").html(data)
},
error:function (){
alert("失败。。")
}
}
)
})
</script>
JSON的处理
json回顾
创建格式
常用方法
JSON转换工具
常用类&OBjectMapper常用方法
private ObjectMapper mapper = new ObjectMapper();
@Test
public void test01() throws Exception {
User user = new User("张三",25);
String json = mapper.writeValueAsString(user);
System.out.println("json:"+json);
User user1 = mapper.readValue(json, User.class);
System.out.println("java对象:"+user1);
}
@Test
public void test02() throws Exception {
HashMap<String,String> map = new HashMap<>();
map.put("张三","中城基");
map.put("李四","东城基");
map.put("王五","西城基");
String json = mapper.writeValueAsString(map);
System.out.println("map转json:"+json);
HashMap<String,String> map1 = mapper.readValue(json,HashMap.class);
System.out.println("HashMap"+map1);
}
@Test
public void test03() throws Exception {
HashMap<String,User> map = new HashMap<>();
User u1 = new User("张三",18);
User u2 = new User("李四",19);
User u3 = new User("王五",20);
map.put("张三",u1);
map.put("李四",u2);
map.put("王五",u3);
String json = mapper.writeValueAsString(map);
System.out.println("map转json:"+json);
HashMap<String,User> map1 = mapper.readValue(json,new TypeReference<HashMap<String,User>>(){});
System.out.println("HashMap:"+map1);
}
@Test
public void test04() throws Exception {
ArrayList<String> list = new ArrayList<>();
list.add("张力");
list.add("李四");
String json = mapper.writeValueAsString(list);
System.out.println("list转json:"+json);
ArrayList<String> list2 = mapper.readValue(json, ArrayList.class);
System.out.println(list2);
}
@Test
public void test05() throws Exception {
User u1 = new User("张三",18);
User u2 = new User("李四",19);
ArrayList<User> list = new ArrayList<>();
list.add(u1);
list.add(u2);
String json = mapper.writeValueAsString(list);
System.out.println("list转json:"+json);
ArrayList<User> list2 = mapper.readValue(json,new TypeReference<ArrayList<User>>(){});
System.out.println(list2);
}
小结
分页案例
<script>
//1.定义发送请求标记
let send = true
//2.定义当前页码和每页显示的条数
let start = 1;
let PageSize = 10;
//3.定义滚动条距底部的距离
let bottom = 1;
//4.设置页面加载事件
$(function (){
//5.为当前窗口绑定滚动条滚动事件
$(window).scroll(function (){
//6.获取必要信息,用于计算当前展示数据是否浏览完毕
//当前窗口的高度
let windowHeight = $(window).height()
//当前滚动条从上往下滚动的距离
let scrollTop = $(window).scrollTop()
//当前文档的高度
let docHeight = $(document).height()
//7.计算当前展示数据什么时候浏览完毕
//当 滚动条距底部的距离 + 当前滚动条滚动的距离 + 当前窗口的高度 >= 当前文档的高度
if((bottom + scrollTop + windowHeight) >= docHeight){
//8.判断请求标记是否为true
if(send){
// 如果当前页大于10,则将加载动图隐藏并结束方法
//9.将请求标记置为false,当前异步操作完成前,不能重新发起请求
send = false
//10.根据当前页和每页显示的条数来 请求查询分页数据
queryByPage(start,PageSize)
//11.当前页码+1
start++;
}
}
})
})
//请求查询分页数据的函数
function queryByPage(start,PageSize){
//将加载动图显示
$(".loading").show()
//发起AJAX异步请求
$.ajax({
url:"queryPage",
type:"POST",
dataType:"json",
data:{"start":start,"PageSize":PageSize},
success:function (data){
$(".loading").hide()
if(data.length == 0){
$("#no").html("我也是有底线的")
return
}
//追加到页面
let titles = "";
for (let i = 0; i < data.length; i++) {
titles += "<li>\n" +
" <div class=\"title-box\">\n" +
" <a href=\"#\" class=\"link\">\n" +
data[i].title+
" <hr>\n" +
" </a>\n" +
" </div>\n" +
" </li>"
}
$(".news_list").append(titles)
//将请求标记置为true
send = true;
}
})
}
</script>
@WebServlet("/queryPage")
public class PageSevlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String start = req.getParameter("start");
String pageSize = req.getParameter("PageSize");
PageService ps = new PageServiceImpl();
Page page = ps.selectPage(Integer.parseInt(start), Integer.parseInt(pageSize));
String json = new ObjectMapper().writeValueAsString(page);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
resp.getWriter().write(json);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
<script>
let start =1
let pageSize = 10
queryByPage(start,pageSize)
function queryByPage(start,pageSize){
$.ajax({
url:"queryPage2",
type:"POST",
dataType:"json",
data:{"start":start,"pageSize":pageSize},
success:function (pageInfo){
let titles = ""
for (let i = 0; i < pageInfo.list.length; i++) {
titles +="<li>\n" +
" <div class=\"title-box\">\n" +
" <a href=\"#\" class=\"link\">\n" +
pageInfo.list[i].title +
" <hr>\n" +
" </a>\n" +
" </div>\n" +
" </li>"
}
$(".news_list").html(titles)
$("#light-pagination").pagination({
pages:pageInfo.pages,
currentPage:pageInfo.pageNum
})
$("#light-pagination .page-link").click(function (){
let page = $(this).html()
if(page == "Prev"){
queryByPage(pageInfo.pageNum - 1,pageSize)
}else if(page == "Next"){
queryByPage(pageInfo.pageNum + 1,pageSize)
}else{
queryByPage(page,pageSize)
}
})
}
})
}
</script>
@WebServlet("/queryPage2")
public class PageSevlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String start = req.getParameter("start");
String pageSize = req.getParameter("pageSize");
PageService ps = new PageServiceImpl();
Page page = ps.selectPage(Integer.parseInt(start), Integer.parseInt(pageSize));
//封装PageInfo对象
PageInfo<List<News>> info = new PageInfo<>(page);
//转json 文件
String json = new ObjectMapper().writeValueAsString(info);
//返回
resp.getWriter().write(json);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}