32、 Ajax

 

 

 

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/24
  Time: 8:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <script>
      function but(){
        var xhr = new XMLHttpRequest(); //先实例化
        xhr.open("get","ajax.do");  //get以什么样的方式,跳转到一个servlet里面叫ajax.do
        xhr.send();
        xhr.onreadystatechange = function(){
          if(xhr.readyState == 4 && xhr.status == 200){
            alert(xhr.responseText);
            document.getElementById("span").innerHTML = xhr.responseText;
          }
        }
      }
    </script>
  </head>
  <body>
  <h3>你好</h3>
  <hr/>
  <span id="span" >
    <input value="ok" type="button" onclick="but()"/>
  </span>
  </body>
</html>

package com.ajaxServlet01;

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("/ajax.do")
public class AjaxServlet01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter pw = resp.getWriter();
        pw.println("hello ajax");
        pw.flush();
        pw.close();

    }
}

 

 

 

 

 

 

 Ajax_通过JSON格式在响应中传递单个对象

 

package com.ajaxServlet01.pojo;

public class Users {
    private int userid;
    private String username;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}
package com.ajaxServlet01.servlet;

import com.ajaxServlet01.pojo.Users;
import com.fasterxml.jackson.databind.ObjectMapper;

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;

/**
 * 通过Json格式响应单个对象
 */
@WebServlet("/single.do")
public class SingleObjectServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //创建Users对象
        Users users = new Users();
        users.setUserid(1);
        users.setUsername("hhh");
        //使用Jackson的API将Users对象转换为Json格式的字符串对象
        ObjectMapper objectMapper = new ObjectMapper();
        //将Users对象转换为JSON格式的字符串对象
        String string = objectMapper.writeValueAsString(users);
        System.out.println(string);
        //设置响应类型为application/json
        resp.setContentType("application/json");

        PrintWriter pw = resp.getWriter();
        pw.print(string);
        pw.flush();
        pw.close();
    }
}

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/24
  Time: 10:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <script>
        function but(){
            var xhr = new XMLHttpRequest(); //先实例化
            xhr.open("get","single.do");  //get以什么样的方式,跳转到一个servlet里面叫ajax.do
            xhr.send();
            xhr.onreadystatechange = function(){  //回调方法
                if(xhr.readyState == 4 && xhr.status == 200){
                    alert(xhr.responseText);
                    //通过javascript的内置对象JSON中的parse函数将JSON格式的字符串对转换成javascript对象
                    var obj = JSON.parse(xhr.responseText);
                    alert(obj.userid+" "+obj.username);
                    document.getElementById("span").innerHTML = obj.userid+"<br/>"+obj.username;
                }
            }
        }
    </script>
</head>
<body>
<h3>JSON对单个对象的响应</h3>
<hr/>
<span id="span" >
    <input value="ok" type="button" onclick="but()"/>
  </span>
</body>
</html>

Ajax_通过JSON格式在响应中传递多个对象 

package com.ajaxServlet01.servlet;

import com.ajaxServlet01.pojo.Users;
import com.fasterxml.jackson.databind.ObjectMapper;
//Ajax_通过JSON格式在响应中传递多个对象
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;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

@WebServlet("/multiple.do")
public class MultipleServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Users users1 = new Users();
        users1.setUserid(1);
        users1.setUsername("bob");

        Users users2 = new Users();
        users2.setUsername("lucky");
        users2.setUserid(2);

        //将多个对象的值放到集合中
        List<Users> list = new ArrayList<>();
        list.add(users1);
        list.add(users2);

        //通过jackson将list转换为JSON格式的字符串对象
        ObjectMapper objectMapper = new ObjectMapper();
        String string = objectMapper.writeValueAsString(list);
        System.out.println(string);
        resp.setContentType("application/json");

        PrintWriter pw = resp.getWriter();
        pw.print(string);
        pw.flush();
        pw.close();

    }
}
<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/24
  Time: 15:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <script>
        function but(){
            var xhr = new XMLHttpRequest(); //先实例化
            xhr.open("get","multiple.do");  //get以什么样的方式,跳转到一个servlet里面叫ajax.do
            xhr.send();
            xhr.onreadystatechange = function(){  //回调方法
                if(xhr.readyState == 4 && xhr.status == 200){
                    alert(xhr.responseText);
                    //通过javascript的内置对象JSON中的parse函数将JSON格式的字符串对转换成javascript对象
                    var obj = JSON.parse(xhr.responseText);
                    var temp = "";
                    for(i=0;i<obj.length;i++){ //因为是多个属性值所以循环遍历
                        alert(obj[i].userid+" "+obj[i].username);
                        temp += obj[i].userid+" "+obj[i].username+"<br/>";
                    }

                    document.getElementById("span").innerHTML = temp;
                }
            }
        }
    </script>
