PDA

View Full Version : [Servlet] File "web.xml": dove ne trovo degli esempi?!


Matrixbob
23-05-2005, 06:39
... sapere come fare il mapping dell'applicazione, come inizializarne dei valori, anzi sapere i TAG che posso specificare li dentro.
Mi pare che se la mia applicazione web è sviluppata su + di 1 Servlet, in questo file devo specificarle tutte.

Riassumento:
che TAG si usano li dentro e quale è un tipico esempio con l'uso di Servlet?!
(so che è il file web.xml è usato in mille cose all'interno del J2EE)

Mi pare d'aver capito:

<web-app>
<servlet-mapping>
<servlet-name> Gabibbo </servlet-name>
????????????????????????????????????????
???????????????????
</servlet-mapping>
</web-app>

Matrixbob
23-05-2005, 07:31
Cavolo ho trovato questa valanga di TAG:
http://e-docs.bea.com/wls/docs61/webapp/web_xml.html
, ma mi serve un esempio che faccia vedere come sia fatto il file "web.xml" per 1 servlet!! :(

A capirlo da li, ammesso che sia possibile, è un lavoraccio. ! :help: !

Matrixbob
23-05-2005, 07:46
Una cosa così può funzionare:

<web-app>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>D:\www\public_html\WEB-INF\classes</url-pattern>
</servlet-mapping>
</web-app>

oppure così:

<web-app>

<servlet>
<servlet-name>GreetingServlet</servlet-name>
<servlet-class>servletx.GreetingServlet.MyClass</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>D:\www\public_html\WEB-INF\classes</url-pattern>
</servlet-mapping>

</web-app>

per mandare in esecuzione la Servlet: GreettingServlet.class ?!

La mia fantasia più di così pare non spingermi .... :( sigh!

Matrixbob
23-05-2005, 08:01
Questo link mi pare + esaustivo:
http://e-docs.bea.com/wls/docs61/webapp/webappdeployment.html

Sono sulla buona strada?!
Nessuno mi aiuta?!

Matrixbob
23-05-2005, 08:46
:muro:
Cavolo mettendo il file web.xml si pianta tutto.

Se digito http://localhost:8080/www non arrivo nemmeno + alla mia cartella public_html. Devo togliere il file web.xml e tutto torna normale.

Sto provando così:

<web-app>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>D:\www\public_html\WEB-INF\classes</url-pattern>
</servlet-mapping>
</web-app>

e così:

<web-app>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>/WEB-INF/classes</url-pattern>
</servlet-mapping>
</web-app>

Questo è l'errore:
http://img280.echo.cx/img280/7754/tomcaterror8tu.gif

kingv
23-05-2005, 09:12
<web-app>
<servlet>
<servlet-name>GreetingServlet</servlet-name>
<servlet-class>servletx.GreetingServlet.MyClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>/GreetingServlet</url-pattern>
</servlet-mapping>
</web-app>



qualcosa del genere dovrebbe andare bene

Matrixbob
23-05-2005, 09:15
Io il file compilato lo ho qui:

D:\www\public_html\WEB-INF\classes

ed il file di contesto è fatto così:

<Context path="www" docBase="D:\www\public_html">
</Context>

Per questo ho settato un web.xml simile:

<web-app>

<servlet>
<servlet-name>GreetingServlet</servlet-name>
<servlet-class>servletx.GreetingServlet.MyClass</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>/WEB-INF/classes</url-pattern>
</servlet-mapping>

</web-app>


Ma questo è puramente di fantasia:
<servlet-class>servletx.GreetingServlet.MyClass</servlet-class>
cosa sarebbe sta roba?!

Matrixbob
23-05-2005, 09:23
Ok, con l'ultimo web.xml postato ci arrivo a qui:
http://localhost:8080/www/

Adesso s'incarta quando gli passo il link get alla mia servlet ...
... hanno 1 curva d'apprendimento esagerata ste Servlet dei miei stivali.

Questo è il link che richiamerebbe (almeno con la mia fantasia) la Servlet:

<p>
Run the servlet Greeting: click
<a href="http://localhost:8080/www/GreetingServlet?name='Roberto'&email='matrixbob@tin.it'">here</a>
</p>

kingv
23-05-2005, 09:36
hai provato il web.xml che ti ho postato?

provalo e accedi con:

http://tuoserver/www/GreetingServlet

kingv
23-05-2005, 09:37
... hanno 1 curva d'apprendimento esagerata ste Servlet dei miei stivali.



si ma anche tu usi tomcat e metti il link della documentazione di WebLogic.. :D

Matrixbob
23-05-2005, 09:39
si ma anche tu usi tomcat e metti il link della documentazione di WebLogic.. :D
... e cosa è?!
Io pensavo che i TAG fossero uguali x tutti!!! :(

Matrixbob
23-05-2005, 09:40
hai provato il web.xml che ti ho postato?

provalo e accedi con:

http://tuoserver/www/GreetingServlet
No, adesso che non vedo via di uscita lo provo. :cool:
Notare 1 piccolezza che è una gran rottura:
Fare stop/star ogni volta del server Tomcat, almeno Apache ha il restart!!!
Due balle stoppare e startare ogni volta a mano. :(

kingv
23-05-2005, 09:42
... e cosa è?!
Io pensavo che i TAG fossero uguali x tutti!!! :(


il formato di base (e i tag) sono uguali per tutti, ma poi ogni vendor ha implementato estensioni e nuovi tag per gestirle, per cui ti conviene guardare la documentazione sul sito di sun e poi su quello del produttore del prodotto che stai usando (tomcat in questo caso)

Matrixbob
23-05-2005, 09:53
kingv, col tuo web.xml e richiamo http://localhost:8080/GreetingServlet il risultato è:

type: Status report
message: /GreetingServlet
description: The requested resource (/GreetingServlet) is not available.

Maledetto Tomcat!!! :)

[N.B.]
Faccio sempre Stop/Start alle prove, infatti ho già 1 barba così:
:old:
e vado a prendermi 1 caffè.

Sti PATH delle mie brame .... :rolleyes:

Ah dimenticavo, il risultato nel URL è questa string :
http://localhost:8080/www/GreetingServlet?name='Roberto'&email='matrixbob@tin.it'

Matrixbob
23-05-2005, 10:03
ATTENZIONE, se però stoppo/starto e premo sul link che ho postato prima ottengo questo:

http://img289.echo.cx/img289/816/5005oq.gif

Ormai perdo il senso dell'errore, non capisco + dove stà ...
Invece se lo faccio 1 seconda volta torna l'errore 404 invece che il 500.
Devo ripeter stop/star e link per avere l'error 500 ...

:mbe: :ncomment: :eekk: :what:

kingv
23-05-2005, 10:09
dentro la directory WEB-INF/classes hai la classe compilata con le directory che rappresentano la struttura del package?
l'errore è semplicemente un ClassNotFound, il mappaggio è corretto, cerca di trovare la classe che risponda alla richiesta che fai col browser ma non la trova

Matrixbob
23-05-2005, 10:09
kingv, se ti posto il sorgente JAVA riesci ad identificare la servlet-class ?!

Ti ricordo che:
<servlet-class>servletx.GreetingServlet.MyClass</servlet-class>
lo ho invenato io e l'errore mi pare coinvolgere propio questa "cosa".

Matrixbob
23-05-2005, 10:12
Contenuto del file sorgente GreetingServlet.java:

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


public class GreetingServlet extends HttpServlet
{

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

String name=request.getParameter("name");
String email=request.getParameter("email");
String message=null;
message="Good Morning";

response.setContentType("text/html");

PrintWriter out=response.getWriter();

out.println("<html>"); out.println("<body>");
out.println("<p>"+message+", "+name+"</p>");
out.println("<p> Your email is: "+email+"</p>");
out.println("</body>");
out.println("</html>");

out.close();
}
}

kingv
23-05-2005, 10:14
Ti ricordo che:
<servlet-class>servletx.GreetingServlet.MyClass</servlet-class>
lo ho invenato io e l'errore mi pare coinvolgere propio questa "cosa".


e così me lo dici? :mbe: :D

metti questo nel web.xml
<servlet-class>GreetingServlet</servlet-class>
e assicurati di avere GreetingServlet.class in WEB-INF/classes

Matrixbob
23-05-2005, 10:18
DA DAAAAAAN!!!

http://img268.echo.cx/img268/4466/result6yc.gif

... è andata!
Adesso provo con metodo doPost.

Ma gli errori quali erano praticamente?!
... io non comprendo quei TAG "servlet-class" e "url-pattern".

"url-pattern" mi pare d'aver capito sia l'alias con cui richiamare la servlet giusto?!

"servlet-class" qui non mi pronuncio proprio. :)

kingv
23-05-2005, 10:23
come ti ho detto non trovava il file class corrispondente alla servlet.

quando ho tempo di spiego un po' meglio ;)