2012-04-02 183 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;