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

usar correctamente JSP/SERVLETS/JAVABEANS

Estas en el tema de usar correctamente JSP/SERVLETS/JAVABEANS en el foro de Java en Foros del Web. Muy buenas, me gustaría que alguien me guiara un poco a la hora de crear una app web que usara estos tres componentes. La pagina ...
  #1 (permalink)  
Antiguo 04/05/2005, 05:23
 
Fecha de Ingreso: marzo-2004
Mensajes: 71
Antigüedad: 20 años, 2 meses
Puntos: 0
usar correctamente JSP/SERVLETS/JAVABEANS

Muy buenas, me gustaría que alguien me guiara un poco a la hora de crear una app web que usara estos tres componentes. La pagina en si esta en html/javascript y tiene un formulario con listboxes que recoge varias variables. Tengo una clase que es la que se encarga de establecer la conexion, y un Javabean con metodos y atributos para insertar datos en la bd (oracle). Pues bien, al clickar el boton del formulario recogo las variables con un servlet, pero a partir de ahi no se bien que hacer, llamo a los metodos del javabean pasandole dichas variables? o se supone que debes cambiar los atributos del javabean con <jsp:setproperty... desde la jsp y luego llamar al metodo?? nose ando un poco perdido, si os sirve de algo, dejo aqui el codigo del javabean:



import java.sql.*;

