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

JavaBeans

Estas en el tema de JavaBeans en el foro de Java en Foros del Web. hola foreros!! en esta ocacion tengo una duda, que estoy seguro que alguno de ustedes ya ah hehco antes, le explico......... lo que necesito ahcer ...
  #1 (permalink)  
Antiguo 31/03/2006, 09:28
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 6 meses
Puntos: 53
JavaBeans

hola foreros!!

en esta ocacion tengo una duda, que estoy seguro que alguno de ustedes ya ah hehco antes, le explico.........

lo que necesito ahcer es mandar un JavaBean aun servlet, aqui mi JSP

Código:
<%@ page import="pruebas.form.Alumno" %>

<jsp:useBean id="alumno" class="pruebas.form.Alumno" scope="request"/>
<jsp:setProperty name="alumno" property="*"/>

<html>
<body>
<form action="/ejemplos/alumnoAction" method="POST">
	Matricula:<input type="text" name="matricula"><br><br>
	Nombre:<input type="text" name="nombre"><br><br>
	Apellidos:<input type="text" name="apellidos"><br><br>
	Facultad:<input type="text" name="facultad"><br><br>
	<input type="submit">
</form>
</body>
</html>
ok, como pueden ver he metido en el request el bean, ahora la pregunta es como lo recupero en el servlet?, pues no me esta llegando como atributo del request, de donde lo puedo sacar?

aqui el servlet
Código PHP:
package pruebas.action;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class 
AlumnoAction extends HttpServlet{
    private static final 
long serialVersionUID 1L;
    public 
void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
        
doPost(request,response);
    }
    
    public 
void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
        
Enumeration names =    request.getAttributeNames();
        
System.out.println("<<<-");
        while(
names.hasMoreElements()){
            
            
System.out.println((String)names.nextElement());
        }
        
System.out.println("->>");
    }

pero no me esta llegando nada
  #2 (permalink)  
Antiguo 01/04/2006, 10:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
request.getAttributeNames();

-->

request.getParameterNames();

Lo que recibes de una pagina son parametros, no atributos .
  #3 (permalink)  
Antiguo 01/04/2006, 19:45
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 6 meses
Puntos: 53
gracias GreenEyed, pero esa no era la pregunta, eso si lo se......

la pregunta es como agarrar el BEAN?? que declare en el JSP, osea este...

<%@ page import="pruebas.form.Alumno" %>

<jsp:useBean id="alumno" class="pruebas.form.Alumno" scope="request"/>
<jsp:setProperty name="alumno" property="*"/>

por que se supone que en el BEAN estan todos los parametros, verdad?? hay manera de ahcer eso?

thanks
  #4 (permalink)  
Antiguo 02/04/2006, 05:33
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
Tendras que ser más claro .

¿Que significa "agarrar"? ¿Que el servlet reciba el Bean con todos los parametros dentro? ¿Que el JSP lea el Bean que alguien le habra puesto antes en el request?

El JSP y el servlet que muestras trabajan en dos peticiones diferentes, asi que no comparten el objeto request. Eso lo tienes claro, ¿no? Por eso leer atributos del request no devuelve nada.
  #5 (permalink)  
Antiguo 02/04/2006, 11:28
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 6 meses
Puntos: 53
Cita:
Iniciado por GreenEyed
¿Que significa "agarrar"? ¿Que el servlet reciba el Bean con todos los parametros dentro?
eso precisamente es lo que quiero ahcer, que en el servlet reciba el BEAN con todos los parametros del formulario, para que en el servlet use los parametros algo asi.......

alumno.getNombre();
alumno.getApellidos();

no se si eso sea posible........

Cita:
Iniciado por GreenEyed
El JSP y el servlet que muestras trabajan en dos peticiones diferentes, asi que no comparten el objeto request.
significa que no es posible hacer lo que te acabo de contar??

thanks
  #6 (permalink)  
Antiguo 03/04/2006, 00:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
Un formulario de HTML no envia "Beans", envía parametros. Como mucho, lo que podrías usar es alguna capa intermedia de software que directamente te coja los parametros y te los meta en un Bean, pero el formulario directamente no lo hará. Hay frameworks como el Struts que hacen cosas parecidas pero no los uso, asi que no te puedo decir lo facil o dificil que es.
  #7 (permalink)  
Antiguo 03/04/2006, 10:21
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años, 3 meses
Puntos: 7
Pero en el request si puedes enviar objetos.

<% request.setAttribute("tuBean", objetoBean); %>

y en el servlet lo agarrarías así: objeto = (Algún casteo) request.getAttribute("tuBean");

Como debes saber en las JSP están los objetos HttpSession, HttpServletRequest y HttpServletResponse declarados implícitamente (sessio, request, response respectivamente)... sólo úsalos.

No soy nadie para dar opiniones, pero he estado leyendo en algunos blueprints y páginas de patrones que la declaración de beans, como la que has hecho, consume bastante recursos y tiempo de servidor en comparación con otros métodos... Yo lo que te recomiendo es que comiences a migrar a algún framework para hacer aplicaciones web más livianas.
__________________
El último TipdaR
  #8 (permalink)  
Antiguo 03/04/2006, 15:09
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
Creo que te confundes Tipdar, ya que en ese caso la JSP y el servlet subsiguiente no comparten el request. Esa tecnica funciona para pasar informacion de un servlet a una JSP o viceversa si se usa un RequestDispatcher...forward() ya que asi comparten el mismo request.

