Entra

View Full Version : [JSP] Errore su Tomcat 5.5.9 non "riscontrato" nè dalla 5.5,6.0 nè da Eclipse


SodoMyzer
22-12-2009, 14:15
Aiuto!
Devo lavorare su un Tomcat 5.5.9.
Scritta la mia applicazione, usando Eclipse JEE 3.3.2 , le ultime JRE e JDK,
testata su Tomcat 6 funge una bellezza!
Nel momento in cui la porto sul Tomcat 5.5.9 mi dà un errore assurdo sull'apertura dei tag <% %>.
Ho riscritto in modo ridotto una parte del codice che mi da errore per sottoporla a voi!

La prima servlet deve chiamare una jsp passandogli un Vector.


package pack;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class visualizza extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;


public visualizza() {
super();
}


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Vector<myBean> vettore =myUtils.tornaVectorDiTax();
request.setAttribute("vettore", vettore);
out.println("<CENTER>VISUALIZZA.CLASS CHIAMA VISUALIZZA.JSP<CENTER>");
RequestDispatcher dispatcher = request.getRequestDispatcher("./jsp/visualizza.jsp");
dispatcher.include(request, response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}


La jsp visualizza i record nel Vector

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="pack.myBean"%>
<%@page import="java.util.Vector;"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pagina Generata da visualizza.jsp</title>
<% out.println("<CENTER>VISUALIZZA.JSP RISPONDE A VISUALIZZA.CLASS.<CENTER>");
out.println("<CENTER>RICHIEDE ED ELABORA IL VETTORE CON I RECORD!<CENTER>");%>
</head>
<body bgcolor="green">

<TABLE BORDER="1" ALIGN="CENTER">
<tr>
<td><FONT COLOR="RED"><STRONG>SOMMA TASSE</STRONG></FONT></td>
<td><FONT COLOR="RED"><STRONG>PROVINCIA</STRONG></FONT></td>
</tr>

<%
Vector<myBean> vettore=(Vector<myBean>)request.getAttribute("vettore");
String tabella="";
int i=0;
for(;i<vettore.size();i++){
myBean bean=new pack.myBean();
bean=(myBean)(vettore.get(i));
tabella+="<tr><td>"+bean.getSomma()+"</td><td>"+bean.getProvincia()+"</td></tr>";
}
out.println(tabella);
out.close();
%>

</TABLE><br>
<br>
<CENTER>RECORD TROVATI: <%=i+1 %></CENTER>
<CENTER>DIMENSIONE VECTOR: <%=vettore.size() %></CENTER>
</body>
</html>


L'errore che mi viene dato è

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 25 in the jsp file: /jsp/visualizza.jsp
Generated servlet error:
Syntax error on token "<", invalid AssignmentOperator

An error occurred at line: 25 in the jsp file: /jsp/visualizza.jsp
Generated servlet error:
Syntax error on token "=", != expected

An error occurred at line: 25 in the jsp file: /jsp/visualizza.jsp
Generated servlet error:
Syntax error on token ">", Expression expected after this token


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:397)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
pack.visualizza.doGet(visualizza.java:29)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.


Praticamente a riga 25 c'è soltanto <%
Quello prima di
Vector<myBean> vettore=(Vector<myBean>)request.getAttribute("vettore");

Sottolineo che ne Eclipse ne Tomcat 6 mi danno errore.
Per pietà qualcuno mi illumini!

SodoMyzer
11-01-2010, 13:13
Dopo aver provato a cancellare varie righe è uscita una cosa molto strana:
in pratica l'errore era generato dall'istruzione sul vector

Vector<myBean> vettore=(Vector<myBean>)request.getAttribute("vettore");


Sostituendo semplicemente con

Vector vettore=(Vector)request.getAttribute("vettore");

senza "parametrizzare" il contenuto del vector (omettendo <myBean>), sul vecchio tomcat va tutto bene!!!
Ecco perchè trovava l'errore su un "<".
In Eclipse ho inserito <myBean> perchè mi dava un warning sul fatto che il contenuto del vector conveniva specificarlo in quel modo.




Dopo l'aiuto del mio "tutor" si è risaliti ad un altro problema.
Altro non è che un problema legato alla codifica dei caratteri.
In visualizza.jsp (generata automaticamente da Eclipse) vi è la specifica

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

Il problema nasce proprio perchè generando la pagina
(utilizzando un Eclipse,Tomcat,JDK e JRE "nuovi")
il charset e il pageEncoding vengono settati come ISO-8859-1

Per ora ho risolto parte del problema sostituendo con UTF-8 per evitare possibili altri problemi.