meine Login-Seite (login.jsp) ruft als Form-Action ein Login-Servlet auf:
<form id="Form" action="/myApp/login">
Bei nicht erfolgreichem Login soll dieses Servlet wieder an die Login-Seite
übergeben:
HttpServletResponse.sendRedirect ("myApp/login.jsp");
Kann man dieser JSP-Seite eine eine Fehlermeldung übergeben, so dass z. B.
unter der Login-Box "Passwort falsch" angezeigt werden kann?
Danke!
Magnus
Ja.
1. Parameter mitgeben
HttpServletResponse.sendRedirect (
"myApp/login.jsp?errMsg=" +
URLEncoder.encode( "Passwort falsch" ) );
2. Parameter auslesen
<%= request.getParameter( "errMsg" ) %>
Eine kleine Hilfsmethode vermeidet das Ausgeben einer 'null'
/**
* Wenn der übergebene String <code>null</code> ist,
* wird ein Leerstring zurückgegeben, sonst der
* übergebene String.
*
* @param str von <code>null</code> in Leerstring
* umzuwandelnder String
* @return Leerstring oder übergebener String, wenn dieser
* nicht <code>null</code> ist
*/
public static String nullToEmptyStr(
final String str )
{
if ( str == null )
{
return "";
}
return str;
}
Also
<%= Util.nullToEmptyStr( request.getParameter( "errMsg" ) ) %>
Ich hoffe mit dem Anlegen einer Hilfsklasse und dem Import kommst Du
auch allein klar
> Magnus
Heiner
HeinerK wrote:
> 1. Parameter mitgeben
> 2. Parameter auslesen
Danke, werde ich so machen!!!
Sieht der Benutzer den Parameter dann in der URL?
Magnus
_Send_Redirect: ja das sieht er (wenn er hinguckt)
Kannst du die Phisher Methode machen:
protzbank.de___________________________100_mehr___.fies.inc.com?fo=bar
die '_' evtl als irgendein unicode space?
... Spaß beiseite
Dein Server wird wohl beim ersten Kontakt des Browsers eine
Session aufmachen, halt mit unangemeldetem User. Session ist
Session. Wenn das so ist kannst du den Zustand in der Session
speichern.
BTDTGT.
Wenn du das mit den parametern machen willst kannst du
das auch kodieren:
?e=1 passwort Falsch
?e=2 user unbekannt
?e=3 ldap nicht erreichbar
?e=4 keine Lust mehr
sieht weniger auffällig aus. Oder, da man ja frei ist:
/myApp/login.jsp?a
/myApp/login.jsp?b
/myApp/login.jsp?c
alternativ Zeichen '_', ',', '.', '-' hinters ?
Oder in der url einbauen:
/myApp/#/login.jsp
# ist der code
--> eher quatsch.
Oder Servlet hört auf mehere urls:
/myApp/login_pass_wrong.jsp
/myApp/login_user_unknown.jsp
--> ist aber auch quatsch.
Peter
> > > 1. Parameter mitgeben
> > > 2. Parameter auslesen
> >
> > Danke, werde ich so machen!!!
> >
> > Sieht der Benutzer den Parameter dann in der URL?
> _Send_Redirect: ja das sieht er (wenn er hinguckt)
[...]
Ergänzung:
mein BTDTGT war anders, ich bin mir sicher das ich dem Formular
dafür <input type="hidden"> spendierte.
Peter
Ich hab die Info nun in der Session gespeichert.
Magnus
Warum wird nicht intern das Login-Servlet mit RequestDispatcher.forward
oder so aufgerufen, was dann den Response füllen kann? Die Meldung kann
man dann als Attribut im Request oder in der Session übergeben.
Wenn ich am Server eine HTML-Seite ausliefern möchte, sollte ich das tun
und nicht über einen Redirect des Browsers an die Stelle verzweigen. Das
kostet nur Cpu- und Latenz-Zeit und schafft neue Security-Probleme.
Jörg