PDA

View Full Version : URGENTE !!! Aiuto per programma JSP


Web Wolf
29-06-2003, 18:59
Ciao ragazzi, sto scrivendo questa pagina JSP che inserisce e legge in un database SQL i dati che riceve. In pratica, la funzione di inserisci funziona perfettamente, mentre la funzione di ricerca funziona, ma se c'é più di un elemento come risultato, ne visualizza solo uno (prima li visualizzava tutti e ora no ... mah misteri del java :mad: ), comunque la cosa forte é che se inserisco la funzione elimina (che per prova é la copia spiccicata della funzione ricerca) quando la seleziono il server dà un errore, mentre non lo dà se seleziono la funzione di ricerca (che sottolineo essere la sua copia perfetta, tranne che nell'istruzione if).

Quello che mi fa imbestialire del java é che se capita un errore una volta su 1000 si capisce dove é, mentre di solito tocca ad affidarsi a qualche essere superiore per capire dove c#####o é l'errore.
Voi per caso riuscieta a capirlo ?

Grazie :cry:

------------------------------------------------------------------------------













<html>

<head>
<title>Risultato dell'operazione</title>
</head>

<body background="C://Programmi//jakarta-tomcat-3.3.1a//webapps//root//immagini//sfondo5.jpg" text="white">

<%@ page import="java.io.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>


<%

Class.forName("com.mysql.jdbc.Driver").newInstance();

java.sql.Connection con;

con = DriverManager.getConnection("jdbc:mysql://localhost/tesina?user=Lonely Wolf&password=sagitta");

Statement stmt=con.createStatement();

String sql;
String[] pagine=request.getParameterValues("tipopagina");
String pagina=pagine[0];
String valoridisco[] = new String [8];

if (pagina.equals("inserisci")) {

Enumeration eNames=request.getParameterNames();
stmt.executeUpdate("use tesina");
stmt.executeUpdate("create table if not exists dischi (datacom char(30), titolo char(30), code char(30), genere char(30), datapro char(30), autore char(30), casa char(30))");

while (eNames.hasMoreElements()) {
String name=(String) eNames.nextElement();
String[] values=request.getParameterValues(name);

if (name.equals("datacom")) { valoridisco[0]=values[0]; }
if (name.equals("titolo")) { valoridisco[1]=values[0]; }
if (name.equals("code")) { valoridisco[2]=values[0]; }
if (name.equals("genere")) { valoridisco[3]=values[0]; }
if (name.equals("datapro")) { valoridisco[4]=values[0]; }
if (name.equals("autore")) { valoridisco[5]=values[0]; }
if (name.equals("casa")) { valoridisco[6]=values[0]; }
}


if(valoridisco[1].equals("") || valoridisco[5].equals("") || valoridisco[2].equals("")) {
stmt.close();stmt=null;con.close();
%> <jsp:forward page="errorins.jsp"/> <% }

sql="insert into dischi (datacom, titolo, code, genere, datapro, autore, casa)"+
" values ('"+valoridisco[0]+"','"+valoridisco[1]+"','"+valoridisco[2]+"','"+valoridisco[3]+"','"+valoridisco[4]+"','"+
valoridisco[5]+"','"+valoridisco[6]+"')";

stmt.executeUpdate(sql); %>

<fieldset>
<legend><h2><font color="white">Riepilogo dati inseriti</font></h2></legend><br>
<p>Titolo:&nbsp&nbsp&nbsp<%= valoridisco[1] %></p>
<p>Autore:&nbsp&nbsp&nbsp<%= valoridisco[5] %></p>
<p>Genere:&nbsp&nbsp&nbsp<%= valoridisco[3] %></p>
<p>Codice:&nbsp&nbsp&nbsp<%= valoridisco[2] %></p>
<p>Casa:&nbsp&nbsp&nbsp<%= valoridisco[6] %></p>
<p>Data di produzione:&nbsp&nbsp&nbsp<%= valoridisco[4] %></p>
<p>Data di commercializzazione:&nbsp&nbsp&nbsp<%= valoridisco[0] %></p>
</fieldset><br>
<p align="center">Databse aggiornato</p>
<br><br>


<% }

