前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面试手册:AJAX

Java面试手册:AJAX

作者头像
南风
发布2018-12-24 15:03:58
5980
发布2018-12-24 15:03:58
举报
文章被收录于专栏:Java大联盟Java大联盟

AJAX思维导图

  • Asynchronous JavaScript And XML(异步JavaScript和XML)
  • Ajax不是一门编程语言,指的是一种交互方式:客户端与服务器交换数据并更新在局部网页的技术,不需要重新加载整个页面。
  • Ajax的核心就是异步加载或者叫局部刷新。

AJAX原理

Ajax的工作原理相当于在客户端和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。

Ajax技术的核心:XMLHttpRequest

  • 常用方法:
    • open() 创建一个新的HTTP请求。
    • send() 将请求发送到服务器。
  • 常用事件:
    • onreadystatechange:指定回调函数。
  • 常用属性:
    • readyState:XMLHttpRequest的状态信息。
  • 状态码表示的意义:
    • 0:XMLHttpRequest对象未完成初始化。
    • 1:XMLHttpRequest对象开始发送请求。
    • 2:XMLHttpRequest对象的请求发送完成。
    • 3:XMLHttpRequest对象对象开始读取响应。
    • 4:XMLHttpRequest对象读取响应结束。

jQuery 对AJAX的封装

  • JavaScript传统方式调用Ajax有很多不足,步骤繁琐,方法,属性多不便记忆,存在浏览器兼容问题等。
    • jQuery对Ajax进行了封装,可以解决上述问题。
    • 语法:$.ajax([settings]);
  • 常用属性参数:
    • url:要请求的服务器资源。
    • type:请求方式,默认是GET。
    • data:发送到服务器的参数。
    • dataType:服务器返回的数据类型(text,JSON,html,xml等)。
  • 常用函数参数:
    • success:请求成功调用的函数。
    • error:请求失败调用的函数。
    • complete:请求完成调用的函数(无论成功或失败都会调用)。

JSP示例代码

使用jQuery发送Ajax请求,代码大大简化,Ajax返回JSON格式数据。

代码语言:javascript
复制
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <script type="text/javascript" src="<%=path%>/js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $.ajax({
                url:"json.do",
                type:"POST",
                data:"",
                dataType:"JSON",
                success:function(data){
                    $("#id").text(data.id);
                    $("#name").text(data.name);
                    $("#pwd").text(data.pwd);
                },
                error:function(){
                    alert("系统繁忙");
                }
            });
        });
    </script>
  </head>
  <body>
    <div id="id"></div>
    <div id="name"></div>
    <div id="pwd"></div>
  </body>
</html>

Servlet

代码语言:javascript
复制
package com.southwind.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JsonServlet extends HttpServlet{
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(req, resp);
    }
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        resp.setContentType("text/html;charset=UTF-8");
        String str ="{\"id\":1,\"name\":\"张三\",\"pwd\":123}";
        PrintWriter out = resp.getWriter();
        out.print(str);
        out.flush();
        out.close();
    }
}

不过由于手动拼接json数据非常麻烦,我们借助工具类来完成json的数据转换。

  • 导入JSON工具类相关jar包。
  • 创建实体类
  • 使用工具类完成User对象的JSON格式转换。
代码语言:javascript
复制
package com.southwind.entity;
public class User {
    private int id;
    private String name;
    private String pwd;

    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}  

-------------------------------------------------------------------------------------
package com.southwind.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import com.southwind.entity.User;
public class JsonServlet extends HttpServlet{
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(req, resp);
    }
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        resp.setContentType("text/html;charset=UTF-8");
        User user = new User();
        user.setId(1);
        user.setName("张三");
        user.setPwd("123");
        PrintWriter out = resp.getWriter();
        JSONObject json = JSONObject.fromObject(user);
        out.print(json);
        out.flush();
        out.close();
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java大联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档