</head>
<body>
<h3>JSON对多个对象的响应</h3>
<hr/>
<span id="span" >
    <input value="ok" type="button" onclick="but()"/>
  </span>
</body>
</html>

Ajax_在JSON中通过Map传递数据

package com.ajaxServlet01.servlet;
//使用Map模型传递数据
import com.fasterxml.jackson.databind.ObjectMapper;

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;
import java.util.HashMap;
import java.util.Map;

@WebServlet("/map.do")
public class MapModelServlet04 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Map<String,Object> map = new HashMap<>();
        map.put("username","hhh");
        map.put("url","map.do");

        ObjectMapper objectMapper = new ObjectMapper();
        String string = objectMapper.writeValueAsString(map);
        System.out.println(string);
        resp.setContentType("application/json");
        PrintWriter pw = resp.getWriter();
        pw.print(string);
        pw.flush();
        pw.close();
    }
}
<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/24
  Time: 16:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <script>
        function but(){
            var xhr = new XMLHttpRequest(); //先实例化
            xhr.open("get","map.do");  //get以什么样的方式,跳转到一个servlet里面叫ajax.do
            xhr.send();
            xhr.onreadystatechange = function(){  //回调方法
                if(xhr.readyState == 4 && xhr.status == 200){
                    alert(xhr.responseText);
                    //通过javascript的内置对象JSON中的parse函数将JSON格式的字符串对转换成javascript对象
                    var obj = JSON.parse(xhr.responseText);
                    alert(obj.username+" "+obj.url);
                    document.getElementById("span").innerHTML = obj.username+"<br/>"+obj.url;
                }
            }
        }
    </script>
</head>
<body>
<h3>Ajax_在JSON中通过Map传递数据</h3>
<hr/>
<span id="span" >
    <input value="ok" type="button" onclick="but()"/>
  </span>
</body>
</html>

Ajax_在请求中通过JSON格式传递数据

 

package com.ajaxServlet01.servlet;
//在请求中通过JSON格式传递数据
import com.ajaxServlet01.pojo.Users;
import com.fasterxml.jackson.databind.ObjectMapper;

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("/json.do")
public class requestJsonServlet05 extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //从请求体中获取提交的JSON格式的数据
        req.setCharacterEncoding("utf-8");
        String s = req.getReader().readLine();
        //使用Jackjson将JSON格式的字符串转换成Java对象
        ObjectMapper objectMapper = new ObjectMapper();
        Users users = objectMapper.readValue(s,Users.class);
        System.out.println(users.getUserid()+" "+users.getUsername());
        resp.setContentType("application/json");
        PrintWriter pw  = resp.getWriter();
        pw.print("ok");
        pw.flush();
        pw.close();
    }
}

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/24
  Time: 16:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <script>
        function but(){
            var id = document.getElementById("userid").value;
            var name = document.getElementById("username").value;
            var obj = {userid:id,username:name}
            var content = JSON.stringify(obj); //将js对象转换成json对象
            alert(content);
            var xhr = new XMLHttpRequest(); //先实例化
            xhr.open("post","json.do");  //post以什么样的方式,跳转到一个servlet里面叫json.do
            xhr.send(content);
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status == 200){
                    alert(xhr.responseText);
                    document.getElementById("span").innerHTML = xhr.responseText;
                }
            }
        }
    </script>
</head>
<body>
<h3>Ajax_在请求中通过JSON格式传递数据</h3>
<hr/>
用户id:<input name="userid" id="userid"/><br/>
用户姓名:<input name="username" id="username"/><br/>
<span id="span" >
    <input value="ok" type="button" onclick="but()"/>
  </span>
</body>
</html>

Ajax_Jackson的常用注解

Ajax_Jquery的$.ajax方法的使用

​​​​​​​

 

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 9:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
      function but() {
          $.ajax({
              type:"get",
              url:"jqueryAjax.do",
              success:function(result){
                  $("#span").html(result);
              }
          })
      }
    </script>
