溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在AJAX中使用 Servlet實現數據異步交互

發布時間:2020-11-25 17:12:10 來源:億速云 閱讀:328 作者:Leah 欄目:編程語言

本篇文章為大家展示了如何在AJAX中使用 Servlet實現數據異步交互,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

首先,導入json所需要的6個包

如何在AJAX中使用 Servlet實現數據異步交互

下載鏈接:JSONObjectjar_jb51.rar

總的目錄:

如何在AJAX中使用 Servlet實現數據異步交互

前端頁面:

首先是一個輸入框:

<input type="text" id="keyword" name="keyword" onkeyup="getContents()">

onkeyup表示按下鍵盤時的操作

javascript:

<script type="text/javascript">
  
  //全局xmlHttp對象
  var xmlHttp;

  //獲得xmlHttp對象
  function createXMLHttp() {
    //對于大多數瀏覽器適用
    var xmlHttp;
    if (window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
    }
    //考慮瀏覽器的兼容性
    if (window.ActiveXObject) {
      xmlHttp = new ActiveXOject("Microsoft.XMLHTTP");
      if (!xmlHttp) {
        xmlHttp = new ActiveXOject("Msxml2.XMLHTTP");
      }
    }
    return xmlHttp;
  }
  
  //回調函數
  function callback() {
    //4代表完成
    if(xmlHttp.readyState == 4){
      //200代表服務器響應成功,404代表資源未找到,500服務器內部錯誤
      if(xmlHttp.status == 200){
        //交互成功獲得響應的數據,是文本格式
        var result = xmlHttp.responseText;
        //解析獲得的數據
        var json = eval("("+ result +")");
        //獲得數據之后,就可以動態的顯示數據了,把數據顯示到輸入框下面
        alert(json);
      }
    }
  }
  
  //獲得輸入框的內容
  function getContents(){
    //首先獲得用戶的輸入內容,這里獲得的是一個結點
    var content = document.getElementById("keyword");
    if(content.value ==""){
      return;
    }
    
    //向服務器發送內容,用到XmlHttp對象
    xmlHttp = createXMLHttp();
    //給服務器發送數據,escape()不加中文會有問題
    var url = "search&#63;keyword=" + escape(content.value);
    //true表示js的腳本會在send()方法之后繼續執行而不會等待來自服務器的響應
    xmlHttp.open("GET",url,true);
    //xmlHttp綁定回調方法,這個方法會在xmlHttp狀態改變的時候調用,xmlHttp狀態有0-4,
    //我們只關心4,4表示完成
    xmlHttp.onreadystatechange=callback;
    xmlHttp.send(null);
  }
</script>

總的index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
  
  //全局xmlHttp對象
  var xmlHttp;

  //獲得xmlHttp對象
  function createXMLHttp() {
    //對于大多數瀏覽器適用
    var xmlHttp;
    if (window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
    }
    //考慮瀏覽器的兼容性
    if (window.ActiveXObject) {
      xmlHttp = new ActiveXOject("Microsoft.XMLHTTP");
      if (!xmlHttp) {
        xmlHttp = new ActiveXOject("Msxml2.XMLHTTP");
      }
    }
    return xmlHttp;
  }
  
  //回調函數
  function callback() {
    //4代表完成
    if(xmlHttp.readyState == 4){
      //200代表服務器響應成功,404代表資源未找到,500服務器內部錯誤
      if(xmlHttp.status == 200){
        //交互成功獲得響應的數據,是文本格式
        var result = xmlHttp.responseText;
        //解析獲得的數據
        var json = eval("("+ result +")");
        //獲得數據之后,就可以動態的顯示數據了,把數據顯示到輸入框下面
        alert(json);
      }
    }
  }
  
  //獲得輸入框的內容
  function getContents(){
    //首先獲得用戶的輸入內容,這里獲得的是一個結點
    var content = document.getElementById("keyword");
    if(content.value ==""){
      return;
    }
    
    //向服務器發送內容,用到XmlHttp對象
    xmlHttp = createXMLHttp();
    //給服務器發送數據,escape()不加中文會有問題
    var url = "search&#63;keyword=" + escape(content.value);
    //true表示js的腳本會在send()方法之后繼續執行而不會等待來自服務器的響應
    xmlHttp.open("GET",url,true);
    //xmlHttp綁定回調方法,這個方法會在xmlHttp狀態改變的時候調用,xmlHttp狀態有0-4,
    //我們只關心4,4表示完成
    xmlHttp.onreadystatechange=callback;
    xmlHttp.send(null);
  }
</script>
</head>
<body>
  <input type="text" id="keyword" name="keyword" onkeyup="getContents()">
</body>
</html>

后端:

AjaxServlet.java

package com.loger.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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 net.sf.json.JSONArray;

/**
 * Servlet implementation class AjaxServlet
 */
@WebServlet("/search")
public class AjaxServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
  
  static List<String> list = new ArrayList<>();
  static{
    list.add("chenle");
    list.add("陳樂");
  }
    
  /**
   * @see HttpServlet#HttpServlet()
   */
  public AjaxServlet() {
    super();
    // TODO Auto-generated constructor stub
  }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //設置編碼
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    
    //首先獲得客戶端發送來的數據
    String keyword = request.getParameter("keyword");
    System.out.println(keyword);
    
    
    
    //返回json數據
    response.getWriter().write(JSONArray.fromObject(list).toString());
  }

  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
  }

}

運行結果:

如何在AJAX中使用 Servlet實現數據異步交互

上述內容就是如何在AJAX中使用 Servlet實現數據異步交互,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女