2016-06-10 3 views
-2

über Sitzung in jsp fragen index.jspIch möchte

<form action="a.jsp" method="post"> 
    <input type="text" name="a"> 
    <input type="radio" name="b" value="admin">admin <input type="radio" name="b" value="member">member 
    <input type="submit" value="c"> 
</form> 

a.jsp

<% String a=request.getParameter("a"); String b=request.getParameter("b"); 

session.setAttribute("a",a); session.setAttribute("b",b); 

response.sendRedirect("b.jsp"); %> 

b.jsp

<% 
String b = (String)session.getAttribute("b"); 
if(b!="") 
{ 
    if(b.equals("admin")) 
    { 
     out.print(session.getAttribute("a")); 
     out.print("this is admin"); 
    } 
    else if(b.equals("member")) 
    { 
     out.print(session.getAttribute("a")); 
     out.print("this is member"); 
    } 
} 
else 
{ 
    out.print(session.getAttribute("a")); 
    out.print("this is guest"); 
} 

%> 
<form action="d.jsp" method="post"> 
    <input type="submit" value="d" /> 
</form> 

d. jsp

<% 
session.invalidate(); 
response.sendRedirect("index.jsp"); 
%> 

Der Code funktioniert gut, aber wenn ich den admin oder member Wert nicht wählen, sie sollte idealerweise in b.jsp Seite zu Gast Zustand gehen, aber was ich bin immer ein Fehler in Zeile 5

.

Fehler eine Ausnahme aufgetreten Verarbeitung JSP-Seite /c/b.jsp in Zeile 5

2: String b = (String)session.getAttribute("b"); 
3: if(b!="") 
4: { 
5: if(b.equals("admin")) 
6: { 
7:  out.print(session.getAttribute("a")); 
8:  out.print("this is admin"); 
+0

1) Welchen Fehler bekommen Sie genau? Könnte es eine NullPointerException sein? 2) Verwenden Sie '! =' Nicht, um Strings zu vergleichen, verwenden Sie '! (" ". Equals (b))' – Thilo

+1

Sie sind neu in JSP? Dann hör auf, Java-Code in deine JSP zu schreiben, benutze Servlets und sende einige Daten an die JSP. Dann benutze die EL-Sprache, um dir dynamischen Inhalt zu erstellen. Ihr Code-Stil ist die alte Version von Codierung, das ist überhaupt nicht lesbar;) Ein Sie können Filter Something-Klasse verwenden, um für jede Anfrage zu überprüfen, wenn eine Sitzung existiert, wenn nicht auf eine Seite umleiten. Dieser Filter wird vor den Servlets ausgeführt. Ich werde später eine Antwort dafür schreiben, wenn ein Foud einige Male;) – AxelH

Antwort

0

In b.jsp Es scheint, dass Sie versuchen, die Sitzungszuordnung für einen Eintrag zu überprüfen, dessen Schlüssel b ist, und dann zu entscheiden, welcher Benutzertyp die Seite basierend auf diesem Wert anzeigt.

Der problematische Code ist die zweite Zeile des scriptlet in b.jsp:

if (b!="") 
{ 

Wenn es für b in der Sitzung Karte kein Eintrag vorhanden ist, sollte dieser Vergleich true sein, den Code zu verursachen, die für Server-Betreiber überprüft oder Mitglied, das ausgeführt werden soll. Dies führt wiederum dazu, dass b in Vergleichen wie b.equals("admin") dereferenziert wird, was zu einem NullPointerException führt. Ihre Absicht ist es zu überprüfen, ob es irgendeinen Eintrag für b in der Sitzungszuordnung gibt. Wenn kein Eintrag gefunden wird, behandeln Sie den Benutzer als Gast. Wenn in der Sitzung kein Eintrag für den Schlüssel b vorhanden ist, wird null zurückgegeben, nicht leere Zeichenfolge. So sollten Sie für null Überprüfung werden:

if (b != null) 
{ 

Oder, wenn Sie wollte auch einen leeren String-Wert behandeln, als ein Gast zu sein, dann könnten Sie versuchen:

if (b != null && !b.equals("")) 
{ 
+0

Vielen Dank Herr –

0

Grund für die Ausnahme:

Ihr b.jsp ruft nullPointerException auf, wenn und nur wenn der Wert für Parameter nicht gesetzt ist.

Wie Sie oben angegeben haben, muss die Einreichung des Formulars ohne Auswahl eines Optionsfelds als Gast behandelt werden.

Also hier 2 Lösungen ist:

Lösung 1:

Statt Parameter als

if(b!="") {

Im Folgenden Code funktioniert gut zu prüfen, ersetzen Sie b. jsp mit dieser

<% 
String b = (String)session.getAttribute("b"); 
if(b==null) 
{ 
out.print(session.getAttribute("a")); 
out.print("this is guest"); 
} 
else { 
if(b.equals("admin")) 
{ 
    out.print(session.getAttribute("a")); 
    out.print("this is admin"); 
} 
else if(b.equals("member")) 
{ 
    out.print(session.getAttribute("a")); 
    out.print("this is member"); 
} 
} 
%> 
<form action="d.jsp" method="post"> 
<input type="submit" value="d" /> 
</form> 

Lösung 2:

Put Gast Radiobutton auch in der Form, so dass Gastbenutzer direkt "Gast" Option auswählen wird. (hier wird nullPointerException vermieden, da immer der Wert für den Parameter "b" gesetzt wird.)