在JSP中使用xuehaoi = Integer.parseInt(request.getParameter("xuehao"));时候报错。打开页面显示500错误,定位到这一行。报错信息是:
org.apache.jasper.JasperException: An exception occurred processing JSP page /query.jsp at line 49
46: 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 cause
java.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”就可顺利执行。在设计数据库的时候,一定要考虑到数据的范围,写入数据前应该进行检验,保证健壮性。