public class JspBean {
private Connection BeanCon = Bd.con();
private String consulta = "Valor inicial";
private int resultado = 0;
private String datos;
private int capitulo;
private int manual;
private int tema;
private int pagina;
private int foto;
private String color;
private String subart;

//Acceder a propiedad de ejemplo

//Acceder a propiedad de ejemplo

/**
* MÉTODO DE INSERCCION DE NUEVOS ARTICULOS EN LA BD NATURA
* @param datos - datos del articulo
* @param manual - id del manual al que pertenece el articulo
* @param capitulo - id del capitulo al que pertenece el articulo
* @param tema - id del tema al que pertenece el articulo
* @param pagina - id de la pagina al que pertenece el articulo
* @param subart - txt del subarticulo
* @param foto - id de la foto adjunta al articulo
* @param color - id del manual al que pertenece el articulo
* @return resultado: 1 si se ha actualizado, -1 si ha sido erroneo
*/
public int insertar(String datos, int manual, int capitulo,
int tema,
int pagina) {
try {
Statement st = BeanCon.createStatement();
//SACAR EL ID DE LA TABLA DE ARTICULOS--------
ResultSet rspk = st.executeQuery("select ID_ARTICULO from natura.articulos order by ID_ARTICULO desc");
rspk.next();
int pk = rspk.getInt("ID_ARTICULO")+1;
System.out.println(pk);
//-----------------------------------------

st.executeQuery(
"insert into natura.articulos(ID_ARTICULO,DATOS,MANUAL,CAPITULO ,TEMA,PAGINA,SUBART,ID_FOTO) values("+pk+",'"+datos+"',"+manual+","+capitulo+", "+tema+","+pagina+")");
resultado = 1;
return resultado;
}
catch (SQLException ex) {
resultado = -1;
return resultado;
}
}

public int insertar(String datos, int manual, int capitulo,
int tema,
int pagina, String subart, int foto) {
try {
Statement st = BeanCon.createStatement();
//SACAR EL ID DE LA TABLA DE ARTICULOS--------
ResultSet rspk = st.executeQuery("select ID_ARTICULO from natura.articulos order by ID_ARTICULO desc");
rspk.next();
int pk = rspk.getInt("ID_ARTICULO")+1;
//-----------------------------------------
st.executeQuery(
"insert into natura.articulos(ID_ARTICULO,DATOS,MANUAL,CAPITULO ,TEMA,PAGINA,SUBART,ID_FOTO) values("+pk+",'"+datos+"',"+manual+","+capitulo+", "+tema+","+pagina+",'"+subart+"',"+foto+")");
resultado = 1;
return resultado;
}
catch (SQLException ex) {
resultado = -1;
return resultado;
}
}

/**
* BUSQUEDA DE ARTICULOS
* @param manual
* @param capitulo
* @param tema
* @param pagina
* @return
* @throws SQLException
*/

public int busqueda(String manual, String capitulo, String tema,
String pagina) throws SQLException {
try {
Statement st = BeanCon.createStatement();
ResultSet rs = st.executeQuery(
"select ID_ARTICULO from natura.articulos where MANUAL=" + manual +
" ,CAPITULO=" + capitulo + ", TEMA=" + tema + ", CAPITULO=" + pagina +
"");
int i = rs.getInt(1); //id del articulo
BeanCon.close(); //cerramos conexion
resultado = i;
return resultado; //retornamos id del articulo

}
catch (SQLException ex) {
BeanCon.close(); //cerramos conexion
resultado = -1;
return resultado; //identificacion del error
}

}

public int getManual() {
return manual;
}

public void setManual(int manual) {
this.manual = manual;
}

public String getDatos() {
return datos;
}

public void setDatos(String datos) {
this.datos = datos;
}

public int getCapitulo() {
return capitulo;
}

public void setCapitulo(int capitulo) {
this.capitulo = capitulo;
}

public int getTema() {
return tema;
}

public void setTema(int tema) {
this.tema = tema;
}

public int getPagina() {
return pagina;
}

public void setPagina(int pagina) {
this.pagina = pagina;
}

public int getFoto() {
return foto;
}

public void setFoto(int foto) {
this.foto = foto;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public String getSubart() {
return subart;
}

public void setSubart(String subart) {
this.subart = subart;
}

public int getResultado() {
return resultado;
}
}
  #2 (permalink)  
Antiguo 04/05/2005, 12:05
Avatar de basico  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas mesma
Mensajes: 50
Antigüedad: 19 años, 3 meses
Puntos: 1
Bueno compañero, si aplicas el modelo MVC lo más indicado sería que de tu JSP (vista) pases todos los parametros al Servlet(controlador) y según la "necesidad de procesamiento" (o respuesta) pues instancias al JavaBean (modelo) y usas los métodos indicados para realizar lo que necesites.

Pero bien, si estás con una aplicación pequeña que no requiere de un gran número de actores en cada componente (muchos JSP's, muchos Servlets, Beans, etc) lo mejor sería utilizar el modelo de 2 capas, es decir, te quedas con el JSP (y usas el <jsp:useBean ...> <jsp:setProperty ...> etc) ya que así tendrás una aplicación menos compleja.

Espero ayude, cambio y fuera. Paz.
__________________

Básico ++
  #3 (permalink)  
Antiguo 05/05/2005, 04:40
 
Fecha de Ingreso: marzo-2004
Mensajes: 71
Antigüedad: 20 años, 2 meses
Puntos: 0
Ok, una cosa mas..

Gracias, esta teória ya la se, pero metiendonos en materia: me gustaria saber donde deben ir los metodos que interactuen con la bd (inserts,updates,busquedas etc) ya que si los tengo en el bean, podre cambiar los parametros de esos metodos, pero no llamarlos para que realicen la accion.. Nose ando un poco liadillo con el tema. En cualquier caso me gustaria saber la forma mas correcta de hacerlo, ya que aunque en principio sea una app pequeña no hay que descartar que vaya creciendo y cuanto mejor estructurada este mas trabajo ahorraremos en un futuro, jejej parezco un seminarista. Bueno si tienes algo mas de tiempo y no te importa, echame otro cable¡
Gracias por la respuesta anterior.
  #4 (permalink)  
Antiguo 07/05/2005, 08:49
 
Fecha de Ingreso: noviembre-2004
Ubicación: Oviedo
Mensajes: 99
Antigüedad: 19 años, 6 meses
Puntos: 1
Entre todo este codigo no encuentro donde instancias el soporte de tu base de datos, y donde generas la conexión a tu base de datos.

Realmente que problema tienes? te da error? no te muestra los datos?
  #5 (permalink)  
Antiguo 08/05/2005, 08:45
Avatar de vlah  
Fecha de Ingreso: enero-2002
Mensajes: 254
Antigüedad: 22 años, 4 meses
Puntos: 0
Pues bbarraco, , tus busquedas, inserciones, y todo lo que tenga que ver con base de datos deberia ir en la capa de controlador. bueno es que como decian todo depende tambien a cuantas capas quieras manejar ..saludos!!
__________________
<<<<VLAH>>>>> :-D
  #6 (permalink)  
Antiguo 10/05/2005, 16:00
 
Fecha de Ingreso: marzo-2004
Mensajes: 71
Antigüedad: 20 años, 2 meses
Puntos: 0
Os explico:

Hola a todos de nuevo, antes de nada gracias por el interes¡
Bueno, lo que os comentaba, en el bean tengo atributos para poder ser llamados desde la jso con get y set propertys, en la jsp simplemente el formulario que al hacer submit enviara los datos al servlet. Y en dicho servlet el codigo para recoger los parametros, comprobar que sean correctos y enviar el resultado a la jsp, osea 3 capas sino interpreto mal. El objeto de conexion lo tengo en un Servlet aparte que es el primero que se ejecutara al iniciar la app. Ahora las dudas:

- es posible tener en el bean metodos que interactuen con la bd (insert, updates Querys...) para asi no tener que enviar datos con submit?la idea es poder cambiar desde la jsp los atributos del bean y llamar a alguno de esos metodos que usen como parametro dichos atributos, devolviendo por ejemplo un array de un campo. Y para que? pues por ejemplo para crear un listbox dinamico, que al ser seleccionado haga un setpropertys de las propiedades que usara el metodo a llamar, llame al metodo y reciba un array para ser mostrado como opciones del listbox. No se si se podra hacer esto, o se suele hacer de otro modo, como os digo ando bastante verde..
Asi que nada, si alguien sabe algo aqui os espero, un saludo!!
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 20:49.