2012-04-02 14 views
-1

http://localhost:8080/file.jsp?arg1=&arg2=11Http 500 Internal Server Error

Läufe erfolgreich

http://localhost:8080/file.jsp?arg1=&arg2=

(leerer Wert für Argument 'arg2')

zeigt 500 Internal Server Error

Der Wert von ' arg2 'wird von einer' int 'Variable in' jsp 'mitverwendet

Wie es zu beheben?

+0

Welchen App-Server verwenden Sie? Es ist das Problem Server/Anwendung. Überprüfen Sie, ob Ihre Anwendung Nullwerte verarbeitet, oder überprüfen Sie die Serverunterstützung. –

+3

"HTTP 500 interner Serverfehler" ist eine übermäßig allgemeine Nachricht, dass der Server ein Problem bei der Verarbeitung der Anforderung hat. Dies wird normalerweise durch einen Fehler im serverseitigen Code verursacht. Diese Information ist in den Serverprotokollen sichtbar, normalerweise im Stil einer Ausnahme und eines Stacktrace. Sie als Entwickler sollten auf diese Ausnahme achten. Nur sagen "Ich habe einen 500 Fehler" ist absolut nicht hilfreich. – BalusC

Antwort

1

Es ist, weil Sie versuchen, „zu analysieren“ mit Integer.parseInt

prüfen Integer parseInt() API

Wenn Sie keine Werte übergeben Sie wie unten

http://localhost:8080/file.jsp?arg1=&arg2= 

Leere Zeichenfolge wird in HTTP-Anforderung übergeben werden Parameter.

Also, besser leeren Check wenn Parser von String Parsing.

int arg2 = !"".equals(request.getParameter("arg2")) ? 
       Integer.parseInt(request.getParameter("arg2")): 0; 
+0

Dies gilt nicht für Zeichenfolgenwerte, die keine Ziffern enthalten. Z.B. 'arg2 = foo'. – BalusC

+0

@BalusC: Ich stimme zu, aber es ist eine andere Validierung erforderlich mit Regx oder Muster Matcher in Java +5. –

-1

Wenn Sie den Internet Explorer verwenden, gehen Sie zu Extras - Internetoptionen - Erweitert - deaktivieren Sie unter Browser die Option "Friendly HTTP-Fehlermeldungen anzeigen". Dadurch können Sie eine bessere Beschreibung des Fehlers erhalten.

Um Sie mit Ihrem Code selbst zu helfen, müssen Sie ihn veröffentlichen.

+0

POST funktioniert nicht !! –

+1

Es ist ein schwerwiegendes Problem. Browser hat damit nichts zu tun. –

1

Es ist immer besser, die Abfrageparameter zu überprüfen, was benötigt wird. In diesem Fall können Sie die Bibliothek org.apache.commons.lang.math.NumberUtils verwenden, um zu überprüfen, ob der eingegebene Wert eine Zahl ist oder nicht, und den Standardwert verwenden, falls es sich nicht um eine Zahl handelt.

int arg2 = NumberUtils.isNumber(request.getParameter("arg2")) ? Integer.parseInt(request.getParameter("arg2")) : 0;