Newsgroup: it.comp.java
Titolo: JSP - TOMCAT

Ho iniziato a vedere le potenzialità delle JSP su un A.S. Tomcat , ma
ho alcuni problemi di funzionamento. Qualcuno può illuminarmi la via??
Ho installato Tomcat 5.5.17 su un pc con windows xp e jdk 1.6. Ora il
manager del tomcat parte e va tutto ok, ho provato a realizzare una
banale pagina html da dove si richiama un pagina jsp dove viene
mostrata una semplice scritta, ed anche questo funziona; il problema
nasce quando cerco di dialogare con una tabella di un db, nel mio
esempio si tratta di una cartella di access, registrata sulle risorse
ODBC del sistema.
La pagina jsp che richiamo è la seguente:
<%@page language="java"%>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<%@page import="java.io.sql.*"%>
<%@page import="java.io.IOException"%>
<html>
   <head>
     <title>JSP</title>
   </head>
   <body>
<%
 String jspPage="";
 String user,pass;
 user = request.getParameter("username");
 pass = request.getParameter("password");
 try
 {
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	Connection connessione=DriverManager.getConnection("jdbc:odbc:HTML");
	Statement statement=connessione.createStatement();
	String SQL="SELECT COUNT(*) AS num FROM elenco WHERE Username='"+user
+"' AND PASSWORD='"+pass+"'";
	ResultSet risultato=statement.executeQuery(SQL);
	num=risultato.getInt("num");
	connessione.close();
 }
 catch(Exception e)
 {
   jspPage="pages/error.jsp";
 }
%>
	<div align="center">
	  USER: <%=user%><br>
	  PASS: <%=pass%>
  	</div>
  </body>
</html>
e l'errore che mi viene indicato è:
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
Connection cannot be resolved to a type
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
DriverManager cannot be resolved
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
Statement cannot be resolved to a type
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
ResultSet cannot be resolved to a type
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
num cannot be resolved
 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:
510)
 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
Connection cannot be resolved to a type
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
DriverManager cannot be resolved
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
Statement cannot be resolved to a type
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
ResultSet cannot be resolved to a type
An error occurred at line: 14 in the jsp file: /db.jsp
Generated servlet error:
num cannot be resolved
 
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:
84)
 
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:
328)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:
414)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:
563)
 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
303)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Qualcuno mi può dire cosa manca???
Ringrazio anticipatamente,
Fabio

         ResultSet risultato=statement.executeQuery(SQL);
Prova con
           risultato.next();
           num=risultato.getInt(1);

 ha scritto nel messaggio 
news:94a914b9-4b6c-4a03...@b36g2000hsa.googlegroups.com...

Credo che il problema sia l'import...
invece che java.io.sql.* dovresti importare java.sql.* 

 +"' AND PASSWORD='"+pass+"'";
Brrrr !!! Usa i prepared statements ! La prima cosa che prova a fare un 
utente smaliziato e' mettere come username qualcosa del tipo "pippo; 
drop database;".
Prova a indovinare cosa succede nel tuo codice ;) ?
Cerca con google "SQL injection".

<%@page import="java.io.sql.*"%>
cos'è sta roba ?
mi son perso qualcosa ?
questi comunque parlano abbastanza chiaro :


 
Horrore! Orroranza!!!
codice java dentro le JSP...
E' da usare come ultima spiaggia...
Le elaborazioni si fanno su servlet (o action se utilizzi struts) e poi
passi le roba da stampare in pagina su JSP bella e digerita utilizzando
esclusivament JSTL.
Ciao

 E' da usare come ultima spiaggia...
Perché? Potresti documentare questa affermazione?
A me risulta che le JSP siano nate con il dichiarato ed esplicito scopo 
di permettere l'uso di Java dentro un template (X)HTML.
Che poi nel codice dell'OP non sia applicato nessun pattern 
architetturale (MVC, per dirne uno a caso) è cosa ben diversa (ben più 
orrenda ;).
Ciao,
Paolo