Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/06/2004, 01:51
soniagrande
 
Fecha de Ingreso: mayo-2004
Mensajes: 75
Antigüedad: 20 años
Puntos: 2
No te andes volviendo loco con que si tengo que crear javabeans, que si los interfaces o lo que sea.. Vamos por pasos.

El ejemplo que quieres hacer es una pagina de login ¿no?, pues empieza por lo mas facil:

Haz una pagina html(pero ponle extension .jsp) en la que crees un formulario normal con dos input de tipo text normales llamados login y pass (por ejemplo) ah y un boton de submit.
Ahora para convertirla en un formulario que trabaje con struts haz los siguientes cambios:

Al principio de la pagina añade las librerias de struts
Código HTML:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> 
vamos a cambiar la etiqueta de los inputs (te pongo el ejemplo de uno):
Antes:
<input type="text" name="login"/>
Struts:
<html:text property="login"/>

Y ahora vamos a cambiar el formulario para que se asocie a lo que va a ser el action:

Antes:
<form name="formulario" action="" method="post">
Struts:
<html:form action="login.do">

Ahora vamos a crear la clase que recoge los datos del formulario
Código:
package ejemplo;

public class LoginForm extends ActionForm{
}
Lo unico que realmente necesitas en esta clase es declarar tantas propiedades como inputs has puesto en el formulario, ojo con los nombres, tienen que ser exactamente los que pone en el property
<html:text property="login"/>

Tambien haz sus metodos get/set.

Ahora vamos a hacer la clase que se encarga de recibir este formulario y llamar a los metodos y/o clases que sean necesarios para validar al usuario.

Código:
package ejemplo;

public class LoginAction extends org.apache.struts.action.Action{
}
Para este ejemplo realmente solo necesitas un metodo:

Código:
 
public ActionForward execute(ActionMapping mapping,
                             ActionForm form,
                             javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response)
                      throws java.lang.Exception{
	//el parametro form es el formulario que le llega desde la jsp
	LoginForm loginForm = (LoginForm) form;
	// a partir de aqui puedes acceder a getPass y getLogin para coger los datos
	//que te pasan en el formulario, y con ellos si quieres llamar a otra clase que
	//acceda a BD para ver si existe algun usuario con ese nombre ..
	//o como tu quieras hacer la validacion del usuario

	//como ves mi validacion es muy sofisticada ;)
	if(loginForm.getLogin().equals("sonia") && loginForm.getPass().equals("sonia")){
		//donde vamos si todo esta bien
		return mapping.findForward("bien");
	}
	else{
		//donde vamos si todo esta mal
		return mapping.findForward("mal");
	}
}
Ahora es cuando vamos a juntarlo todo en el struts config, tenemos que poner nuestras clases LoginForm y LoginAction para
que se aclaren entre ellas

<form-beans>
...
<form-bean name="loginForm" type="ejemplo.LoginForm" />
</form-beans>
<action-mappings>
...
<action name="loginForm" path="/login" scope="request" type="ejemplo.LoginAction">
<forward name="bien" path="validacionbien.jsp" redirect="false" />
<forward name="mal" path="validacionmal.jsp" redirect="false" />
</action>
</action-mappings>


Basicamente lo que estas diciendo es que a LoginAction le vas a pasar en la request un atributo con el nombre loginForm. Y ya has dicho que loginForm es de la clase LoginForm.

No te olvides de modificar el fichero de configuracion de tu servidor de aplicaciones para que incluya el fichero de configuracion de struts.

Con esto abres la pantalla de login que has creado y al hacer submit deberia automaticamente rellenarte un objeto de la clase LoginForm que le llegue a LoginAction con los datos que el usuario haya introducido por pantalla.

Buf menudo rollo que he hecho que leas, si despues de todo no me he explicado bien o no te sirve para nada siento la chapa que acabo de meter a todo el mundo, pero es que no se que me pasa hoy