(Risolto) Tomcat: dove metto i file?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
MarKco
Prode Principiante
Messaggi: 232
Iscrizione: venerdì 19 gennaio 2007, 8:10
Località: Legnago - Verona
Contatti:

(Risolto) Tomcat: dove metto i file?

Messaggio da MarKco »

Ciao a tutti,
ho installato Tomcat e sto provando a fare la mia prima "hello world" o poco più  (good)
Ho creato una pagina in webapps/prova e l'ho chiamata pagina.html
Questo è il contenuto




Prova




Nome:






Poi, in webapps/prova/WEB-INF/classes ho messo prova.class, già compilata

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class prova extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
String parNome=request.getParameter("nome");
response.setContentType("text/html; charset)ISO08859-1");
PrintWriter out = response.getWriter();
String docType = "\n";
out.println(docType + "\n" + "\n"+
"\n"+"Hello world\n" + "Hello "+parNome+"");
}
}

Il punto è che non so come indirizzare la pagina HTML in modo che reperisca nella giusta maniera la classe (in pratica non so cosa mettere esattamente al posto delle parole che ho messo in grassetto).

Qualcuno mi sa aiutare? Se vado su http://localhost:8080/prova/pagina.html la pagina viene visualizzata, ma se clicco sul pulsante mi dice

HTTP Status 404 - /servlet/prova

type Status report

message /servlet/prova

description The requested resource (/servlet/prova) is not available.
Apache Tomcat/6.0.13

HELP ME!  :'(
Ultima modifica di MarKco il venerdì 1 giugno 2007, 18:36, modificato 1 volta in totale.
MarKco
Triste e' l'uomo che ama le cose solo quando si allontanano.
(Baolian, libro dei pensieri Baol, I, vv. 1240-1242)
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: Tomcat: dove metto i file?

Messaggio da prampa »

guarda se puo' esserti di aiuto
h**p://www.javastaff.com/article.php?story=20051019185736262

ciao
Avatar utente
Massimo S.
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1931
Iscrizione: giovedì 28 settembre 2006, 14:34

Re: Tomcat: dove metto i file?

Messaggio da Massimo S. »

Secondo me devi creare un file webapps/prova/WEB-INF/web.xml dentro al quale devi dichiarare la servlet, ovvero quale la classe e il nome della servlet.
Poi deve dichiarare anche il servlet mapping, ovvero associare il nome della servlet con l'indirizzo http su cui deve rispondere

Edit: inoltre quel

Codice: Seleziona tutto

action="/servlet/prova"
non mi piace.

Per me, o metti il percorso completo

Codice: Seleziona tutto

action="/prova/servlet/prova"
o lo metti relativo, senza che inizia con /

Codice: Seleziona tutto

action="servlet/prova"
Ultima modifica di Massimo S. il venerdì 1 giugno 2007, 10:52, modificato 1 volta in totale.
Avatar utente
MarKco
Prode Principiante
Messaggi: 232
Iscrizione: venerdì 19 gennaio 2007, 8:10
Località: Legnago - Verona
Contatti:

Re: Tomcat: dove metto i file?

Messaggio da MarKco »

Grazie mille delle indicazioni!

Ho provato a seguire i vostri consigli:

nella cartella ROOT ho messo la pagina "pagina.html"

Codice: Seleziona tutto

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01"+"Transitional//EN">
<HTML>
<HEAD>
<TITLE>Prova
</TITLE>
</HEAD>
<BODY>
<form
	method="get"
	action="Prova">
<h2>Nome:</h2>
<input name="nome" type="text" maxlength="40">
<input type="submit">
</form>
</BODY>
</HTML>
Nella cartella ROOT/WEB-INF/classes/org/miapp ho messo la classe compilata Prova.class, il cui codice è

Codice: Seleziona tutto

package org.miapp;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Prova extends HttpServlet
{
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
	{
		String parNome=request.getParameter("nome");
		response.setContentType("text/html; charser=ISO-8859-1");
		PrintWriter out = response.getWriter();
		String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " + "Transitional//EN\">\n";
		out.println(docType + "<HTML>\n" + "<HEAD><TITLE>Hello World</TITLE></HEAD>\n Hello "+parNome+"</BODY></HTML>");
	}
}
Infine nel file ROOT/WEB-INF.xml, all'interno dei tag ho inserito