</head>
<body>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>
package com.ajaxServlet01.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("/jqueryAjax.do")
public class JqueryAjax07 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter pw = resp.getWriter();
        pw.print("hello jquery ajax");
        pw.flush();
        pw.close();
    }
}

Ajax_$.ajax()中提交数据

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 9:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
        function but() {
            var userid = $("#userid").val();
            var username = $("#username").val();

            $.ajax({
                type:"get",
                url:"data.do",

                // data: "id="+userid+"&name="+username,
                //基于javascript格式提交数据
                data:{
                  id:userid,
                  name:username
                },
                success:function(result){
                    $("#span").html(result);
                }
            })
        }
    </script>
</head>
<body>
用户ID:<input type="text" id="userid"/> <br/>
用户姓名:<input type="text" id="username"/> <br/>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>
package com.ajaxServlet01.servlet;
//Ajax_$.ajax()中提交数据
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("/data.do")
public class dataServlet08 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userid = req.getParameter("id");
        String username = req.getParameter("name");

        PrintWriter pw = resp.getWriter();
        pw.print(userid+""+username);
        pw.flush();
        pw.close();
    }
}

Ajax_$.ajax()中提交JSON格式的数据

 

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 11:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
        function but() {
            var userid = $("#userid").val();
            var username = $("#username").val();

            $.ajax({
                type:"post",
                url:"jsonData.do",

               //Ajax_$.ajax()中提交JSON格式的数据
                data:JSON.stringify({
                    id:userid,
                    name:username
                }),
                success:function(result){
                    $("#span").html(result);
                }
            })
        }
    </script>
</head>
<body>
用户ID:<input type="text" id="userid"/> <br/>
用户姓名:<input type="text" id="username"/> <br/>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>
package com.ajaxServlet01.servlet;
//Ajax_$.ajax()中提交JSON格式的数据
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("/jsonData.do")
public class JsonDataServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String s = req.getReader().readLine();
        PrintWriter pw = resp.getWriter();
        pw.print(s);
        pw.flush();
        pw.close();
    }
}

Ajax_$.ajax()处理响应中的JSON格式数据

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 11:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
        function but() {
            var userid = $("#userid").val();
            var username = $("#username").val();
            $.ajax({
                type:"post",
                url:"jsonConvert.do",
                dataType:"json",
                //Ajax_$.ajax()中提交JSON格式的数据
                data:JSON.stringify({
                    id:userid,
                    name:username
                }),
                success:function(result){
                    alert(result.id+" "+result.name);
                    $("#span").html(result.id+" "+result.name);
                }
            })
        }
    </script>
</head>
<body>
用户ID:<input type="text" id="userid"/> <br/>
用户姓名:<input type="text" id="username"/> <br/>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>
package com.ajaxServlet01.servlet;
//提交JSON格式数据在页面中自动转换类型
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("/jsonConvert.do")
public class jsonConvertServlet09 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("application/json");
        String s = req.getReader().readLine();
        PrintWriter pw = resp.getWriter();
        pw.print(s);
        pw.flush();
        pw.close();
    }
}

Ajax_$.get()的使用

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 15:05
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
        function but() {
            var userid = $("#userid").val();
            var username = $("#username").val();

            //使用get
            // $.get("data.do","id="+userid+"&name="+username,function(result){
            //     $("#span").html(result);
            // })
            $.get("data.do",{id:userid,name:username},function(result){
                $("#span").html(result);
            })
        }
    </script>
</head>
<body>
用户ID:<input type="text" id="userid"/> <br/>
用户姓名:<input type="text" id="username"/> <br/>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>

Ajax_$.post()的使用

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 15:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
        function but() {
            var userid = $("#userid").val();
            var username = $("#username").val();

            //使用get
            // $.post("data.do","id="+userid+"&name="+username,function(result){
            //     $("#span").html(result);
            // })
            $.post("data.do",{id:userid,name:username},function(result){
                $("#span").html(result);
            })
        }
    </script>
</head>
<body>
用户ID:<input type="text" id="userid"/> <br/>
用户姓名:<input type="text" id="username"/> <br/>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>

Ajax_$.getJSON()的使用

 

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 15:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
        function but() {
            var userid = $("#userid").val();
            var username = $("#username").val();


            $.getJSON("getJson.do",{id:userid,name:username},function(result){
                alert(result.userid+" "+result.username);
                $("#span").html(result.userid+" "+result.username);
            })
        }
    </script>
