Modulo di richiesta HTTP POST utilizzando AJAX e Servlet
In Java Servlet Mondo sono comunemente utilizzati per Model View Controller (MVC) Design Pattern. Questo articolo vi guida sulla scrittura di applicazione basata su AJAX, che pubblicherà i dati di Servlet e al caricamento dei dati calcolati dal Servlet. Con questo approccio la pagina verrà visualizzato il contenuto aggiornato dal server senza aggiornare la jsp / pagina html.
JSP Codice:
<html> <head> <title> JSP e Servlet utilizzando AJAX </ title> "text/javascript" > Tipo di script <= "text / javascript"> //XML OBJECT funzione getXMLObject () / / oggetto XML ( false ; XMLHTTP var = false; try ( ActiveXObject ( "Msxml2.XMLHTTP" ) // For Old Microsoft Browsers XMLHTTP = new ActiveXObject ("Msxml2.XMLHTTP") / / Per Old Browser Microsoft ) e ) { catch (e) ( try ( ActiveXObject ( "Microsoft.XMLHTTP" ) // For Microsoft IE 6.0+ XMLHTTP = new ActiveXObject ("Microsoft.XMLHTTP") / / Per Microsoft IE 6.0 + ) e2 ) { catch (e2) ( // No Browser accepts the XMLHTTP Object then false XMLHTTP = false / / No browser accetta l'oggetto XMLHTTP poi false ) ) ! xmlHttp && typeof XMLHttpRequest != 'undefined' ) { if (! XMLHTTP & & typeof XMLHttpRequest! = 'undefined') ( XMLHttpRequest ( ) ; //For Mozilla, Opera Browsers XMLHTTP = new XMLHttpRequest (); / / Per Mozilla, Opera Browser ) // Mandatory Statement returning the ajax object created XMLHTTP ritorno; / / Obbligatoria Dichiarazione resa dei ajax oggetto creato ) new getXMLObject ( ) ; //xmlhttp holds the ajax object XMLHTTP var = getXMLObject nuovo (); / / XMLHTTP contiene l'oggetto ajax ajaxFunction funzione () ( xmlhttp ) { if (XMLHTTP) ( document. getElementById ( "txtname" ) ; txtName var = documento. getElementById ("txtName"); "POST" , "getname" , true ) ; //getname will be the servlet name XMLHTTP. open ("POST", "getName", true); / / getName sarà il nome servlet handleServerResponse ; XMLHTTP. onreadystatechange = handleServerResponse; 'Content-Type' , 'application/x-www-form-urlencoded' ) ; XMLHTTP. setRequestHeader ('Content-Type' applicazione, '/ x-www-form-urlencoded'); "txtname=" + txtname. value ) ; //Posting txtname to Servlet XMLHTTP. send ("txtName =" txtName +. value); / / Distacco txtName di Servlet ) ) handleServerResponse funzione () ( xmlhttp. readyState == 4 ) { if (xmlhttp. readyState == 4) ( xmlhttp. status == 200 ) { if (xmlhttp. status == 200) ( . innerHTML = xmlhttp. responseText ; //Update the HTML Form element documento. myForm. messaggio. innerHTML = XMLHTTP. responseText; / / Aggiorna l'elemento HTML form ) else ( "Error during AJAX call. Please try again" ) ; alert ("Errore durante la chiamata AJAX. Riprova"); ) ) ) </ Script> <body> <form name="myForm" method="POST" action="getname"> <table> <tr> <td> Inserisci Nome </ td> <td> <input type="text" name="txtname" id="txtname" /> </ td> </ Tr> <tr> <td colspan="2"> <input type="button" value="Submit" onclick="ajaxFunction();" /> </ td> </ Tr> </ Table> <div id="message"> </ div> </ Form> </ Body> </ Head> </ Html>
Servlet codice
; import java.text.* ; import java.util.* ; import javax.servlet.* ; import javax.servlet.http.* ; public class getname extends HttpServlet { public void init ( ServletConfig config ) throws ServletException { super . init ( config ) ; } public void destroy ( ) { } public void doPost ( HttpServletRequest request,HttpServletResponse response ) throws IOException , ServletException { String name = null ; PrintWriter out = response. getWriter ( ) ; if ( request. getParameter ( "txtname" ) != null ) { name = request. getParameter ( "txtname" ) ; } else { name = "" ; } out. println ( "You have successfully made Ajax Call:" + name ) ; } } import java.io. *; java.text importazione .*; import java.util .*; import javax.servlet .*; javax.servlet.http importazione .*; getName public class estende HttpServlet (void init pubblico (config ServletConfig) getta ServletException (super. init (config);) public void destroy () () public void doPost (richiesta HttpServletRequest, risposta HttpServletResponse) throws IOException, ServletException (String nome = null; PrintWriter out = risposta. getWriter (); if (richiesta . getParameter ("txtName")! =) null (nome = richiesta. getParameter ("txtName");) else (name = "";) out. println ("È stata fatta Ajax chiamata:" + nome);) )
Spiegazione per il codice AJAX
Qui i tre hanno dichiarato funzione JavaScript:
getXMLObject () - Responsabile per la creazione dell'oggetto AJAX a seconda del browser.
ajaxFunction () - Responsabile per la chiamata servlet tramite chiamata AJAX.
handleServerResponse () - Responsabile per la visualizzazione dei dati recuperati dal server.
Come funziona il codice AJAX Works:
- Quando la pagina viene caricata sto creando un oggetto AJAX chiamando il getXMLObject () e restituire l'oggetto creato nella variabile XMLHTTP
- Quando l'utente fa clic sul pulsante di input, ajaxFunction () viene chiamato controlli che per Ajax se l'oggetto viene creato o no e in base a che chiama lo script remoto. Ecco una handleServerResponse funzione di gestione è definita anche per recuperare il valore dal server
- Quando il ReadyState della chiamata AJAX raggiunge i 4 e lo stato di HTTP è di 200 si passa ai dati recuperati dal server nella casella di testo
Spiegazione per il codice della servlet
- Con la funzione predefinita doPost viene chiamata quando si registra il contenuto al servlet
- In funzione doPost Io sono al caricamento dei dati POST in forma di txtName e di assegnarlo al nome della variabile locale
- Finalmente sono la visualizzazione dei dati attraverso preso POST. Tutti i dati visualizzati viene passato all'oggetto Ajax in forma di risposta alla chiamata Ajax apportate al servlet



































