在JSP中使用Integer.parseInt()报错的问题

来源:互联网 发布:北斗卫星软件 编辑:程序博客网 时间:2024/05/08 16:03
在JSP中使用xuehaoi = Integer.parseInt(request.getParameter("xuehao"));时候报错。打开页面显示500错误,定位到这一行。报错信息是:
org.apache.jasper.JasperException: An exception occurred processing JSP page /query.jsp at line 4946: System.out.println("娌℃湁鎷垮埌鏁版嵁");47: }48: if(xuehao!=null && ""!=xuehao.trim()){49: xuehaoi = Integer.parseInt(xuehao);50: }51: if(age!=null && ""!=age.trim()){52: agei = Integer.parseInt(age);Stacktrace:org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)javax.servlet.http.HttpServlet.service(HttpServlet.java:727)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)root causejava.lang.NumberFormatException: For input string: "20131103641"java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)java.lang.Integer.parseInt(Integer.java:583)java.lang.Integer.parseInt(Integer.java:615)org.apache.jsp.query_jsp._jspService(query_jsp.java:124)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)javax.servlet.http.HttpServlet.service(HttpServlet.java:727)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)javax.servlet.http.HttpServlet.service(HttpServlet.java:727)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

上网查资料,网上说使用Integer.valueOf()。其实网上的说法并不对。这里报错是因为将字符串“20131103641”转化为int型,但是int并不能放下这么大的数值。所以这个问题的原因是溢出。如果把xuehao的数值改为“100”就可顺利执行。在设计数据库的时候,一定要考虑到数据的范围,写入数据前应该进行检验,保证健壮性。


0 0