Dieses Mal stelle ich Ihnen Servlet3.0+JS für die Ajax-Interaktion vor. Was sind die Vorsichtsma?nahmen für die Ajax-Interaktion mit Servlet3.0+JS?
Obwohl js.html eine rein statische Seite ist, muss das folgende Programm auf dem Tomcat-Server h?ngen, um eine Ajax-Interaktion zu erreichen, andernfalls ist der Effekt nicht sichtbar.
Eclipse für Javaee achten Sie darauf, das abgeschlossene Projekt auf Tomcat aufzuh?ngen, bevor Sie Tomcat ausführen.
Mit Ausnahme des für JSP erforderlichen Servlet-Pakets muss dieses Projekt nichts anderes einführen. Tats?chlich m?chte ich direkt eine JSP-Seite verwenden, um dieses Projekt abzuschlie?en, aber heutzutage schreibt im Grunde niemand, der sich mit JSP besch?ftigt, Dinge direkt in die .jsp-Datei, oder? Alle Hintergrundaktionen werden in .java geworfen.
1. Grundziel
übertragen Sie die Eingabe im Front-End-js.html-Eingabefeld mit dem Namen ajaxRequest an das Back-End und die Adresse /ajaxRequest Servlet.java. Der Servlet.java-Hintergrund gibt dann die entsprechenden Informationen an die Front-End-js.html zurück. Die js.html wird nicht aktualisiert und reagiert nicht.
2. Grundidee
Da es sich um Servlet3.0 handelt, k?nnen Sie Anmerkungen zum Schreiben von Servlets verwenden, und das ist auch nicht n?tig Schreiben Sie alles in web.xml. Lassen Sie Eclipse direkt generieren
und lassen Sie nur den folgenden Inhalt darin:
<?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>
3. Produktionsprozess
1. Es spielt keine Rolle, ob Sie Servlet.java oder js.html schreiben. In der Ajax-Interaktion sind diese beiden jedoch integriert und k?nnen nicht getrennt werden.
Schauen Sie sich zuerst js.html an. Das HTML-Layout ist nicht einmal ein Formular, sondern nur zwei Eingabefelder.
Achten Sie beim Erstellen des Ajax-Objekts XMLHttpRequest darauf, das Schlüsselwort XMLHttpRequest nicht als Namen des Ajax-Objekts XMLHttpRequest zu verwenden, da es sonst von einigen Browsern nicht verarbeitet werden kann.
<!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>?
??//創(chuàng)建Ajax對(duì)象,不同瀏覽器有不同的創(chuàng)建方法,其實(shí)本函數(shù)就是一個(gè)簡(jiǎn)單的new語(yǔ)句而已。??
??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就是用戶在輸入框的兩個(gè)參數(shù)?
????var?param1=document.getElementById("param1").value;?
????var?param2=document.getElementById("param2").value;?
????var?XMLHttpRequest1?=?createXMLHttpRequest();?
????//指明相應(yīng)頁(yè)面??
????var?url?=?"./ajaxRequest";?
????XMLHttpRequest1.open("POST",?url,?true);?
????//這里沒(méi)法解釋,你所有JavaScript的請(qǐng)求頭都這樣寫(xiě)就對(duì)了,不會(huì)亂碼??
????XMLHttpRequest1.setRequestHeader("Content-Type",?
????????"application/x-www-form-urlencoded");?
????//對(duì)于ajaxRequest,本js.html將會(huì)傳遞param1與param2給你。??
????XMLHttpRequest1.send("param1="?+?param1?+?"?m2="?+?param2);?
????//對(duì)于返回結(jié)果怎么處理的問(wèn)題??
????XMLHttpRequest1.onreadystatechange?=?function()?{?
??????//這個(gè)4代表已經(jīng)發(fā)送完畢之后??
??????if?(XMLHttpRequest1.readyState?==?4)?{?
????????//200代表正確收到了返回結(jié)果??
????????if?(XMLHttpRequest1.status?==?200)?{?
??????????//彈出返回結(jié)果??
??????????alert(XMLHttpRequest1.responseText);?
????????}?else?{?
??????????//如果不能正常接受結(jié)果,你肯定是斷網(wǎng),或者我的服務(wù)器關(guān)掉了。??
??????????alert("網(wǎng)絡(luò)連接中斷!");?
????????}?
??????}?
????};?
??}?
</script>
2. Als n?chstes kommt Servlet.java. Tats?chlich drucken sowohl doGet als auch doPost Dinge auf der Seite, aber sie nehmen diese unterschiedliche Form an. PrintStream ist der Ausgabestream des vorherigen JDK, und PrintWriter scheint der Ausgabestream nach JDK1.4 zu sein. Aber dieser Teil ist zu einfach. Eingabe- und Ausgabestreams sind alles Pflichtkurse in Java, oder?
Nachdem js.html param1 und param2 an dieses Servlet.java übergeben hat, wartet es darauf, dass dieses Servlet.java die entsprechenden Dinge ausgibt, und liest sie dann direkt über die Variable XMLHttpRequest1.responseText im Front Desk.
package?jsServletAjax;?
import?java.io.*;??
import?javax.servlet.*;??
import?javax.servlet.http.*;??
import?javax.servlet.annotation.*;??
??
//說(shuō)明這個(gè)Servlet是沒(méi)有序列號(hào)的??
@SuppressWarnings("serial")??
//說(shuō)明這個(gè)Servlet的名稱是ajaxRequest,其地址是/ajaxRequest?
//這與在web.xml中設(shè)置是一樣的??
@WebServlet(name?=?"ajaxRequest",?urlPatterns?=?{?"/ajaxRequest"?})??
public?class?Servlet?extends?HttpServlet?{??
??//放置用戶之間通過(guò)直接在瀏覽器輸入地址訪問(wèn)這個(gè)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("請(qǐng)正常打開(kāi)此頁(yè)");?
??}??
??
??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("前臺(tái)傳來(lái)了參數(shù):param1="+param1+",param2="+param2);?
????pw.flush();?
????pw.close();?
??}??
}
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Vue zur Implementierung der Baummenüleistenfunktion verwenden
Preload()-Funktion und Bild-Upload-Nutzung
Das obige ist der detaillierte Inhalt vonServlet3.0+JS für Ajax-Interaktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!