Newsgroup: it.comp.java
Titolo: Semplice pagina JSP connessa ad un database II

Ho provato a correggere il codice della pagina JSP come mi avevate
suggerito, ma non č servito a nulla sempre errori mi vengono dati, qualcuno
puň provare a vedere se la pagina funziona cosě almeno posso capire se ho
settato male qualcosa nel server tomcat incluso con il Java(TM) Web Services
Developer Pack 1.3.
Qui vi allego la pagina html e il file jsp nelle sue due versioni, la
seconda versione č qualla suggetitami in questo newsgroup.
file html
<html><head>
 <title>Sondaggio</title>
</head>
<body>
<b><big>Domanda:</big></b>
<form action="first.jsp">
<input name="risposta" type="radio" value="0">prova<br>
<input name="risposta" type="radio" value="1">prova<br>
<input name="risposta" type="radio" value="2">prova<br>
<input name="risposta" type="radio" value="3">prova<br>
<input type="submit" value="vota">
</form>
</font>
</body>
</html>
file jsp versione 2
<%@ page contentType="text/html; charset=" language="java"
import="java.sql.*" errorPage="" %>
<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">
<%
    Connection conn = null;
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn = DriverManager.getConnection("jdbc:odbc:file","","");
 String cromo;
    String preferenza = (request.getParameter("risposta") != null) ?
(String)request.getParameter("risposta") : "";
    Statement st = conn.createStatement();
     PreparedStatement st = conn.prepareStatement("SELECT Path FROM
Disponibili WHERE NomeFile = ?");
     st.setString(1,preferenza);
     ResultSet rs = st.executeQuery();
if (rs.next()) out.print(rs.getString("Path"));
else out.print("nessun record trovato");
    st.close();
    conn.close();
 %>
<br><br>
<a href="risultati.jsp">Visualizza i risultati parziali</a>
</font>
</body>
</html>
errore dato con il file jsp versione 2
type Exception report
message
description The server encountered an internal error () that prevented it
from fulfilling this request.
exception
org.apache.jasper.JasperException: Unsupported encoding:
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.
java:94)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:406
)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:151
)
	org.apache.jasper.compiler.JspUtil.getReader(JspUtil.java:1062)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:241)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:146)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:132)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:245)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5
55)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3
00)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:293)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
file jsp versione 1
<%@ page contentType="text/html; charset=" language="java"
import="java.sql.*" errorPage="" %>
<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">
<%
    Connection conn = null;
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn = DriverManager.getConnection("jdbc:odbc:file","","");
 String cromo;
 String preferenza = new String (request.getParameter("risposta"));
    Statement st = conn.createStatement();
 ResultSet rs = st.executeQuery("SELECT Path FROM Disponibili WHERE
NomeFile=" + preferenza);
 rs.next();
 cromo=rs.getString("Path");
 out.print(cromo);
    st.close();
    conn.close();
 %>
<br><br>
<a href="risultati.jsp">Visualizza i risultati parziali</a>
</font>
</body>
</html>
errore con pagina jsp versione 1:
HTTP Status 500 -
----------------------------------------------------------------------------
----
type Exception report
message
description The server encountered an internal error () that prevented it
from fulfilling this request.
exception
org.apache.jasper.JasperException: Unsupported encoding:
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.
java:94)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:406
)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:151
)
	org.apache.jasper.compiler.JspUtil.getReader(JspUtil.java:1062)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:241)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:146)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:132)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:245)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:5
55)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:3
00)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:293)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
Come posso risolvere???
Grazie

 suggerito, ma non è servito a nulla sempre errori mi vengono dati, ...
nella direttiva page metti solo ciò che è indispensabile:
<%@ page import="java.sql.*" %>
st è definito due volte, prima con
Statement st = conn.createStatement();
e poi con
PreparedStatement st = conn.prepareStatement("SELECT Path FROM Disponibili
WHERE NomeFile = ?");
elimina la prima
questa funziona:
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">
<%
Connection conn = null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:file", "", "");
String cromo;
String preferenza = (request.getParameter("risposta") != null) ?
(String)request.getParameter("risposta") : "";
file://Statement st = conn.createStatement();


Sorry, questa funziona:
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">
<%
Connection conn = null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:file","","");
String cromo;
String preferenza = (request.getParameter("risposta") != null) ?
(String)request.getParameter("risposta") : "";
PreparedStatement st = conn.prepareStatement("SELECT Path FROM Disponibili
WHERE NomeFile = ?");
st.setString(1,preferenza);


Grazie mille. Ho provato a smanettare un pò con la pagina che hai postato e
l'ho modificata nel modo che sotto vedrai. In pratica ho cercato di inserire
nella tabella invio una stringa prelevata dalla tabella Disponibili. Quando
eseguo la pagina mi viene dato errore però se vado ad aprire la tabella
invio trovo inserita la stringa prelevata dalla tabella diponibili. In
definitiva la pagina JSP fa quello che deve fare nonostante dia una pagina
d'errore come posso risolvere?
Grazie.
Pagina JSP:
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">
<%
Connection conn = null;
Connection conn2=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:file","","");
conn2 =DriverManager.getConnection("jdbc:odbc:file","","");
String preferenza = new String(request.getParameter("risposta"));
PreparedStatement st = conn.prepareStatement("SELECT ID, Path FROM
Disponibili WHERE ID = ?");
PreparedStatement st2 = conn2.prepareStatement("INSERT INTO invio (percorso)
VALUES (?)");
st.setString(1, preferenza);
ResultSet rs = st.executeQuery();
if (rs.next()){
String provamus= new String(rs.getString("Path"));
st2.setString(1, provamus);
ResultSet pkk = st2.executeQuery();
st2.close();
conn2.close();
String ciao= new String (rs.getString("ID")+" "+provamus);
out.print(ciao);
}
else out.print("nessun record trovato " + preferenza);


 ResultSet pkk = st2.executeQuery();
...
Gli statement di scrittura su db (cioč dove ci sono le istruzioni 
'INSERT' o 'UPDATE') vanno eseguito in questo modo:
st2.executeUpdate();
e non restituiscono resultsets, quindi puoi fare a meno di pkk.
Popix.