AJAX Jquery JSON 【笔记+案例】

版本一

1. SelectUserServlet

package web.servlet;

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.io.Serial;

/**
 * 注册时用户名是否存在
 *
 * @author KKK
 */
@WebServlet(name = "SelectUserServlet", value = "/selectUser")
public class SelectUserServlet extends HttpServlet {
  @Serial private static final long serialVersionUID = 7592892756611769375L;

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    // 1.接收参数
    String username = request.getParameter("username");
    // 2.调用service查询user对象
    boolean flag = true;

    // 3.响应标记
    response.getWriter().write("" + flag);
    // 然后去注册页面找username的id
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {}
}

2. jsp页面 --AJAX

<script>


    //用户名是否存在
    //1.给用户名输入框绑定onblur事件
    document.getElementById("username").onblur = function () {

        //2.发送ajax请求
        //获取用户名的值
        var username = this.value;
        //2.1创建核心对象
        var xhttp;
        if (window.XMLHttpRequest) {
            xhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //2.2向服务器发送请求
        xhttp.open("GET", "http://localhost:8080/selectUser?username=" + username);
        xhttp.send();
        //2.3获取响应
        xhttp.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {
                //alert(this.responseText);
                if (this.responseText == "true") {
                    //用户名存在,显示提示信息,设置class=error_msg的style
                    document.getElementById("username_err").style.display = '';
                } else {
                    //用户名不存在,清除提示信息
                    document.getElementById("username_err").style.display = 'none';
                }
            }

        }
    }

</script>

3. jsp页面 --注册部分

 <form action="userServlet" method="post">
                    <input type="hidden" name="action" value="regist">
                    <h2>Create an account</h2>

--------------主要看这一块-------------------------------------------
                    <input class="itxt" autocomplete="off" id="username" name="username" placeholder="Username"
                           type="text" value="${requestScope.username}">
                    <br>
                    <span id="username_err" class="error_msg" style="display: none">此用户名已存在</span>

---------------------------------------------------------------------

                    <input class="itxt" autocomplete="off" id="email" name="email" placeholder="Email Address"
                           type="text" value="${requestScope.email}">
                    <input class="itxt" autocomplete="off" id="password" name="password" placeholder="Create Password"
                           type="password">
                    <input class="itxt" autocomplete="off" id="repwd" name="repwd" placeholder="Confirm Password"
                           type="password">
                    <label>验证码:</label>
                    <input class="itxt" type="text" name="code" style="width: 80px;" id="code" value="abcde"/>
                    <img alt="" src="img/code.bmp" style="float: right; margin-right: 40px">

                    <input type="submit" value="Sign Up" id="sub_btn">
                    <p class="signup">Already have an account? <a href="#" onclick="toggleForm();">Sign in.</a></p>
                </form>

版本二

在这里插入图片描述

2. jsp页面

2.1 根据ajax实现

<%--
  Created by IntelliJ IDEA.
  User: xiaomi
  Date: 2021/3/4
  Time: 17:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <script type="text/javascript">
     function  test() {
        //发送异步请求
       //1.创建XMLHttpRequest对象
      var xmlhttp;
      if(window.XMLHttpRequest){
        //非IE
        xmlhttp=new XMLHttpRequest();
      }else if(window.ActiveXObject){
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
       //2.打开链接
      var uname= document.getElementById("uname").value;
      //xmlhttp.open("get","/testuname?username="+uname,true);
       xmlhttp.open("post","/testuname",true);
       //3.指定回调函数
      xmlhttp.onreadystatechange=function(){
        //3.1 判断状态
        if(xmlhttp.readyState==4){
          //3.2 接收返回的数据
          var responseText = xmlhttp.responseText;
          document.getElementById("rs").innerText=responseText;
        }
      }
       //4.发送数据
       //xmlhttp.send();
       //post
       xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8");
       xmlhttp.send("username="+uname);
     }

  </script>

  <body>
  <h1>index.jsp</h1>

  username:<input type="text" id="uname" onblur="test()"><span id="rs"></span>
  </body>
</html>

2.2 根据jquery实现

<%--
  Created by IntelliJ IDEA.
  User: xiaomi
  Date: 2021/3/4
  Time: 17:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
  <script type="text/javascript">
    $(function(){
      $("#uname").blur(function(){
        //1.获得value值
        var uname = $(this).val();
        //2.发送请求
       /* $.ajax({
          url:"/testuname",
          data:"username="+uname,
          type:"post",
          dataType:"text",
          success:function(rs){
            $("#rs").html(rs);
          }
           });
          */
          
      /* $.get("/testuname","username="+uname,function(rs){
           $("#rs").html(rs);
        });*/

        $.post("/testuname","username="+uname,function(rs){
          $("#rs").html(rs);
        });

      });

    })

  </script>
  <body>
  <h1>jquery_ajax.jsp</h1>

  username:<input type="text" id="uname" ><span id="rs"></span>
  </body>
</html>

3. TestServlet

package servlet;

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.io.PrintWriter;

@WebServlet(urlPatterns = "/testuname")
public class TestServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         //1.接收参数
        String username = req.getParameter("username");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();

        if("admin".equals(username)){
            writer.println("账户已被注册");
        }else{
            writer.println("账户可用");
        }
    }
}

