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!!!!!!