Foros del Web » Programación para mayores de 30 ;) » Java »

Como llamar distintos servlets desde un paquete?

Estas en el tema de Como llamar distintos servlets desde un paquete? en el foro de Java en Foros del Web. Hola, Estoy trabajando con servlets y tengo una duda para llamarlos dentro de un paquete. Tengo el paquete principal llamado Ventas y dentro de este ...
  #1 (permalink)  
Antiguo 11/09/2009, 13:50
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Como llamar distintos servlets desde un paquete?

Hola, Estoy trabajando con servlets y tengo una duda para llamarlos dentro de un paquete.

Tengo el paquete principal llamado Ventas y dentro de este paquete tengo el paquete llamado Productos y Usuarios.

Dentro de Ventas tengo el servlet "Index.class", dentro de Productos "Ingreso.class" y en Usuarios "Consulta.class"

En "Index.class" tengo dos sendRedirect uno a Ingreso.class y otro a Consulta.class

Los tengo de esta forma: sendRedirect("/Productos/Ingreso"); y sendRedirect("/Usuarios/Consulta");

Mi consulta, Como debo declarar estos servlets en el web.xml? porque si los declaro de esta forma:
Código:
<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Index</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ventas</servlet-name>
<url-pattern>Index</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Productos.Ingreso</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ventas</servlet-name>
<url-pattern>Ingreso</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Usuarios.Consulta</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ventas</servlet-name>
<url-pattern>Consulta</url-pattern>
</servlet-mapping>
Me da un error al momento de llamar algun servlet en el navegador y dice que no puede encontrar el servlet....
en cambio si coloco el paquete Productos y Usuarios en el directorio " class" y declaro en el web.xml:

Código:
<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Index</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ventas</servlet-name>
<url-pattern>Index</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Productos</servlet-name>
<servlet-class>Productos.Ingreso</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Productos</servlet-name>
<url-pattern>Ingreso</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Usuarios</servlet-name>
<servlet-class>Usuarios.Consulta</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Usuarios</servlet-name>
<url-pattern>Consulta</url-pattern>
</servlet-mapping>
no da error y muestra todo correctamente, pero no quiero sacar los paquetes Productos y Usuarios del Paquete Ventas, yo quiero que esos dos Paquetes queden dentro Ventas. Es necesario que declare el servlet Ingreso y Consulta en el web.xml? porque si no hago eso tambien me da error de servlet no encontrado. :s

Como puedo solucionar ese problema para tener todos mis paquetes con sus respectivos servlets en un sólo paquete que seria el principal y en mi caso llamado Ventas? Yo me refiero que configuración deberia tener en el web.xml o si debo hacer otra cosa.
Gracias

Última edición por -thor-; 11/09/2009 a las 13:56
  #2 (permalink)  
Antiguo 12/09/2009, 12:09
Avatar de MRU
MRU
 
Fecha de Ingreso: junio-2009
Mensajes: 27
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Como llamar distintos servlets desde un paquete?

Hay una cosa que me choca tanto en la primera como en la segunda versión, y es que por convenio, los nombres de los paquetes han de ir en minúsculas, osea que

Ventas.Productos.Ingreso

debería ser:

ventas.productos.Ingreso

(aunque yo siempre lo he visto como ventas.productos.Ingreso.class y gracias a tí he aprendido que no parece necesario el .class)

Ahora al grano: El camino que sigue quien lee el web xml es:
url-pattern ---> servlet-name ---> servlet-class

y todos han de ser únicos, puede haber cuantos quieras, pero no se pueden repetir. En tu primer ejemplo, supongo que por el copy-paste, has repetido tres veces la pareja <servlet-name>Ventas</servlet-name>

En cuanto lo hagas como en el segundo caso, todo debería funcionar.
<servlet-name>Ventas</servlet-name>
<servlet-name>Usuarios</servlet-name>
<servlet-name> Productos </servlet-name>

Saludos

MRU
  #3 (permalink)  
Antiguo 12/09/2009, 22:52
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Como llamar distintos servlets desde un paquete?

Gracias, pero se hacer eso. Me gustaria saber si es posible declarar solamente el paquete principal en web.xml y desde esa declaracion poder ocupar los demas paquetes que estan dentro del paquete principal y que contienen otras clases, es decir ocupar un servlet como menu en el paquete principal y desde alli llamar a las otras clases que estan dentro de los otros paquetes.


