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

ayuda con struts

Estas en el tema de ayuda con struts en el foro de Java en Foros del Web. holas.... ojala me puedan ayudar con un par de dudas que tengo al hacer mi aplicacion web con struts... bueno primero pondre los ficheros: - ...
  #1 (permalink)  
Antiguo 23/09/2006, 18:03
 
Fecha de Ingreso: septiembre-2005
Mensajes: 34
Antigüedad: 18 años, 7 meses
Puntos: 0
ayuda con struts

holas.... ojala me puedan ayudar con un par de dudas que tengo al hacer mi aplicacion web con struts...

bueno primero pondre los ficheros:

- personaForm.jsp
- PesronaStrutsActionForm.java
- RegistrarStrutsAction.java
- Conexion.java

bueno lo que quiero hacer es que un usuario pueda ingresar sus datos y estos almacenarlos en la BD...ahora pondre algo de codigo para que me entiendan mejor...estoy usando "NetBeans IDE 5.0":

////////////////////////////////////este codigo es de RegistrarStrutsAction.java

package com.myapp.struts;
import modelo.Conexion;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;

public class RegistrarStrutsAction extends Action {

private final static String EXITO = "exito";

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Conexion con=new Conexion();
////////////con.agregarPersona(form); //////esto esta bien ahi?xq l netbeans lo rechaza..
return mapping.findForward(EXITO);

}
}


/////////////////////////////////este es del modelo...la conexion a la BD Conexion.java:

package modelo;
import java.io.*;
import java.sql.*;
import java.util.*;
import com.myapp.struts.*;


public class Conexion {
private Connection conexion;
private PreparedStatement nuevoUsuario,verUsuario;
public Conexion() throws Exception
{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:XE";
String userID="system";
String password="xxxxxx";
conexion=DriverManager.getConnection(url,userID,pa ssword);
nuevoUsuario=conexion.prepareStatement("INSERT INTO TUSUARIO(USUARIO,PSW,EMAIL,NOMBRE,APEPAT,APEMAT)VA LUES(?,?,?,?,?,?)");
verUsuario=conexion.prepareStatement("SELECT USUARIO, EMAIL FROM TUSUARIO");
}
public ArrayList getListaPersona() throws SQLException
{ ArrayList listaPersona=new ArrayList();
ResultSet resultados=verUsuario.executeQuery();
while(resultados.next()){
PersonaStrutsActionForm persona=new PersonaStrutsActionForm();
persona.setUsuario(resultados.getString(1));
persona.setPsw(resultados.getString(2));
persona.setEmail(resultados.getString(3));
persona.setNombre(resultados.getString(4));
persona.setApepat(resultados.getString(5));
persona.setApemat(resultados.getString(6));
listaPersona.add(persona);
}
return listaPersona;
}
public void agregarPersona(PersonaStrutsActionForm persona) throws SQLException {
nuevoUsuario.setString(1,persona.getUsuario());
nuevoUsuario.setString(2,persona.getPsw());
nuevoUsuario.setString(3,persona.getEmail());
nuevoUsuario.setString(4,persona.getNombre());
nuevoUsuario.setString(5,persona.getApepat());
nuevoUsuario.setString(6,persona.getApemat());

nuevoUsuario.executeUpdate();
}
protected void finalizar(){
try{
nuevoUsuario.close();
verUsuario.close();
conexion.close();
}
catch(SQLException sqlException){
sqlException.printStackTrace();
}
}
}


//////DUDAS

Bueno al ejecutar la aplicacion corre perfectamente y los datos ingresados en el formulario los valida bien y hasta le hace el forward perfectamente, el problema es que no almacena en la BD.

Mi consulta es: donde pongo la llamada a el metodo "agregarPersona(PersonaStrutsActionForm)" ya que no me acepta dicha llamada en el RegistrarStrutsAction. O en caso de estar incorrecto el metodo como lo podria hacer?

otra pregunta es (ya no tiene nada que ver con el problema de la BD):
En mi caso tengo dos StrutsAction.java...uno para el formulario de "login" y otro para "registrar"
eso es correcto? o solo debe haber un StrutsAction por Aplicacion?

ah y la ultima es: Como podria hacer un foro con Struts? seria almacenando en BD verdad?


ESPERO ME AYUDEN, MUCHAS GRACIAS!!!!!!
  #2 (permalink)  
Antiguo 25/09/2006, 16:08
 
Fecha de Ingreso: septiembre-2005
Mensajes: 34
Antigüedad: 18 años, 7 meses
Puntos: 0
....espero q me puedan ayudar...GRACIAS...
  #3 (permalink)  
Antiguo 26/09/2006, 00:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Qué tal eledil,

El método está bien puesto en RegistrarStrutsAction, el problema es que se te olvida hacer el casting a tu ActionForm particular cuando llamas al método guardar de la conexión.

Código PHP:
public class RegistrarStrutsAction extends Action {

   private final static 
String EXITO "exito";

   public 
ActionForward execute(ActionMapping mappingActionForm formHttpServletRequest requestHttpServletResponse responsethrows Exception{
   
Conexion con=new Conexion();
   
//Añadido para hacer el cast
   
PersonaStrutsActionForm formulario = (PersonaStrutsActionFormform;
   
con.agregarPersona(formulario) ;
   return 
mapping.findForward(EXITO);

}

Espero que ahora te funcione.

Con respecto al tema de los action, debe haber sólo un ACTIONSERVLET, que es el controlador central al que llegan todas las peticiones. Action debe haber todos los que creas convenientes para ofrecer las diferentes funcionalidades de tu aplicación. Eso va al gusto de cada uno, no creo que haya ningún "estandar".

Y sobre el foro, habría que hacerlo con una BD y mucha paciencia

  #4 (permalink)  
Antiguo 26/09/2006, 18:42
 
Fecha de Ingreso: septiembre-2005
Mensajes: 34
Antigüedad: 18 años, 7 meses
Puntos: 0
ok muchas gracias...

hola raiko en verdad muchisimas gracias por responderme y si tenias razon!!!!ahora si me funciona..pero tengo una pregunta mas...la forma en que lo estoy haciendo es la correcta para el framework struts?? xq he visto algo de "<DATA-SOURCE>" pero creo q es un poco antiguo y me tiene confundido...muchas gracias de verdad x la respuesta...salu2...
  #5 (permalink)  
Antiguo 27/09/2006, 00:18
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
La interfaz DataSource representa un origen de datos, es la mejor forma de obtener conexiones. Es mejor que el Class.forName y DriverManager, échale un vistazo

http://java.sun.com/j2se/1.4.2/docs/...ataSource.html http://www.javahispano.org/tips.item.action?id=24 http://www.mysql-hispano.org/page.php?id=28&pag=2

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 00:18.