Appeler Servlet et invoquer le code Java à partir de JavaScript avec les paramètres
j'ai la clé de session qui est une variable JavaScript que j'ai obtenue à partir d'un appel D'API REST. Je dois appeler mon code Java dans un servlet et passer cette clé comme paramètre. Quelle fonction JavaScript puis-je utiliser pour faire cela?
3 réponses
plusieurs façons:
-
utilisez
window.location
pour lancer une requête GET. La mise en garde est que c'est synchrone (de sorte que le client verra la page actuelle être changée).window.location = "http://example.com/servlet?key=" + encodeURIComponent(key);
notez l'importance de la fonction
encodeURIComponent()
intégrée pour coder les paramètres de la requête avant de la passer. -
utilisez
form.submit()
pour lancer une demande GET ou POST. Le problème est aussi que il"s synchrone.document.formname.key.value = key; document.formname.submit();
avec
<form name="formname" action="servlet" method="post"> <input type="hidden" name="key"> </form>
Sinon, vous pouvez également définir le champ caché du formulaire et attendez jusqu'à ce que l'utilisateur soumet.
-
utilisez
XMLHttpRequest#send()
pour lancer une requête asynchrone en arrière-plan (également connu sous le nom D'Ajax). L'exemple ci-dessous va invoquer servlet"sdoGet()
.var xhr = new XMLHttpRequest(); xhr.open("GET", "http://example.com/servlet?key=" + encodeURIComponent(key)); xhr.send(null);
ci-dessous l'exemple invoquera servlet " s
doPost()
.var xhr = new XMLHttpRequest(); xhr.open("POST", "http://example.com/servlet"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("key=" + encodeURIComponent(key));
-
Utiliser jQuery pour envoyer un crossbrowser compatible requête Ajax (au-dessus
xhr
code fonctionne dans la vraie uniquement pour les navigateurs, pour MSIE compatibilité, vous"ll faut ajouter un peu de désordre ;) ).$.get("http://example.com/servlet", { "key": key });
$.post("http://example.com/servlet", { "key": key });
notez que jQuery encode déjà de manière transparente les paramètres de la requête tout seul, donc vous n'avez pas besoin
encodeURIComponent()
ici.
dans tous les cas, le key
sera disponible dès request.getParameter("key")
dans le servlet.
voir aussi:
aucune fonction JavaScript en soi, mais les navigateurs généralement * fournir un XMLHttpRequest objet et vous pouvez passer par ce .
Bibliothèques comme YUI et jQuery fournir des fonctions d'assistance pour simplifier son utilisation.
* pour une valeur de "Habituellement" qui comprend à peu près n'importe quel navigateur qui supporte JavaScript et a été libéré depuis la mort de Netscape 4
lors de L'envoi de l'en-tête add POST xhttp.setRequestHeader ("Content-type"," application/x-www-form-urlencoded");
le code ressemble à Client:
function executeRequest(req) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// Typical action to be performed when the document is ready:
document.getElementById("response").value = xhttp.responseText;
}
};
xhttp.open("POST", "execute/cardbrowser", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("lorem=ipsum&name=binny");
}
serveur:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(req.getParameter("lorem"));
}