我正在尝试使用JSP制作购物篮。我从第一个JSP获取代码(因为它向我显示了我在语句中获得的信息)但是当我提交创建arraylist时,它没有得到我在第一个语句中使用的相同代码。它显示以下错误:
错误:java.lang.NumberFormatException:null 输入InformedeExcepción
JSP中的一个例子是一个很好的例子 /carritobolsos.jspenlínea23descripció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>
答案 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