</head>
<body>
用户ID:<input type="text" id="userid"/> <br/>
用户姓名:<input type="text" id="username"/> <br/>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>
package com.ajaxServlet01.servlet;
/**
 * getJson方法传递数据并返回JSON格式数据
 */

import com.ajaxServlet01.common.JsonUtils;

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;
import java.util.HashMap;
import java.util.Map;
@WebServlet("/getJson.do")
public class GetJsonServlet10 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userid = req.getParameter("id");
        String username = req.getParameter("name");
        Map<String,String> map = new HashMap<>();
        map.put("userid",userid);
        map.put("username",username);
        String s = JsonUtils.objectToJson(map);
        resp.setContentType("application/json");
        PrintWriter pw = resp.getWriter();
        pw.print(s);
        pw.flush();
        pw.close();
    }
}

Ajax_serialize()方法的使用

 

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 16:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.js"></script> //jquery中引入ajax
    <script>
        function but() {
           var param = $("#form").serialize();   //这里就是免去 拼接字符串 userid+" " +username
            alert(param);
            $.ajax({
                type:"get",
                url:"data.do",

                 data:param,    

                success:function(result){
                    $("#span").html(result);
                }
            })
        }
    </script>
</head>
<body>
<form id="form">
    用户ID:<input type="text" name="id" id="userid"/> <br/>
    用户姓名:<input type="text" name="name" id="username"/> <br/>
</form>
<span id="span"></span>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>

demo

JSP页面

<%--
  Created by IntelliJ IDEA.
  User: 21129
  Date: 2021/9/25
  Time: 16:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户登录</title>
    <script src="js/jquery.js"></script>
    <script>
        $(function () {
            //获取页面初始化数据
            getData();
            //添加按钮绑定点击事件
            $("#add").click(function () {
                addOrUpdateUser("addUser");
            });
            //更新按钮绑定点击事件
            $("#update").click(function(){
                addOrUpdateUser("updateUser");
            });
        });
        //获取页面初始化数据
        function getData(){
            $.getJSON("user.do",{flag:"getData"},function(result){
                init(result);
            });
        }
        //遍历数据生成数据
        function init(obj) {
            var str="";
            $.each(obj,function(){
              str += "<tr align='center'><td id='"+this.userid+"'>"+this.userid+"</td><td>"+this.username+"</td><td>"+this.usersex+"</td><td>"+this.userbirth+"</td><td><a href='#' onclick='preUpdateUser("+this.userid+")'>选择更新</a>&nbsp;&nbsp;&nbsp;<a href='#' onclick='deleteUser("+this.userid+")'>删除</a></td></tr>"
            });
            $("#tBody").prepend(str);
        }
        //用户添加或者用户更新
        function addOrUpdateUser(flag){
            //从页面中获取数据
            var userid = $("#userid").val();
            var username = $("#username").val();
            var usersex = $("#usersex").val();
            var userbirth = $("#userbirth").val();

            var data = {
                userid :userid,
                username:username,
                usersex: usersex,
                userbirth: userbirth,
                flag: flag
            }
            location.reload();  //页面刷新
            $.get("user.do",data,function(result){
                alert(result);
            })
        }
        //更新之前的数据选择
        function preUpdateUser(userid){
            var arr = new Array();
            $("#"+userid).closest("tr").children().each(function(index,ele){
                if(index<=3){
                    arr[index] = ele.innerText
                }
            });
            //回填选择的一行信息
            $("#userid").val(arr[0]);
            $("#username").val(arr[1]);
            $("#usersex").val(arr[2]);
            $("#userbirth").val(arr[3]);
            $("#userid").attr("readonly",true); //不能修改id属性
        }
        //删除用户
        function deleteUser(userid) {
                $("#"+userid).closest("tr").remove();
                $.get("user.do",{userid:userid},function(result){
                    alert(result);
                })
        }
    </script>
</head>
<body>
<table align="center" width="60%" border="1">
    <tr>
        <td>ID:</td>
        <td><input type="text" name="userid" id="userid"/></td>
        <td>姓名:</td>
        <td><input type="text" name="username" id="username"/></td>
    </tr>
    <tr>
        <td>性别:</td>
        <td><input type="text" name="usersex" id="usersex"/></td>
        <td>生日:</td>
        <td><input type="text" name="userbirth" id="userbirth"/></td>
    </tr>
    <tr align="center">
        <td colspan="4">
            <input type="button"  value="添加用户" id="add" />
            <input type="button"  value="更新用户" id="update"/>
        </td>
    </tr>
</table>
<hr/>
<table align="center" width="60%" bgcolor="" border="1" id="myTable">
    <thead>
    <tr align="center">
        <td>ID</td>
        <td>姓名</td>
        <td>性别</td>
        <td>生日</td>
        <td>操作</td>
    </tr>
    </thead>
    <tbody id="tBody"></tbody>
</table>
</body>
</html>

实体类:

package com.ajaxServlet01.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class User {
    private int userid;
    private String username;
    private String usersex;
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date userbirth;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

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

    public String getUsersex() {
        return usersex;
    }

    public void setUsersex(String usersex) {
        this.usersex = usersex;
    }

    public Date getUserbirth() {
        return userbirth;
    }

    public void setUserbirth(Date userbirth) {
        this.userbirth = userbirth;
    }
}

Servlet实现页面

package com.ajaxServlet01.servlet;
/**
 * 用户管理Servlet
 */

import com.ajaxServlet01.common.JsonUtils;
import com.ajaxServlet01.pojo.User;

import javax.servlet.ServletContext;
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;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.SimpleTimeZone;

@WebServlet("/user.do")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String flag = req.getParameter("flag");
        if("getData".equals(flag)){
            this.getData(req,resp);
        }else if("addUser".equals(flag)){
            this.addUser(req,resp);
        }else if("updateUser".equals(flag)){
            this.updateUser(req,resp);
        }else{
            this.deleteUser(req,resp);
        }
    }
    //处理删除请求
    private void deleteUser(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
        ServletContext servletContext = this.getServletContext();
        List<User> list =(List<User>) servletContext.getAttribute("list");
        String userid = req.getParameter("userid");
        User user = null;
        for(User temp:list){
            if((temp.getUserid()+"").equals(userid)){
                user = temp;
                break;
            }
        }
        if(user !=null){
            list.remove(user);
        }
        resp.setContentType("text/plain;charset=utf-8");
        PrintWriter pw = resp.getWriter();
        pw.print("更新成功");
        pw.flush();
        pw.close();
    }


//处理更新请求
    private void updateUser(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
        User user = this.createUser(req);
        ServletContext servletContext = this.getServletContext();
        List<User> list =(List<User>) servletContext.getAttribute("list");
        User u =null;
        for(User temp : list) {
            if (temp.getUserid() == user.getUserid()) {
                u = temp;
                break;
            }
        }
            if(u != null){
                list.remove(u);
            }
            list.add(user);
            resp.setContentType("text/plain;charset=utf-8");
            PrintWriter pw = resp.getWriter();
            pw.print("更新成功");
            pw.flush();
            pw.close();

    }

    //处理添加用户请求
    private void addUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
            User user = this.createUser(req);
            ServletContext servletContext = this.getServletContext();
            List<User> list =(List<User>) servletContext.getAttribute("list");
            list.add(user);
            resp.setContentType("text/plain;charset=utf-8");
            PrintWriter pw = resp.getWriter();
            pw.print("添加成功");
            pw.flush();
            pw.close();
    }
    //获取请求数据、
    private User createUser(HttpServletRequest req){
        String userid = req.getParameter("userid");
        String username = req.getParameter("username");
        String usersex = req.getParameter("usersex");
        String userbirth = req.getParameter("userbirth");

        User user = new User();
        user.setUserid(Integer.parseInt(userid));
        user.setUsername(username);
        user.setUsersex(usersex);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date parse = sdf.parse(userbirth);
            user.setUserbirth(parse);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return user;
    }


    //获取页面初始化数据
    private void getData(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          List<User> list = (List<User>)this.getServletContext().getAttribute("list");
          String s = JsonUtils.objectToJson(list);
          resp.setContentType("application/json");
          PrintWriter pw = resp.getWriter();
          pw.print(s);
          pw.flush();
          pw.close();
    }

    //生成模拟数据初始化
    @Override
    public void init() throws ServletException {
       User user = new User();
       user.setUserid(1);
       user.setUsername("hhh");
       user.setUsersex("male");
       user.setUserbirth(new Date());

        User user2 = new User();
        user2.setUserid(12);
        user2.setUsername("1111hhh");
        user2.setUsersex("male");
        user2.setUserbirth(new Date());

        List<User> list = new ArrayList<>();
        list.add(user);
        list.add(user2);
        ServletContext servletContext = this.getServletContext();
        servletContext.setAttribute("list",list);
    }
}

实现效果:

​​​​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值