JSON

1. JSON的存值取值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script type="text/javascript">
        //1.定义json
        var j1={"name":"张三","age":18};
       // alert(j1.name+","+j1.age);
        //数组
        var j2={"names":["aa","bb","cc"]};
        alert(j2.names[1]);
        //json数组内容
        var j3={"users":[{"name":"张三1","age":18},{"name":"张三2","age":15},{"name":"张三3","age":13}]};
        alert(j3.users[2].name);

    </script>
</head>
<body>

</body>
</html>

2. JSON与JAVA对象之间的转换

在这里插入图片描述

实体类

package bean;

//实体类
public class Users {
    private Integer uid;
    private String username;
    private String password;
    private Double money;

    @Override
    public String toString() {
        return "Users{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", money=" + money +
                '}';
    }

    public Users() {
    }

    public Users(Integer uid, String username, String password, Double money) {
        this.uid = uid;
        this.username = username;
        this.password = password;
        this.money = money;
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }
}

JSON与JAVA的转换

package test;

import bean.Users;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.ArrayList;


public class Demo {
    public static void main(String[] args) {
    
        //java->json
        Users users = new Users(11,"aaa","123456",123.456);
        JSONObject jsonObject = JSONObject.fromObject(users);
        System.out.println(jsonObject);//json

        //json-java
        String str="{\"money\":123.456,\"password\":\"123456\",\"uid\":11,\"username\":\"aaa\"}";
        JSONObject jsonObject1 = JSONObject.fromObject(str);
        Object o = JSONObject.toBean(jsonObject1, Users.class);
        System.out.println("o="+o);

        //java集合->json
        ArrayList arrayList = new ArrayList();
        arrayList.add(new Users(1,"张三","123",12.34));
        arrayList.add(new Users(2,"张三2","12322",1244.34));
        arrayList.add(new Users(3,"张三3","12333",1255.34));
        JSONArray jsonArray = JSONArray.fromObject(arrayList);//json
        System.out.println(jsonArray);

        //json->java集合
        String str2="[{\"money\":12.34,\"password\":\"123\",\"uid\":1,\"username\":\"张三\"},{\"money\":1244.34,\"password\":\"12322\",\"uid\":2,\"username\":\"张三2\"},{\"money\":1255.34,\"password\":\"12333\",\"uid\":3,\"username\":\"张三3\"}]";
        JSONArray jsonArray2 = JSONArray.fromObject(str2);

        Object[] o1 = (Object[])JSONArray.toArray(jsonArray2, Users.class);
        for (Object o2 : o1) {
            System.out.println("o2="+o2);
        }

    }
}

json和AJAX案例

通过id回显用户信息

1. GetUsersServlet

package servlet;

import bean.Users;
import net.sf.json.JSONObject;

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.io.PrintWriter;

@WebServlet(urlPatterns = "/getuser")
public class GetUsersServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         //1.接收参数
        String uid = req.getParameter("uid");
        int userid=Integer.parseInt(uid);
        Users users=null;
        switch (userid){
            case  1:
                users=new Users(1,"张三","abc",11.22);
                break;
            case  2:
                users=new Users(2,"张三2","abc2",222.1);
                break;
            case  3:
                users=new Users(3,"张三3","abc3",33.2);
                break;
            case  4:
                users=new Users(4,"张三4","abc4",44.4);
                break;
            default:
                users=new Users();
        }

        //java->json
        JSONObject jsonObject = JSONObject.fromObject(users);//json

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print(jsonObject);

    }
}

2. jsp页面

<%--
  Created by IntelliJ IDEA.
  User: xiaomi
  Date: 2021/3/5
  Time: 11:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    $(function(){
        $("#uid").blur(function(){
            //1.获得value值
            var uid = $(this).val();
            //2.发送请求
            $.post("/getuser","uid="+uid,function(rs){
                //转换成可以处理的js
                rs=eval("("+rs+")");
                //此时的rs是json格式的对象
                $("#uname").val(rs.username);
                $("#pass").val(rs.password);
                $("#money").val(rs.money);
            });
        });
    })

</script>
<body>
    uid:<input type="text" id="uid"><br>
    name:<input type="text" id="uname"><br>
    pass:<input type="text" id="pass"><br>
    money:<input type="text" id="money">
</body>
</html>

如果启动tomcat 报错显示找不到类,就把lib里的东西复制到tomcat的lib里面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yolanda KB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值