JAVA第二阶段第十九天 ajax 技术

ajax 技术的概述

javaScript and XML :是 js 与 xml 结合的技术,创建交互式的技术(主要是创建客户端与服务进行交互)

ajax 技术的使用

1.直播的弹幕
2.做一些与后台交互的验证

ajax 特点

异步与局部进行刷新,不需要刷新整个网页,只是刷新网页的一部分

同步与异步的区别

同步:就是客户端去服务器获取数据,数据全部获取完毕之后,才跳转页面去显示(先获取数据,再进行页面的跳转显示)

异步: 不管有没有获取数据,先跳转界面,再去刷数据(用户体验度会更高一点)

原先代码实现 ajax 的步骤

(判断用户是否存在)
1.获取input标签的值
2.获取ajax 的核心对象:XMLHttpRequest xmlHttpRequest = new XMLHttpRequest();
3.设置回调函数:xmlHttpRequest.onreadystatechange=callBack; 注意这个 callBack是自己定义,不是系统的,不用加小括号
4.创建连接:xmlHttpRequest.open(“get”,url,true);
==>>第一个参数是:method 请求的方式
==>>第二个参数是:url 请求的地址
==>>第三个参数是:async 是支持异步刷新(true 表示支持)
5.发送请求:xmlHttpRequest.send(null);

注意点:
1.回调方法是独立的方法 ,不能与方法相互嵌套
2.请求方式 post 的区别:不能直接拼接参数
3.xmlHttpRequest.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”); post 方式请求必须加上这句话

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <script src="js/jquery-1.8.3.js"></script>
  </head>
  <body>
  <input type="text" name="uname" id="username" onblur="show()"><span id="span" style="color: red"></span>
  
  <script>
    function show() {
        //获取input 标签值
        var username = $("#username").val();
        //进行判断
        if (username == null || username == "") {
            $("#span").html("你输入的不能为空");
        }else {
            //与服务器进行交互
            xmlHttpRequest = new XMLHttpRequest();
            //设置其回调
            xmlHttpRequest.onreadystatechange=callBack;
            //建立连接
            var url = "/userServlet?uname=" + username;
            //第一个参数get: method 的请求方式
            //第二个参数url:请求的地址
            //第三个参数true:支持异步刷新
            xmlHttpRequest.open("get",url,true);
            //发送请求
            xmlHttpRequest.send(null);

            //post 方式
            var url = "/userServlet"
            xmlHttpRequest.open("post",url,true);
            //post 方式必须加上这句话
            xmlHttpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            var date = "uname=" + username;
            xmlHttpRequest.send(date);
        }
        
        //设置其回调函数的方法
        //xmlHttpRequest.readyState = 4 :与服务器创立连接成功
        //xmlHttpRequest.status == 200 :表示响应成功
        function callBack() {
            if (xmlHttpRequest.readyState = 4 && xmlHttpRequest.status == 200) {
                //获取服务器写入到客户端的值,获取过来的值都是字符串
                var flag = xmlHttpRequest.responseText;
                if (flag == "true"){
                    $("#span").html("用户可以使用");
                }else {
                    $("#span").html("用户不可以使用");
                }
            }
        }

jquery 方式实现 ajax 步骤

1.在Web下添加jquery 文件(图一)
2.在页面引入文件路径(图二)

在这里插入图片描述
在这里插入图片描述

ajax 的语法

$.ajax({
    “url”:“请求地址”
    “type”:“请求的方式post/get”
    “data”:{“键1”,“值1”,“键2”,“值2”}
    “dataType”:"回调函数的数据:类型:text,json xml 注意:第二个首字母大写
    “success”:正确的回调方法
    “error”:错误的回调方法
})

$.ajax({
         "url":"${pageContext.request.contextPath}/userServlet",
         "type":"post",
         "data":{"uname":username},
         "dataType":"text",
         "success":callBack,
         "error":function () {
              alert("请求失败!");
                }
            })
//回调方法
    function callBack(data) {
        //转化成前端能解析的json
       var jsonstr = JSON.parse(data);
        //转化为jquery 对象
       var $jsonstr =  $(jsonstr);
       
       //进行遍历
        var temp = "";
        $jsonstr.each(function () {
            temp += "<li>"+this+"</li>";
        });
        //最后追加
        $("#tv_ul").html(temp);

json 概述

1.轻量级数据交互格式,一般使用与前端进行交互
2.xml :解析比较麻烦 json:解析比较简单
3.是以键值对进行存储
4.json 数据类型:int、String、boolean、{}就是对象、[]就是集合

json 之间的转换

使用市面上的fastjson-1.2.13.jar(阿里的) gson-2.2.4.jar(谷歌的)

1.JSON.toJSONString(list); 把对象转化为 json 串(图一)
2.JSON.parseArray(str,City.class);转换为集合(图二)
3.JSON.parseObject(str,Employees.class);转换为对象(图三)

		//写数据
        PrintWriter pw = resp.getWriter();
        List<String> list = new ArrayList<String>();
        list.add("111");
        list.add("222");
        list.add("333");
		
        String json = JSON.toJSONString(list);
        //写入到客户端
        pw.print(json);
        //关流
        pw.close();
String  str ="[{'id':'0375','city':'平顶山'},{'id':'0377','city':'南阳'}]";
    List<City>  list = JSON.parseArray(str,City.class);
    for (City c:list){
        System.out.println(c.getId()+"\t"+c.getCity());
    }
String  str  ="{\n" +
                "\"employees\": [\n" +
                "{ \"firstName\":\"Bill\" , \"lastName\":\"Gates\" },\n" +
                "{ \"firstName\":\"George\" , \"lastName\":\"Bush\" },\n" +
                "{ \"firstName\":\"Thomas\" , \"lastName\":\"Carter\" }\n" +
                "]\n" +
                "}";

        Employees employees =    JSON.parseObject(str,Employees.class);
       List<Emp> empList =   employees.getEmployees();
       for (Emp emp:empList){
           System.out.println(emp.getFirstName()+"\t"+emp.getLastName());
       }

gson 进行转化使用步骤

1.实例化对象:Gson gson = new Gson();
2.gson.fromJson(“json的字符串”,“外层的Class文件”);把json串转化为对象
3. gson.toJson(city); 把对象转换成json串
4. gson.fromJson(str,new TypeToken<List>(){}.getType()); 把json 串准换为集合

String str ="[{'id':'0375','city':'平顶山'},{'id':'0374','city':'平顶山1'}]";
      // 第一步实例化这个Gson
        Gson  gson  = new Gson();
       List<City> cities  =   gson.fromJson(str,new TypeToken<List<City>>(){}.getType());
        for (City c:cities){
            System.out.println(c.getId()+"\t"+c.getCity());
        }

        System.out.println( gson.toJson(cities));;
    /*   City city  =   gson.fromJson(str,City.class);
        System.out.println( city.getId()+"\t"+city.getCity());*/

        //把对象转化成json串
      /*  String  jsonStr = gson.toJson(city);
        System.out.println(jsonStr);*/

MVC 设计模型

MVC 概念

全称:Model View Controller

model:模型
view:视图
controller:控制器

一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码

MVC 设置模式的优势

1.项目代码的结构非常清晰
2.可维护性扩展性高,节约开发成本
3.耦合度低
4.web发展的趋势
5.试用于移动端

缺点:不适合中小型的项目

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值