Codice: Seleziona tutto

<servlet>
<servlet-name>org.miapp.Prova</servlet-name>
<servlet-class>org.miapp.Prova</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>org.miapp.Prova</servlet-name>
<url-pattern>/Prova</url-pattern>
</servlet-mapping>
Tutto ciò ispirandomi smaccatamente alla pagina http://www.javastaff.com/article.php?st ... 9185736262 che mi avete segnalato. Per inciso, mettendo tutto come nell'esempio di suddetta pagina funziona, e andando all'indirizzo http://localhost:8080/saluto tutto quadra. Io però volevo che fosse una pagina HTML a richiamare la servlet, per questo ho inserito in più la pagina pagina.html.

Purtroppo però quando clicco sul pulsante in pagina.html (visualizzata correttamente, all'indirizzo http://localhost:8080/pagina.html) il risultato è questo

Codice: Seleziona tutto

HTTP Status 500 -

type Exception report

message

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

exception

javax.servlet.ServletException: Error allocating a servlet instance
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Thread.java:595)

root cause

java.lang.NoClassDefFoundError: org/miapp/Prova (wrong name: Prova)
	java.lang.ClassLoader.defineClass1(Native Method)
	java.lang.ClassLoader.defineClass(ClassLoader.java:620)
	java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
	org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)
	org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Thread.java:595)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
Vado a vedere il log e non dice di più

Codice: Seleziona tutto

Jun 1, 2007 5:06:07 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet org.miapp.Prova
java.lang.NoClassDefFoundError: org/miapp/Prova (wrong name: Prova)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)
	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1083)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:595)
Insomma, non riesce a trovare la classe! Ma con un codice del tutto simile la classe dell'esempio di JavaStaff riusciva a trovarla!!!
Ma dov'è che sbaglio???
MarKco
Triste e' l'uomo che ama le cose solo quando si allontanano.
(Baolian, libro dei pensieri Baol, I, vv. 1240-1242)
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: Tomcat: dove metto i file?

Messaggio da prampa »

credo che nella pagina html tu debba mettere /Prova anziche Prova.
Ma l'esempio che hai riportato è quello da te modificato, vero? perche' tra le mappature della servlet nel web.xml non trovo nessun riferimento al path /saluto.
ciao
Avatar utente
MarKco
Prode Principiante
Messaggi: 232
Iscrizione: venerdì 19 gennaio 2007, 8:10
Località: Legnago - Verona
Contatti:

Re: Tomcat: dove metto i file?

Messaggio da MarKco »

prampa ha scritto: credo che nella pagina html tu debba mettere /Prova anziche Prova.
Non cambia nulla, purtroppo  :'(
Ma l'esempio che hai riportato è quello da te modificato, vero? perche' tra le mappature della servlet nel web.xml non trovo nessun riferimento al path /saluto.
ciao
Sì, intendevo dire che nell'esempio di base, quello con la classe che poi viene mappata in /saluto, tutto funziona. Nella mia, mappata in /Prova, niente da fare... nemmeno se invoco la classe direttamente (simulando il passaggio di parametro col GET)
MarKco
Triste e' l'uomo che ama le cose solo quando si allontanano.
(Baolian, libro dei pensieri Baol, I, vv. 1240-1242)
Avatar utente
MarKco
Prode Principiante
Messaggi: 232
Iscrizione: venerdì 19 gennaio 2007, 8:10
Località: Legnago - Verona
Contatti:

Re: Tomcat: dove metto i file?

Messaggio da MarKco »

Passo avanti!!!!!!  ;D

Ho tolto il passaggio del parametro e, chiamando la classe da http://localhost:8080/Prova, funziona tutto! Ora devo solo capire cosa non funziona nel passaggio dalla pagina alla servlet.

...ma la pagina HTML è normale che sia in ROOT/? Non è che magari va anche lei in qualche sottocartella?  ::)

