PDA

View Full Version : Problema Servlet


boysna
22-02-2006, 16:10
Allora ragazzi ecco il mio problema:

Ho un html dove c'è un form. Alla pressione del tasto di submit dovrebbe essere lanciata una servlet ma mi appare sempre la scritta "Impossibile visualizzare la pagina".

Questo è il codice del file html:

<html><head><title>Index</title></head>

<body>
<center>
<form action="E:\Programmi\Apache Software Foundation\Tomcat 5.5\webapps\esercizio\a" METHOD=GET>
intero<input type= "text" name = "intero" size = "20"><br>
scegli l'operazione: incremento<input type = "radio" name = "operazione" value="incremento">
decremento<input type = "radio" name ="operazione" value ="decremento"> <br>
<button type="submit">sottometti</button>
</body></html>


E questa la servlet:

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

public class a extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}


Ho creato una cartella "esercizio" sotto webapps e poi ho inserito all'interno il file html e il file a.java. Ho compilato con javac e ho avuto il file a.class nella stessa cartella.

pinok
22-02-2006, 17:11
Presumo ci siano svariati errori.
Il più evidente è sicuramente questo:

"E:\Programmi\Apache Software Foundation\Tomcat 5.5\webapps\esercizio\a"

Cosa ti serve tomcat se accedi tramite filesystem ??

1) Devi metterci qualcosa del tipo

"\servlets\a"

2) a devi metterlo dentro a esercizio\WEB-INF\classes
3) in web.xml devi abilitare, se non l'hai già fatto, gli invoker per le servlets
4) in server.xml devi crearti il context esercizio

boysna
22-02-2006, 22:21
il punto primo l'ho provato e non andava. Ho messo "servlet/a" e nn mi dava niente.

Comunque che ci devo scrivere nei due file xml? e in che cartella vanno?
Ma si deve fare tutto sto casino per una servlet?

Per web.xml va bene il file che sta in "webapps/servlet-examples"?

pinok
22-02-2006, 22:47
Dimenticavo: i due files li trovi già pronti in /tomcat5.5/conf devi solo modificarli (per web.xml devi decommentare solo alcune righe, per server.xml devi aggiungere un context come negli esempi).
Prova a dare un'occhiata ai doc di tomcat ;)

boysna
23-02-2006, 10:37
Al posto del path messo inizialmente ho messo "\servlet\a".
Ho fatto una ricerca per disabilitare gli invoker e ho tolto il commento prima delle righe:<servlet-mapping>
<servlet-name>invoker </servlet-name>
<url-pattern>/servlet/* </url-pattern>
<servlet-mapping>

Hpo modificato il file web.xml nella cartella conf ma niente, così l'ho copiato sotto WEB-INF ma niente ancora.

Per quanto riguarda servlet.xml ho guardatonegli esempi ma sono solo commenti?

pinok
23-02-2006, 12:03
Scusa, avevo sbagliato i versi delle slash, prova con "/servlet/a"

PS: hai provato a scaricarti prima le applicazioni di esempio di Tomcat e a far funzionare quelle? Se parti da lì, poi è più semplice guardare il resto ;)

boysna
23-02-2006, 14:27
Non va proprio... ho messo un link nell'index.html degli esempi preimpostati di tomcat alla servlet "a" che ho messo in WEB-INF/classes di servlet-examples.

Niente da fare, comunque non capisco cosa modificare in web.xml eservlet.xml, bah..

pinok
23-02-2006, 18:15
ma tomcat ti funziona ?
Ti direi di disinstallarlo e poi ripartire da zero in modo che poi tu possa dire:
1) Si tomcat funziona sicuramente
2) La mia servlet non funziona

Altrimenti ci sono 20.000 motivi per cui non funzioni e da qua non posso sapere cosa c'è sul tuo computer ;)

boysna
24-02-2006, 00:18
Si tomcat funziona. la mia servlet no.
Ho problemi con servlet.xml e web.xml che non ho capito come modificare...

Hop rovato a mettere un link nella pagina index sotto servlet-examples alla servlet "a" che ho messo in "WEB-INF/classes" sempre sotto servlet-examples ma mi da sempre "http status 404 error" o una cosa del genere.

boysna
24-02-2006, 00:21
Ho fatto quel procedimento di cui sopra perchè ho visto che sotto "servlet-examples" ci sono molti file che, secondo me, avrebbero potuto risolvere il problema.

pinok
24-02-2006, 04:08
Copiaci il file, non usare il link. Non sono molto graditi a tomcat ;)
Cerca tra gli esempi una servlet che funzioni (mi pare ci sia SnoopServlet).
Quando l'hai trovata e hai visto che funziona, copiaci nella stessa directory la tua a.class e prova chiamarla come quella dell'esempio che ti funzionava.

Per l'invoker e il resto, prova a guardare qua: http://www.coreservlets.com/Apache-Tomcat-Tutorial/#Enable-Invoker

Ricordati che, il più delle volte, se modifichi una servlet è meglio riavviare tomcat per vedere il cambiamento (a meno che non configuri il reload automatico)