java.lang.NumberFormatException:null(购物篮)?

时间:2018-01-06 19:44:09

标签: java jsp

我正在尝试使用JSP制作购物篮。我从第一个JSP获取代码(因为它向我显示了我在语句中获得的信息)但是当我提交创建arraylist时,它没有得到我在第一个语句中使用的相同代码。它显示以下错误:

  

错误:java.lang.NumberFormatException:null   输入InformedeExcepción

     JSP中的一个例子是一个很好的例子   /carritobolsos.jspenlínea23

     

descripciónElservidorencontróunerror interno que hizo que no   pudiera rellenar este requerimiento。

     

excepción

     

org.apache.jasper.JasperException:Ha sucedidounaexppciónalal   procarlapáginaJSP/carritobolsos.jspenlínea23

     

20:<%21:DriverManager.registerDriver(new   oracle.jdbc.OracleDriver()); 22:连接conn =   的DriverManager.getConnection   (“jdbc:oracle:thin:@localhost:1521:XE”,“system”,“javaoracle”);
  23:int codigo = Integer.parseInt(request.getParameter(“cod”));   24:25:声明   PSTM = conn.createStatement(); 26:

     

堆栈跟踪:       org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:574)       org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)       org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)       org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)       javax.servlet.http.HttpServlet.service(HttpServlet.java:729)       org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)       org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)   causaraíz

     

java.lang.NumberFormatException:null       java.lang.Integer.parseInt(Integer.java:542)       java.lang.Integer.parseInt(Integer.java:615)       org.apache.jsp.carritobolsos_jsp._jspService(carritobolsos_jsp.java:132)       org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)       javax.servlet.http.HttpServlet.service(HttpServlet.java:729)       org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)       org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)       org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)       javax.servlet.http.HttpServlet.service(HttpServlet.java:729)       org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)       org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

JSP代码:

<%
            String consulta;
            int posicion;
            int numeroregistros=0;

            if(request.getParameter("posicion")!=null){
                posicion=Integer.parseInt(request.getParameter("posicion"));
            }else{
                posicion=1;
            }

    DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
            Connection conn = 
                    DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:XE","system", "javaoracle");

                    Statement stmt=conn.createStatement();
                    ResultSet rset=stmt.executeQuery("select cod_producto, nombre_producto, detalles, precio, imagen from (SELECT ARTICULOS.*, ROWNUM rnum FROM (SELECT cod_producto, nombre_producto, detalles, precio, imagen FROM ARTICULOS ORDER BY COD_PRODUCTO) ARTICULOS WHERE ROWNUM < "+(posicion+6)+") WHERE rnum >= "+posicion);                     
                    Statement sentencia2 = conn.createStatement();
                    ResultSet rset2 = sentencia2.executeQuery("SELECT COUNT(COD_PRODUCTO) AS NUMERO FROM ARTICULOS");
                    rset2.next();   
                    numeroregistros = rset2.getInt("NUMERO");
                    rset2.close();  

                            String producto="";   

            while(rset.next()){       
        producto+="<div class='card h-100'>";
        producto+="<a href='carritobolsos.jsp?cod="+rset.getInt("COD_PRODUCTO")+"'><img class='card-img' src='Articulos/"+rset.getString("imagen")+"'alt=''></a>";
        producto+="<div class='card-body'>";
        producto+="<h3 class='card-title'>";
        producto+="<a href='carritobolsos.jsp?cod="+rset.getInt("COD_PRODUCTO")+"'>"+rset.getString("NOMBRE_PRODUCTO")+"</a>";
        producto+="</h3>";
        producto+="<h4 style='margin: 0px;'>"+rset.getDouble("precio")+"€</h4>";
        producto+="<p class='card-text'>"+rset.getString("detalles")+"</p>";                    
        producto+="</div></div>";
                    }         

                    int next=posicion+6;
                    int prev=posicion-6;
                    producto+="<div>";
                    producto+="<ul class='pagination' style='padding: 2.5%;'>";
                    if (posicion!=1){                   
                    producto+="<li class='page-item'><a class='page-link' href='web_NAK_articulos.jsp?posicion=" + prev + "'>Anterior</a></li>";}
                    else {
                        producto+="<li class='page-item disabled'><a class='page-link' href='web_NAK_articulos.jsp?posicion=" + prev + "'>Anterior</a></li>";
                    }
                   if (numeroregistros>= next){
                    producto+="<li class='page-item'><a class='page-link' href='web_NAK_articulos.jsp?posicion=" + next + "'>Siguiente</a></li>";}
                   else {
                        producto+="<li class='page-item disabled'><a class='page-link' href='web_NAK_articulos.jsp?posicion=" + next + "'>Siguiente</a></li>";
                    }
                   producto+="</ul>";
                   producto+="</div>";
                    %>                               

    <%=producto%>



<%
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:XE","system", "javaoracle");       
        int codigo=Integer.parseInt(request.getParameter("cod"));

                Statement pstm=conn.createStatement();

            String consulta="select cod_producto, nombre_producto, precio from articulos where cod_producto="+codigo+"";

                ResultSet rs=pstm.executeQuery(consulta);
                while(rs.next()){

String[] datositem = request.getParameterValues("chkarticulo");
ArrayList<String> articulos;
ArrayList<String> paginacion = new ArrayList<String>();

if (session.getAttribute("compra")==null)
{
            articulos=new ArrayList<String>();
            }else
        {

            articulos = (ArrayList<String>)session.getAttribute("compra");

            if (request.getParameter("valorfalso")!=null)
            {
                for (int i=0;i<paginacion.size();i++)
                {
                    if (articulos.indexOf(paginacion.get(i))!=-1)
                    {
                        articulos.remove(paginacion.get(i));

                    }
                }
            }
        }
        if (datositem!=null)
        {
            for (int i=0;i<datositem.length;i++)
            {
                if (articulos.indexOf(datositem[i])==-1)
                {
                    articulos.add(datositem[i]);
                }
            }
            session.setAttribute("compra", articulos);
        }
        %>
        <form name="form1" method="get" action="carritobolsos.jsp">
        <table border="1">
        <tr><th colspan="2">Titulo</th><th>Precio</th></tr>
            <tr>
            <td>
                <%if (articulos.indexOf(rs.getInt(1))==-1)
                {%>
                <input type="checkbox" name="chkarticulo" value="<%=rs.getInt(1)%>">
                <%}else{%>
                <intup type="checkbox" name="chkarticulo" CHECKED value="<%=rs.getInt(1)%>">
                <%}%>
            </td>
            <td><%=rs.getString(2)%></td>
            <td><%=rs.getString(3)%>€</td>
            </tr>
        <tr>
            <%}%>
        <td colspan="3" align="right" style="background-color:white">
        </td>
        </tr>
        <tr><td colspan="3" align="right" style="background-color:white">
            <input type="submit" name="btncomprar" value="Comprar">
            <a href="vercarrito.jsp">Ver Carrito compra</a>
        </td></tr>
        </table>
        </form>

1 个答案:

答案 0 :(得分:0)

问题在于,您尝试java.lang.NumberFormatException来自parseInt的{​​{1}}值时,您有null

这是错误行:

request.getParameter("cod")

您必须做的是在将请求解析为 int codigo=Integer.parseInt(request.getParameter("cod")); 之前处理来自请求的null值,您可以这样做:

int

如果您不想使用 int codigo=Integer.parseInt(stringtoInt(request.getParameter("cod"), 0)); 之类的外部库,则stringToInt是将String转换为int的函数。

guava的实现可能是这样的:

stringToInt