Good site I "Stumbledupon" oggi e ha dato un inciampo per voi .. ansioso di vedere cos'altro avete .. più tardi
il codice non funziona! u citare in giudizio il suo codice funziona ... dopo presentare uscita servlet non mostrato pagina restare così com'è .. aiuto
Ho dato lo stesso nome e controllato il codice correttamente ...
ciao il codice realmente lavorato but suo lavorando solo per il distacco di un valore a la forma, ho un modulo che i valori di molti messaggi da circa otto campi di testo, questo codice non funziona con chi non è di ingressi si prega di suggerire una soluzione,
ive e la sua urgenza di utilizzare nel mio progetto sem finale,
Grazie mille in anticipo
uso
"Document.getElementById (" messaggio "). Xmlhttp.responseText innerHTML =;"
sostituire
"Xmlhttp.responseText document.myForm.message.innerHTML =;"
Ciao Hitesh
Sono nuovo di AJAX. Ho un problema per il quale ho bisogno di una soluzione con ajax ..
Nel mio ricorso in quanto appena il login si riferisce a uno servelt which ha il Businesslogic and output è uno jsp file visualizzando una tabella ... i necessario aggiornare il jsp dopo un certo intervallo without any dell'azione o dell'evento. Essa ha per ottenere i dati aggiornati dal database
pls u può fornire alcuni esempi