if (pagina.equals("ricerca")) {

Enumeration eNames=request.getParameterNames();
stmt.executeUpdate("use tesina");

while (eNames.hasMoreElements()) {
String name=(String) eNames.nextElement();
String[] values=request.getParameterValues(name);

if (name.equals("tiposelezione")) { valoridisco[0]=values[0]; }
if (name.equals("campotesto")) { valoridisco[1]=values[0]; }
}
if (valoridisco[1].equals("")) { stmt.close();stmt=null;con.close(); %> <jsp:forward page="errorins.jsp"/> <% }
sql="select * from dischi where "+valoridisco[0]+" = '"+valoridisco[1]+"'";

ResultSet rs=stmt.executeQuery(sql);
int ris=0;

if (rs.next()) { while (rs.next()) {
ris++;
String datacom=rs.getString(1);
String titolo=rs.getString(2);
String code=rs.getString(3);
String genere=rs.getString(4);
String datapro=rs.getString(5);
String autore=rs.getString(6);
String casa=rs.getString(7);


%>

<fieldset>
<legend><h2><font color="yellow">Risultato n:<%= ris %></font></h2></legend>
<font color="white">
<p>Titolo:&nbsp&nbsp&nbsp<%= titolo %></p>
<p>Autore:&nbsp&nbsp&nbsp<%= autore %></p>
<p>Genere:&nbsp&nbsp&nbsp<%= genere %></p>
<p>Codice:&nbsp&nbsp&nbsp<%= code %></p>
<p>Casa discografica:&nbsp&nbsp&nbsp<%= casa %></p>
<p>Data di produzione:&nbsp&nbsp&nbsp<%= datapro %></p>
<p>Data di commercializzazione:&nbsp&nbsp&nbsp<%= datacom %></p>
</font>
</fieldset><br>


<%

} }

else { stmt.close();stmt=null;con.close(); %> <jsp:forward page="errorins.jsp"/> <% }

rs.close();
rs=null;
}


if (pagina.equals("elimina")) {

Enumeration eNames=request.getParameterNames();
stmt.executeUpdate("use tesina");

while (eNames.hasMoreElements()) {
String name=(String) eNames.nextElement();
String[] values=request.getParameterValues(name);

if (name.equals("tiposelezione")) { valoridisco[0]=values[0]; }
if (name.equals("campotesto")) { valoridisco[1]=values[0]; }
}
if (valoridisco[1].equals("")) { stmt.close();stmt=null;con.close(); %> <jsp:forward page="errorins.jsp"/> <% }
sql="select * from dischi where "+valoridisco[0]+" = '"+valoridisco[1]+"'";

ResultSet rs=stmt.executeQuery(sql);
int ris=0;

if (rs.next()) { while (rs.next()) {
ris++;
String datacom=rs.getString(1);
String titolo=rs.getString(2);
String code=rs.getString(3);
String genere=rs.getString(4);
String datapro=rs.getString(5);
String autore=rs.getString(6);
String casa=rs.getString(7);


%>

<fieldset>
<legend><h2><font color="yellow">Risultato n:<%= ris %></font></h2></legend>
<font color="white">
<p>Titolo:&nbsp&nbsp&nbsp<%= titolo %></p>
<p>Autore:&nbsp&nbsp&nbsp<%= autore %></p>
<p>Genere:&nbsp&nbsp&nbsp<%= genere %></p>
<p>Codice:&nbsp&nbsp&nbsp<%= code %></p>
<p>Casa discografica:&nbsp&nbsp&nbsp<%= casa %></p>
<p>Data di produzione:&nbsp&nbsp&nbsp<%= datapro %></p>
<p>Data di commercializzazione:&nbsp&nbsp&nbsp<%= datacom %></p>
</font>
</fieldset><br>


<%

} }

else { stmt.close();stmt=null;con.close(); %> <jsp:forward page="errorins.jsp"/> <% }

rs.close();
rs=null;
}






stmt.close();
stmt=null;

con.close();


%>


</body>

</html>

[/code]

Web Wolf
29-06-2003, 19:01
forse il problema é in qualche parentesi o ; che non ho chiuso, ma io non sono riuscito a trovarli.

Questo é quello che dice il server:

----------------------------------------------------------------------------------


Error: 500
Location: /elabora.jsp
Internal Servlet Error:

javax.servlet.ServletException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:460)
at elabora_29._jspService(elabora_29.java:488)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
at org.apache.tomcat.core.Handler.service(Handler.java:235)
at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:917)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
at org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10Interceptor.java:176)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:516)
at java.lang.Thread.run(Thread.java:536)
Root cause:
java.lang.NullPointerException
at elabora_29._jspService(elabora_29.java:340)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
at org.apache.tomcat.core.Handler.service(Handler.java:235)
at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:917)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
at org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10Interceptor.java:176)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:516)
at java.lang.Thread.run(Thread.java:536)

kingv
30-06-2003, 11:37
vai alla riga 340 di elabora_29.java per capire la causa della NullPointerException.

Se vuoi un consiglio non mettere tutto quel codice dentro una jsp, creati un package di classi di utilità.
In particolare così apri una connection a db ogni volta che viene eseguita la jsp ed e' lentissimo :o