2012-04-02 198 views
-1

http://localhost:8080/file.jsp?arg1=&arg2=11HTTP 500內部服務器錯誤

運行成功

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

(空值參數 'ARG2')

顯示500內部服務器錯誤

'的值arg2'由'jsp'中的'int'變量使用,使用Integer.parseInt(request.getParameter("arg2")

如何解決?

+0

您正在使用的應用程序服務器。這是服務器/應用程序問題。檢查您的應用程序是否處理空值,或者檢查服務器支持。 – 2012-04-02 08:36:11

+3

「HTTP 500內部服務器錯誤」是服務器在處理請求時遇到問題的過度通用消息。這反過來通常是由服務器端代碼中的錯誤引起的。這些信息在服務器日誌中是可見的,通常會出現異常和堆棧跟蹤。作爲一名開發人員,您應該注意這個例外。只是說「我得到了500錯誤」絕對沒有幫助。 – BalusC 2012-04-02 14:10:27

回答

1

這是因爲你試圖解析「」與Integer.parseInt

檢查Integer parseInt() API

當你不傳遞任何值,像下面

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

空字符串將在HTTP請求中傳遞參數。

所以,最好在從字符串解析整數時進行空白檢查。

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

這不包括包含非數字的字符串值。例如。 'ARG2 = foo'。 – BalusC 2012-04-02 14:11:44

+0

@BalusC:我同意,但在java +5中使用regx或模式匹配器需要不同的驗證。 – 2012-04-02 14:36:42

-1

如果您使用的是Internet Explorer,請在瀏覽中點擊工具 - Internet選項 - 高級 - 取消選中「顯示友好的HTTP錯誤消息」。這將允許您更好地描述錯誤是什麼。

爲了幫助您處理代碼本身,您需要將其發佈。

+0

POST不起作用! – 2012-04-02 07:38:12

+1

這是一個嚴重的問題。瀏覽器與此無關。 – 2012-04-02 08:36:35

1

它始終是更好對證所需要的查詢參數。 在這種情況下,您可以使用org.apache.commons.lang.math.NumberUtils庫來檢查輸入的值是否爲數字,如果不是數字,則使用默認值。

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