Pero entre dos peticiones distintas: No se puede.
  #9 (permalink)  
Antiguo 03/04/2006, 17:08
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años, 3 meses
Puntos: 7
No comparten el mismo request? Si tú lo dices...
__________________
El último TipdaR
  #10 (permalink)  
Antiguo 03/04/2006, 18:48
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 6 meses
Puntos: 53
Cita:
Iniciado por GreenEyed
Hay frameworks como el Struts que hacen cosas parecidas pero no los uso, asi que no te puedo decir lo facil o dificil que es.

de hecho algo semejante ees lo que quiero hacer, yo he usado struts y appfuse, en esos frameworks recibes un FORM en los actions con todos los parametros, pues algo asi necesito. optener todos los parametros en un objeto.

bueno, en conclusion, me estan diciendo que no es posible hacerlo con servlets? bueno, pues ya nimodo.........

thanks
  #11 (permalink)  
Antiguo 03/04/2006, 18:52
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 6 meses
Puntos: 53
Cita:
Iniciado por Tipdar
Yo lo que te recomiendo es que comiences a migrar a algún framework para hacer aplicaciones web más livianas.
gracias por el consejo, de hecho yo nunca he realizado aplicaciones unicamente con servlets....... solo he desarrollado con struts, y ahora estoy desarrollando con appfuse...... perooooooo este proyecto es en equipo, y mi equipo no quiere aprender a usar struts, sooooooo..........

have funnnnnnnn
  #12 (permalink)  
Antiguo 04/04/2006, 01:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
Sonrisa

Cita:
Iniciado por Tipdar
No comparten el mismo request? Si tú lo dices...
No hace falta que te fies de mi pálabra, pruébalo tú mismo.
  #13 (permalink)  
Antiguo 04/04/2006, 01:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
Cita:
Iniciado por stock
de hecho algo semejante ees lo que quiero hacer, yo he usado struts y appfuse, en esos frameworks recibes un FORM en los actions con todos los parametros, pues algo asi necesito. optener todos los parametros en un objeto.
Exacto. En estos casos la conversion de parametros a objetos y ponerlos en el request te lo hace el framework struts o appfuse. En realidad el FORM sólo te está enviando los parametros por separado pero los frameworks lo encapsulan por ti.

Cita:
Iniciado por stock
bueno, en conclusion, me estan diciendo que no es posible hacerlo con servlets? bueno, pues ya nimodo.........
thanks
No, con servlets a pelo lo que recibes en un request son parametros, no objetos. Para eso están los frameworks, si no no harían falta.
  #14 (permalink)  
Antiguo 05/04/2006, 08:27
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 6 meses
Puntos: 53
hola de nuevo!!

ya hice lo que necesitaba, les explico........

perimero en el JSP declaro un BEAN, en el formulario pongo todos los inputs, luego en el ACTION de este formulario no le pongo nada, al ahcer esto el BEAN se llena con la informacion y se actualiza la misma page, ahora hice un TAG que me valida si el boton submit se a presionado, entonces me redirecciona a un servlet, con esto ahora si puedo compartir el request, entre el JSP y el SERVLET..... y listo puedo tomar el BEAN con todos los parametros del formulario en mi SERVLET

have funnnnn guys
  #15 (permalink)  
Antiguo 05/04/2006, 13:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
No he entendido nada, pero si te funciona, estupendo .
  #16 (permalink)  
Antiguo 06/04/2006, 14:31
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 6 meses
Puntos: 53
mmmmmmm, mira mi Formulario quedo asi

Código:
<%@ taglib uri="/myTags" prefix="myTags" %>

<jsp:useBean id="alumno" class="pruebas.form.Alumno" scope="session"/>
<jsp:setProperty name="alumno" property="*"/>

<myTags:action forward="alumnoAction" option="edit"/>

<html>
<body>

<form method="POST">
	Matricula:<input type="text" name="matricula"><br><br>
	Nombre:<input type="text" name="nombre"><br><br>
	Apellidos:<input type="text" name="apellidos"><br><br>
	Facultad:<input type="text" name="facultad"><br><br>
	<input type="submit" name="submit" value="enviar">
</form>
</body>
</html>
y e el servlet lo recupero asi:

request.getSession().getAttribute("alumno");

con este TAG

<myTags:action forward="alumnoAction" option="edit"/>

hago un foward al servlet unicamente cuando se a presionado el BOTON submit.

bueno, me funciona muy bien
  #17 (permalink)  
Antiguo 07/04/2006, 01:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 3 meses
Puntos: 51
Ya entiendo. Compartes el Bean a traves de la sesion. Es un poco rebuscado pero si funciona, pues estupendo.

El problema esta en que las JSP tienen la instruccion <jsp:setProperty name="alumno" property="*"/> que es bastante util pero por algun motivo, no existe el equivalente en los servlets y hay que montar este follon para leer los parametros automaticamente.

Yo los leo "a mano", bueno, de hecho uso un generador de codigo para que me cree el codigo para leerlos, asi que no habia llegado a usar esta opción.

De todas formas, si usas un forward desde el JSP al servlet, entonces SI comparten el request y no haria falta compartir el Bean a traves de la sesion.
<S>
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 02:05.