monkeys86
04-01-2008, 12:03
ciao a tutti e buon anno
sto utilizzando eclipse e tomcat per sviluppare delle servlet. Ho però dei problemi quando vado a visitare un albero dom.
Praticamente nella servlet java eclipse non trova errori, mentre quando faccio partire la servlet su tomcat mi da errore appena comincio a usare le nodelist....qualcuno ha qualche idea del perchè? grazie mille cmq posto qua sotto i codici della servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Esercizio3 extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse res) {
PrintWriter out = null;
try {
out = res.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
res.setContentType("text/html");
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Esercizio 3</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
String autoreRichiesto = req.getParameter("autore");
StringBuffer listaTitoli = new StringBuffer();
int contatore = 0;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true);
DocumentBuilder db = null;
try{
db = dbf.newDocumentBuilder();
}catch(ParserConfigurationException pce){
System.err.println(pce);
}
Document doc = null;
try{
doc = db.parse(getServletContext().getRealPath("/biblioteca.xml"));
}catch(SAXException s){
System.err.println(s);
}
catch(IOException io){
System.err.println(io);
}
NodeList listaLibri = doc.getElementsByTagName("LIBRO");
if(listaLibri == null || listaLibri.getLength()<=0){
out.println("Nessun libro trovato. Errore nel Catalogo!");
}
for(int i = 0; i < listaLibri.getLength(); i++){
NodeList autori = null;
autori = ((Element)listaLibri.item(i)).getElementsByTagName("AUTORE");
if(autori == null || autori.getLength()<=0){
out.println("Nessun autore trovato. Errore nel Catalogo!");
}
for(int j=0; j<autori.getLength();j++){
if(autori.item(j).getFirstChild().getNodeValue().equals(autoreRichiesto)){
NodeList titolo = null;
titolo = ((Element)listaLibri.item(i)).getElementsByTagName("TITOLO");
listaTitoli.append(titolo.item(0).getFirstChild().getNodeValue());
listaTitoli.append(", ");
contatore++;
}
}
}
if(contatore == 0){
out.println("<P>Autore '"+autoreRichiesto+ "' non presente nella biblioteca</P>");
}
else{
if(contatore > 1){
out.print("<P>Autore '"+autoreRichiesto+ "' (+) : " +listaTitoli+"</P>");
}
if(contatore==1){
out.print("<P>Autore '"+autoreRichiesto+ "' : " +listaTitoli+"</P>");
}
}
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}
sto utilizzando eclipse e tomcat per sviluppare delle servlet. Ho però dei problemi quando vado a visitare un albero dom.
Praticamente nella servlet java eclipse non trova errori, mentre quando faccio partire la servlet su tomcat mi da errore appena comincio a usare le nodelist....qualcuno ha qualche idea del perchè? grazie mille cmq posto qua sotto i codici della servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Esercizio3 extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse res) {
PrintWriter out = null;
try {
out = res.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
res.setContentType("text/html");
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Esercizio 3</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
String autoreRichiesto = req.getParameter("autore");
StringBuffer listaTitoli = new StringBuffer();
int contatore = 0;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true);
DocumentBuilder db = null;
try{
db = dbf.newDocumentBuilder();
}catch(ParserConfigurationException pce){
System.err.println(pce);
}
Document doc = null;
try{
doc = db.parse(getServletContext().getRealPath("/biblioteca.xml"));
}catch(SAXException s){
System.err.println(s);
}
catch(IOException io){
System.err.println(io);
}
NodeList listaLibri = doc.getElementsByTagName("LIBRO");
if(listaLibri == null || listaLibri.getLength()<=0){
out.println("Nessun libro trovato. Errore nel Catalogo!");
}
for(int i = 0; i < listaLibri.getLength(); i++){
NodeList autori = null;
autori = ((Element)listaLibri.item(i)).getElementsByTagName("AUTORE");
if(autori == null || autori.getLength()<=0){
out.println("Nessun autore trovato. Errore nel Catalogo!");
}
for(int j=0; j<autori.getLength();j++){
if(autori.item(j).getFirstChild().getNodeValue().equals(autoreRichiesto)){
NodeList titolo = null;
titolo = ((Element)listaLibri.item(i)).getElementsByTagName("TITOLO");
listaTitoli.append(titolo.item(0).getFirstChild().getNodeValue());
listaTitoli.append(", ");
contatore++;
}
}
}
if(contatore == 0){
out.println("<P>Autore '"+autoreRichiesto+ "' non presente nella biblioteca</P>");
}
else{
if(contatore > 1){
out.print("<P>Autore '"+autoreRichiesto+ "' (+) : " +listaTitoli+"</P>");
}
if(contatore==1){
out.print("<P>Autore '"+autoreRichiesto+ "' : " +listaTitoli+"</P>");
}
}
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}