中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Servlet3.0與純javascript通過Ajax交互的示例分析

發布時間:2021-07-17 11:55:27 來源:億速云 閱讀:188 作者:小新 欄目:web開發

這篇文章主要介紹Servlet3.0與純javascript通過Ajax交互的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

雖然js.html是一個純靜態的頁面,但是以下的程序必須掛在Tomcat服務器上,才能做到Ajax交互,否則看不出效果的。

Eclipse for javaee注意把做好的工程掛在Tomcat上,才運行Tomcat。

本工程除了JSP必須的Servlet包以外,無須引入其它東西。其實想直接用一個JSP頁面完成這個工程的,但是現在搞JSP的,基本上沒有人直接在.jsp文件中寫東西了吧?后臺動作都扔到.java里面了。

一、基本目標

把前臺js.html輸入框輸入的東西,傳遞到后臺名稱為ajaxRequest,地址/ajaxRequest的Servlet.java。Servlet.java后臺再返回相應的信息給前臺js.html,js.html不刷新無跳轉,即時響應。

二、基本思想

由于是Servlet3.0,可以采用注解的方式寫Servlet,web.xml不用寫任何東西,直接讓Eclipse生成

里面只需留下如下內容:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
  version="3.0"> 
</web-app>

三、制作過程

1、首先寫Servlet.java與js.html哪個都沒所謂,反正Ajax交互中,這兩個是一體的,不可以割裂。

先看js.html,HTML布局部分很簡單,甚至表單都沒有,僅有兩個輸入框。

然后創建Ajax對象XMLHttpRequest的時候,注意不要使用XMLHttpRequest這個關鍵字,作為Ajax對象XMLHttpRequest的命名,否則一些瀏覽器處理不了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Js</title> 
</head> 
 
<body> 
  <input type="text" id="param1" /> 
  <input type="text" id="param2" /> 
  <button onclick="ajax()">Go!</button> 
</body> 
</html> 
<script> 
  //創建Ajax對象,不同瀏覽器有不同的創建方法,其實本函數就是一個簡單的new語句而已。  
  function createXMLHttpRequest() { 
    var XMLHttpRequest1; 
    if (window.XMLHttpRequest) { 
      XMLHttpRequest1 = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
      try { 
        XMLHttpRequest1 = new ActiveXObject("Msxml2.XMLHTTP"); 
      } catch (e) { 
        XMLHttpRequest1 = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
    } 
    return XMLHttpRequest1; 
  } 
  function ajax() { 
    //param1與param2就是用戶在輸入框的兩個參數 
    var param1=document.getElementById("param1").value; 
    var param2=document.getElementById("param2").value; 
    var XMLHttpRequest1 = createXMLHttpRequest(); 
    //指明相應頁面  
    var url = "./ajaxRequest"; 
    XMLHttpRequest1.open("POST", url, true); 
    //這里沒法解釋,你所有JavaScript的請求頭都這樣寫就對了,不會亂碼  
    XMLHttpRequest1.setRequestHeader("Content-Type", 
        "application/x-www-form-urlencoded"); 
    //對于ajaxRequest,本js.html將會傳遞param1與param2給你。  
    XMLHttpRequest1.send("param1=" + param1 + "&para;m2=" + param2); 
    //對于返回結果怎么處理的問題  
    XMLHttpRequest1.onreadystatechange = function() { 
      //這個4代表已經發送完畢之后  
      if (XMLHttpRequest1.readyState == 4) { 
        //200代表正確收到了返回結果  
        if (XMLHttpRequest1.status == 200) { 
          //彈出返回結果  
          alert(XMLHttpRequest1.responseText); 
        } else { 
          //如果不能正常接受結果,你肯定是斷網,或者我的服務器關掉了。  
          alert("網絡連接中斷!"); 
        } 
      } 
    }; 
  } 
</script>

2、之后是Servlet.java,其實doGet與doPost都是在頁面上打印東西,但是采取了這種不同的形式。PrintStream是以前JDK的輸出流,PrintWriter貌似是JDK1.4之后的輸出流。不過這部分太簡單了,輸入輸出流,都是Java的必修課吧?
js.html傳param1與param2給此Servlet.java之后,等待這個Servlet.java打印出相應的東西,然后在前臺直接通過XMLHttpRequest1.responseText變量讀取出來。

package jsServletAjax; 
import java.io.*;  
import javax.servlet.*;  
import javax.servlet.http.*;  
import javax.servlet.annotation.*;  
  
//說明這個Servlet是沒有序列號的  
@SuppressWarnings("serial")  
//說明這個Servlet的名稱是ajaxRequest,其地址是/ajaxRequest 
//這與在web.xml中設置是一樣的  
@WebServlet(name = "ajaxRequest", urlPatterns = { "/ajaxRequest" })  
public class Servlet extends HttpServlet {  
  //放置用戶之間通過直接在瀏覽器輸入地址訪問這個servlet  
  protected void doGet(HttpServletRequest request,  
      HttpServletResponse response) throws ServletException, IOException {  
    PrintStream out = new PrintStream(response.getOutputStream());  
    response.setContentType("text/html;charSet=utf-8");  
    out.print("請正常打開此頁"); 
  }  
  
  protected void doPost(HttpServletRequest request,  
      HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html; charset=utf-8"); 
    PrintWriter pw = response.getWriter(); 
    request.setCharacterEncoding("utf-8"); 
    String param1=request.getParameter("param1"); 
    String param2=request.getParameter("param2");     
    pw.print("前臺傳來了參數:param1="+param1+",param2="+param2); 
    pw.flush(); 
    pw.close(); 
  }  
}

以上是“Servlet3.0與純javascript通過Ajax交互的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

仪陇县| 宁晋县| 彩票| 吴桥县| 盐山县| 贵定县| 普安县| 乌兰察布市| 舒兰市| 凌云县| 房产| 调兵山市| 米林县| 盱眙县| 宁德市| 碌曲县| 军事| 突泉县| 芮城县| 镇赉县| 中西区| 丹阳市| 桐庐县| 浏阳市| 漠河县| 阜新市| 文山县| 汶上县| 扎鲁特旗| 莎车县| 东方市| 衡山县| 沁水县| 上虞市| 尉犁县| 孝昌县| 阿尔山市| 澄迈县| 信丰县| 特克斯县| 泰兴市|