Declarar esto en el web.xml
<servlet>
<servlet-name>paquete1</servlet-name>
<servlet-class>paquete1.Index</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>paquete1</servlet-name>
<url-pattern>Index</url-pattern>
</servlet-mapping>


para ocupar está estructura que está dentro del paquete1 a traves de un menu.
gracias
Código:
 Directorio de C:\paquete1

13-09-2009  00:21    <DIR>          .
13-09-2009  00:21    <DIR>          ..
13-09-2009  00:21                 0 clase_menu.txt
13-09-2009  00:20    <DIR>          paquete2
13-09-2009  00:21    <DIR>          paquete3
               1 archivos              0 bytes

 Directorio de C:\paquete1\paquete2

13-09-2009  00:20    <DIR>          .
13-09-2009  00:20    <DIR>          ..
13-09-2009  00:20                 0 clase_dentro_de_paquete2.txt
               1 archivos              0 bytes

 Directorio de C:\paquete1\paquete3

13-09-2009  00:21    <DIR>          .
13-09-2009  00:21    <DIR>          ..
13-09-2009  00:20                 0 clase_dentro_de_paquete3.txt
               1 archivos              0 bytes

     Total de archivos en la lista:
               3 archivos              0 bytes
               8 dirs  96.437.338.112 bytes libres
  #4 (permalink)  
Antiguo 13/09/2009, 02:28
Avatar de MRU
MRU
 
Fecha de Ingreso: junio-2009
Mensajes: 27
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Como llamar distintos servlets desde un paquete?

No termino de entenderlo.
A ver si es esto. He tocado un ejemplo con el que yo trabajo. En el paquete servlets, tenia el ControllerServlet y el AjaxServlet. he creado un paqute llamado dentro y allí he puesto el AjaxServlet.
Modifico el xml y me queda algo así
<servlet>
<servlet-name>EntornoController</servlet-name>
<servlet-class>servlets.ControllerServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>Ajax</servlet-name>
<servlet-class>servlets.dentro.AjaxServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ajax</servlet-name>
<url-pattern>/AjaxServlet</url-pattern>
</servlet-mapping>

y desde el performTask del controller, puedo hacer lo siguiente:
response.sendRedirect("AjaxServlet");
A ver si te he entendido bien!

Otra cosa, ¿en verdad te parece correcto en tu primer ejemplo que estas declaraciones convivan en el web.xml?

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Index</servlet-class>
</servlet>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Productos.Ingreso</servlet-class>
</servlet>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Usuarios.Consulta</servlet-class>
</servlet>
  #5 (permalink)  
Antiguo 13/09/2009, 21:59
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Como llamar distintos servlets desde un paquete?

Eso estaba buscando :), muchas gracias por la ayuda MRU, ahora he solucionado mi problema.

Otra cosa, esto no funciona y en mi primer post he escrito que da un error si llamo a mi servlet desde el navegador, con esta declaracion en el web.xml.
nuevamente gracias
<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Index</servlet-class>
</servlet>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Productos.Ingreso</servlet-class>
</servlet>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Usuarios.Consulta</servlet-class>
</servlet>
  #6 (permalink)  
Antiguo 14/09/2009, 11:30
Avatar de MRU
MRU
 
Fecha de Ingreso: junio-2009
Mensajes: 27
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Como llamar distintos servlets desde un paquete?

Es lo que estoy intentando decirte, no puede haber ser <servlet-name> repetidos con el mismo nombre e indicando <servlet-class> distintos

INCORRECTO:
<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Index</servlet-class>
</servlet>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Productos.Ingreso</servlet-class>
</servlet>

<servlet>
<servlet-name>Ventas</servlet-name>
<servlet-class>Ventas.Usuarios.Consulta</servlet-class>
</servlet>

CORRECTO:
<servlet>
<servlet-name>Index</servlet-name>
<servlet-class>Ventas.Index</servlet-class>
</servlet>

<servlet>
<servlet-name>Ingreso</servlet-name>
<servlet-class>Ventas.Productos.Ingreso</servlet-class>
</servlet>

<servlet>
<servlet-name>Consulta</servlet-name>
<servlet-class>Ventas.Usuarios.Consulta</servlet-class>
</servlet>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:45.