2010-12-14 5 views
1

J'ai un code de servlet où je vérifie le nom d'utilisateur et mot de passe dans une classe d'aide et après avoir vérifié il revient à servlet et répertorie les utilisateurs. Le nom d'utilisateur ainsi que la liste des utilisateurs doivent être affichés dans le fichier jsp. Comment envoyer les deux les valeurs? Voici le code que j'ai essayé. Il n'affiche rien Chaîne outp = t.Welcome (nom, pwd);Envoi de plusieurs valeurs de servlet à jsp

String Users=t.List_Of_Users(); 
String User[]=Users.trim().split(" "); 
request.setAttribute("name", User); 
response.sendRedirect("Welcome_User.jsp?Users="+User+"&outp="+outp); 

Répondre

2
  • Si vous utilisez la transmission (request.getRequestDispatcher("welcome_user.jsp").forward()) - il suffit d'ajouter un autre request.setAttribute("attrName", value);
  • si vous conserviez la redirection - ajouter un autre paramètre get. Welcome_User.jsp?Users="+User+"&outp="+outp + "&another=" + another; (et supprimer le request.setAttribute(..))

Afin de représenter un tableau sous forme de chaîne, vous avez plusieurs options. Dont un est Arrays.toString(array)

(Notez que l'envoi d'un mot de passe comme paramètre get est un problème de sécurité.)

+0

+1. Mais je crois que la dernière option dépendrait de l'implémentation de la méthode 'toString()', et pourrait ne pas fonctionner comme prévu. –

+0

bien, oui, je suppose que c'est déjà un 'String' :) – Bozho

+0

Dans l'extrait, c'est un tableau. Je sais, la convention de nommage est un peu bousillée. :) –

2

Vous pouvez définir autant d'attributs que vous voulez, devrait également être pris en charge de l'optimisation. ,

request.setAttribute("key1", Object1); 
request.setAttribute("key2", Object2); 
request.setAttribute("key3", Object3); 
. 
. 
. 
request.setAttribute("keyn", Objectn); 

puis

String destination = "/WEB-INF/pages/result.jsp"; 
RequestDispatcher rd = getServletContext().getRequestDispatcher(destination); 
rd.forward(request, response); 
+0

Ce ne sont pas des paramètres, ce sont des attributs. Les deux ont une signification différente ici, dans ce contexte. Donc, vous devriez faire attention. ;) –

+0

@Adeel ouais. Je pense que OP veut passer des données de servlet à JSP, donc je ne pense pas que ce soit un problème avec cette approche. Je sais l'attribut et le paramètre sont des choses différentes, Merci btw :) –

+0

@ org.life.java: J'ai édité votre poste, j'espère que cela ne vous dérange pas. Maintenant, j'espère, vous avez déjà compris ce que je voulais dire. –

3

response.sendRedirect() va vider la mémoire tampon, ce qui signifie apparemment toute demande attributs précédemment défini ne sera pas retenu.

Dans votre cas, je crois, il est préférable d'utiliser RequestDispatcher.forward(), après avoir défini vos attributs souhaités dans l'objet de requête. NB: Par convention, vous devez définir vos noms de variables en commençant par une lettre minuscule. Par exemple, String user;, au lieu de String User;. Deuxièmement, les noms de méthodes ne doivent pas utiliser de traits de soulignement. En outre, je proposerais des noms explicites. Voici votre extrait avec un petit changement de nom.

String userNamesStr =t.userNamesSpaceDelimited(); 
String[] userNameArr = userNamesStr.trim().split(" "); // Or userNames, but we usually follow this for List 
0
String[] values = getParameterValues(“Input Parameter”); 

essayer. En savoir plus sur cette méthode

Questions connexes