(posso dire che questa struttura a sottocartelle è penosa?  (bad))
MarKco
Triste e' l'uomo che ama le cose solo quando si allontanano.
(Baolian, libro dei pensieri Baol, I, vv. 1240-1242)
Avatar utente
MarKco
Prode Principiante
Messaggi: 232
Iscrizione: venerdì 19 gennaio 2007, 8:10
Località: Legnago - Verona
Contatti:

Re: Tomcat: dove metto i file?

Messaggio da MarKco »

FUNZIONA!!!!

e non ho cambiato assolutamente NIENTE!

Probabilmente il server ha i suoi tempi tecnici in cui ricarica le pagine modificate, e non vedevo istantaneamente gli effetti di ogni modifica che effettuavo. Questo ovviamente non ha facilitato la risoluzione del problema. Ad ogni modo tutto funziona con la modifica che mi hai suggerito, cioè /Prova al posto di Prova.

Grazie mille!  :D
MarKco
Triste e' l'uomo che ama le cose solo quando si allontanano.
(Baolian, libro dei pensieri Baol, I, vv. 1240-1242)
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: Tomcat: dove metto i file?

Messaggio da prampa »

MarKco ha scritto: FUNZIONA!!!!

e non ho cambiato assolutamente NIENTE!

Probabilmente il server ha i suoi tempi tecnici in cui ricarica le pagine modificate, e non vedevo istantaneamente gli effetti di ogni modifica che effettuavo. Questo ovviamente non ha facilitato la risoluzione del problema. Ad ogni modo tutto funziona con la modifica che mi hai suggerito, cioè /Prova al posto di Prova.

Grazie mille!  :D
meglio cosi', pero' molto probabilmente nel frattempo forse hai restartato tomcat: e' per questo che funziona, non ci sono tempi tecnici di ricarica. Ora che hai visto che funziona, ti consiglio di cercare con google qualcosa riguardo la creazione di applicazioni web, la loro struttura e le directory di cui sono composte con i vari file di configurazione da impostare, ricerca con google informazioni sul pattern MVC per passare poi all'uso di struts come framework di sviluppo. Un passo dopo l'altro....
ciao
Avatar utente
MarKco
Prode Principiante
Messaggi: 232
Iscrizione: venerdì 19 gennaio 2007, 8:10
Località: Legnago - Verona
Contatti:

Re: Tomcat: dove metto i file?

Messaggio da MarKco »

prampa ha scritto: meglio cosi', pero' molto probabilmente nel frattempo forse hai restartato tomcat: e' per questo che funziona, non ci sono tempi tecnici di ricarica.
Hai ragione, avevo riavviato nel frattempo ;-)
Ora che hai visto che funziona, ti consiglio di cercare con google qualcosa riguardo la creazione di applicazioni web, la loro struttura e le directory di cui sono composte con i vari file di configurazione da impostare, ricerca con google informazioni sul pattern MVC per passare poi all'uso di struts come framework di sviluppo. Un passo dopo l'altro....
ciao
Grazie dei suggetimenti! Al momento sto preparando l'esame di basi di dati, quindi imparerò lo stretto necessario perchè devo concentrarmi anche sugli altri esami che devo dare  ;)
Poi però, dato che l'argomento mi interessa, seguirò i tuoi consigli!

ciao ciao, e grazie ancora!
MarKco
Triste e' l'uomo che ama le cose solo quando si allontanano.
(Baolian, libro dei pensieri Baol, I, vv. 1240-1242)
prampa
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: lunedì 26 febbraio 2007, 14:04

Re: (Risolto) Tomcat: dove metto i file?

Messaggio da prampa »

esame base dati...benissimo...se servono notizie chiedi. In questo forum c'e' molta gente in gamba e con esperienza....
ciao
Avatar utente
MarKco
Prode Principiante
Messaggi: 232
Iscrizione: venerdì 19 gennaio 2007, 8:10
Località: Legnago - Verona
Contatti:

Re: (Risolto) Tomcat: dove metto i file?

Messaggio da MarKco »

prampa ha scritto: esame base dati...benissimo...se servono notizie chiedi. In questo forum c'e' molta gente in gamba e con esperienza....
ciao
Grazie, ne approfitto subito allora! ;-)
MarKco
Triste e' l'uomo che ama le cose solo quando si allontanano.
(Baolian, libro dei pensieri Baol, I, vv. 1240-1242)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti