Passer des variables à partir de JSP de servlet
Tout le temps, quand j'ai cherché sur Google, j'ai obtenu douzaine de réponses qui sont affichés dans Stackoverflow à propos du passage de variables au servlet de JSP.
Mais je me demande, je ne reçois pas de réponse de: How to pass a variable from JSP to a servlet class? Is it possible?
En fait je suis en train de faire un simple Répertoire application. Ici, je dois envoyer contact id pour une servlet pour l'édition et la suppression. Comment puis-je transmettre cette valeur?
Je sais, on peut passer de la variable de servlet pour JSP en utilisant
request.setAttribute(key, value)
Mais quand je l'ai utilisé pour définir la variable en JSP et encore obtenir à l'aidesession.getAttribute(key )
alors le résultat est null.
Dieu de m'aider.
- Pourquoi allez-vous poster ici si vous voulez que Dieu vous aider à :-p
- Je me demande pourquoi mettre des trucs dans la demande et de plus en plus de choses à partir de quelque chose n'a PAS de nom demande n'est pas de travail.
- Tout le monde est dieu qui l'aide à quelqu'un. 🙂
- Je pense que vous avez mal compris le cycle de vie d'une requête HTTP dans le contexte d'une servlet et jsp. La demande arrive à le conteneur, qui appelle une servlet. La servlet peu de magie et de transmettre la demande à la jsp, fondamentalement, le rendu html. La servlet n'a plus rien plus. Vous devez faire une nouvelle requête http soit par le biais d'un formulaire, un lien, un rafraichissement de la page, etc.
- Vous pouvez communiquer avec servlet via faire la demande, même si vous le faites de jsp.
- Nous ne pouvons pas utiliser la page jsp de transmettre certaines données à servlet, puis d'autres variable de session? C'est le seul but est de rendre? alors Comment nous pouvons communiquer jsp et servlet avec out à l'aide du formulaire?
- Je peux passer d'élément de formulaire, mais Comment je peux envoyer d'autres variables qui sont à l'extérieur de l'élément de formulaire?
- Je l'ai fait, Mais Il renvoie toujours NULL uniquement 🙁
- fournir un code, alors il sera ez er pour vous aider.
- servlet ne retourne rien, mais le processus de la demande et la réponse.
- Désolé, il retourne uniquement la date de dernière modification de la demande et il ne peut pas être NULL.
- Dans votre question, où est le code que vous avez un problème avec? Vous avez besoin de montrer le code, ou une version plus petite de reproduire le problème que vous rencontrez. Merci de nous aider à vous aider.
- vous êtes réglage variable de la demande, mais l'obtenir à partir d'objet de session c'est pourquoi vous obtenez la valeur null. définir et obtenir de l'attribut en utilisant le même objet, soit la demande ou de la session.
- Vous devez transmettre ce que vous avez besoin en tant que paramètres de la requête, et l'utilisation
request.getParameter()
pour les obtenir.
Vous devez vous connecter pour publier un commentaire.
La manière standard de croisement/de la soumission des données au serveur, dans la plus pure Servlets/JSP monde (comme dans votre cas à partir de la JSP à la servlet) est par l'utilisation de formulaire HTML, c'est à dire de la même manière que lors de l'utilisation d'autres technologies (ASP.NET, PHP, etc). Et il n'a pas d'importance si c'est un pur HTML de la page ou de la page JSP. Le recommandé/plus utilisé la méthode de la soumission des données du formulaire au serveur est POST.
Vous pouvez également transmettre des données dans la chaîne de requête qui est contenu dans l'URL de la requête après le chemin d'accès (c'est également le cas lorsque, au lieu de POST vous utilisez OBTENIR méthode dans le formulaire). Mais c'est pour les cas simples, comme la construction d'Url pour la pagination, etc (vous pouvez voir l'exemple de la construction des Url avec les requêtes supplémentaires ici: La composition de l'URL dans la JSP)
Exemple de passage de paramètres dans l'URL:
http://example.com/foo?param1=bar&page=100
Pour la différence entre la soumission des données à l'aide de OBTENIR et POST méthodes lire ici:
GET par rapport à des Requêtes POST sur le code HTML
Les formes
Dans les formulaires HTML, quelle est la différence entre l'utilisation de la méthode GET
rapport
POST?
De sorte que vous pouvez configurer certains servlet pour traiter les données envoyées/soumis à partir d'une JSP ou HTML, etc ...
Il est fortement recommandé de soumettre des données à l'aide de POST méthode et, respectivement, de traiter les données transmises à l'aide de la
doPost()
méthode dans votre servlet.Vous obtiendrez alors les paramètres transmis par le client dans la demande à l'aide de l'une des opérations suivantes ServletRequest méthodes:
de nom)
getParameterMap()
getParameterNames()
de nom)
Voici un tutorial avec des exemples: La manipulation de la Demande du Client: les Données de Formulaire
Le tutoriel ci-dessus est de les cours suivants:
La construction des Applications Web en Java:
Début & Intermédiaire Servlet & JSP Tutoriels
Une autre façon de l'échange des données à l'aide de Java EE est en stockant des données en tant qu'attributs dans les différents étendues. (Voici l'extrait d'une de mes réponses sur DONC)
Il y a 4 étendues de dans Java EE 5 (voir La Java EE 5 Tutoriel: Utilisation des Objets de Portée). Dans Java EE 6 et Java EE 7 il y a 5 étendues (voir Java EE 6 Tutoriel: Utilisation d'Étendues et Java EE 7 Tutoriel: Utilisation d'Étendues). Les plus utilisés sont:
Vous pouvez stocker des données dans toutes les étendues en définissant l'attribut approprié.
Voici une citation de l'API Java EE docs liés à ServletRequest.setAttribute(String, Object) méthode en ce qui concerne demande portée:
Donc, avec chaque nouvelle demande de la précédente attributs que vous avez défini dans demande sera perdu. Après vous avez défini un attribut dans une demande, vous doit transmettre la demande à la page désirée. Si vous rediriger, ce sera une toute NOUVELLE demande, donc les attributs précédemment jeu sera perdu. (Si vous voulez toujours utiliser la redirection de lire ceci: Servlet Redirection vers la même page avec le message d'erreur)
Ces attributs sont définis dans un HttpSession (dans le la portée de session) vivent aussi longtemps que la session de vie et, bien sûr, sera uniquement à la disposition de l'utilisateur de la session auquel appartient.
Comme pour le contexte attributs, ils sont destinés à être disponible pour l'ensemble de l'application web (la portée de l'application) et pour TOUS les utilisateurs, de plus, ils vivent aussi longtemps que l'application web vie.
Aussi peut-être que cet article sera utile pour vous ainsi: Comment Java EE 6 Étendues Affecter les Interactions de l'Utilisateur
Également prêter attention à question. Vous avez écrit (citation):
Que les utilisateurs @neel et @Sanchit l'avez remarqué, vous êtes à la définition d'un attribut dans la
request
objet, mais en essayant de le récupérer à partir de lasession
. Pas étonnant que vous obteneznull
dans ce cas.Espère que cela va vous aider.