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

Almacenar el contenido en una BD por medio de una sesión JSP

Estas en el tema de Almacenar el contenido en una BD por medio de una sesión JSP en el foro de Java en Foros del Web. Estimados compañeros, he leído bastante material correspondiente a este foro... Me parece fenomenal lo que hacen. El día de hoy he tenido que registrarme para ...
  #1 (permalink)  
Antiguo 14/05/2013, 14:35
 
Fecha de Ingreso: mayo-2013
Mensajes: 1
Antigüedad: 10 años, 11 meses
Puntos: 0
Almacenar el contenido en una BD por medio de una sesión JSP

Estimados compañeros, he leído bastante material correspondiente a este foro... Me parece fenomenal lo que hacen.
El día de hoy he tenido que registrarme para solicitar su ayuda, puesto que esta fuera de mis posibilidades solventar un pequeñito problema

Estoy desarrollando una pequeña aplicacion en JAVA-JSP, para consignar unos datos importantes para el lugar donde me desempeño actualmente.

La forma en que he hecho las cosas son:

1) JavaClass para generar la conexion:

Código:
/**
 * @author Marco A.
 */
public class Conexion {
    private static Connection cn = null;
    private static String URL = "jdbc:mysql://127.0.0.1/AGCA";
    private static String usuario = "root";
    private static String contrasena = "";
    
    public static Connection getConexion() throws SQLException {
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        cn = DriverManager.getConnection(URL, usuario, contrasena);
        cn.createStatement();
        return cn;
    }
}
2) Otra JavaClass para la validación del usuario:

Código:
public class HolaUsuarioServlet extends HttpServlet {
    Connection con = null;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        try {
            boolean existeUsuario = false;
            //Guardamos los datos enviados desde index
            String usuario = request.getParameter("usuario");
            String password = request.getParameter("password");
            //Establecemos la conexion
            con = Conexion.getConexion();
            String consulta = "Select * from login where NOM_USU=? && PASS_USU=?";
            ResultSet rs = null;
            PreparedStatement pst = null;
            pst = con.prepareStatement(consulta);
            pst.setString(1, usuario);
            pst.setString(2, password);
            rs = pst.executeQuery();

            String USU="";
            String NO_CLAVE="";
            while(rs.next()){
                //En caso de existir una coincidencia
                existeUsuario = true;
                //Y reemplazamos los atributos de dicho Usuario
                USU = rs.getString("USU");
                NO_CLAVE = rs.getString("NO_CLAVE");
            }
            if(existeUsuario){
                //Para el usuario existente:
                //Reemplazamos atributos que luego obtendremos desde las páginas .jsp
                request.setAttribute("USU", USU);
                request.setAttribute("NO_CLAVE", NO_CLAVE);
                //Mandamos estos atributos a la página bienvenida.jsp
                request.getRequestDispatcher("/Formulario/formuprueba.jsp").forward(request, response);
            }else{
                //De lo contrario vamos a la página errorLogin.jsp
                request.getRequestDispatcher("/Login/errorLogin.jsp").forward(request, response);
            }
            out.close();
        } catch (SQLException ex) {
        out.println(ex.toString());
        }
    }
3) Los valores de la anterior JavaClass son suministrados por un pequeño login-index echo en JSP-HTML, no lo coloco para NO aburrirlos mas, jeje...

4) Si los datos "usuario" y "contraseña" son correctos, redirecciona a otro JSP con estructura en HTML con algunos campos para rellenar:

Código:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="unsch.efpis.ConexionDB.Conexion"%> 
<%@page import="java.util.*"%> 
<%@page import="java.sql.*"%>
<%@page import="java.io.*"%>
<%Connection cn = null;
Statement st = null;
try{
Class.forName("com.mysql.jdbc.Driver");
cn=(Connection)DriverManager.getConnection("jdbc:mysql://127.0.0.1/AGCA", "root", "");
st = cn.createStatement();
out.print("Conexion establecida");
}catch(Exception e){
out.print("Error en la conexion" + e);
}
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>AGCA-SID</title>
    </head>
    <body>
          <div class="wrapper">
     <%
            String nombre = (request.getAttribute("USU")).toString();
            String clave = (request.getAttribute("NO_CLAVE")).toString();
      %>
      Usuario: <%=nombre%> --------> Clave: <%=clave %>
          <form name="frmuser" method="post" action="/Formulario/formuprueba.jsp">
%>
                <ul>
                    <li id="DivHis" class="notranslate leftHalf">
                        <label class="DatDoc" id="InfDoc" for="InfDoc">División Histórica</label>
                        <select name="DivHis" id="DivHis" onChange="DivHisOnChange(this)" class="field select medium" tabindex="2"> 
                            <option value="0" selected="selected">Sin Dato</option>
                            <option value="1">Republicana</option>
                        </select>
                    </li>
                    <li id="DepEst" class="notranslate rightHalf">
                        <label class="DatDoc" id="InfDoc" for="InfDoc">Dependencia Estatal</label>
                        <select name="DepEst" id="DepEst" onChange="DepEstOnChange(this)" class="field select medium" tabindex="3"> 
                            <option value="0" selected="selected">Sin Dato</option>
                            <option value="1">Entidades Autónomas</option>
                        </select>
                    </li>
                </ul> /*... Y MUCHOS CAMPOS MAS PARA RELLENAR :Zzz: */
<%
        String IDDivHist=request.getParameter("DivHis");
        if (IDDivHist=="1"){
            String DH = "Repúblicana";
            String qry="insert into procedencia_documental(ID_DIVHIST, DIVHIST) values('"+IDDivHist+"','"+DH+"')";
            st.executeUpdate(qry);
            out.print("Información Registrada Satisfactoriamente"); 
%>
         </body>
    </html>
Mi problema radica en este punto, esta información que el usuario logueado selecciona no puedo mandarlo a la Base de Datos echa en MySQL... imagino que mi error se encuentra en la parte superior en la que reitero la conexion, y leugo que se le haga un submit, vuelva a recargar esta pagina para volverla a llenar siempre habilitada con la sesion del usuario, pero la verdad me estoy volviendo loco y no se que hacer si una alma caritativa pudiera ayudarme le estaría eternamente agradecido

P.D.: Gracias por la paciencia de leer mi testamento, jeje

Última edición por maacwm; 14/05/2013 a las 15:00
  #2 (permalink)  
Antiguo 14/05/2013, 17:37
 
Fecha de Ingreso: marzo-2012
Ubicación: Argentina
Mensajes: 111
Antigüedad: 12 años, 1 mes
Puntos: 12
Respuesta: Almacenar el contenido en una BD por medio de una sesión JSP

Buenas;

Te falta separar o encapsularmas las resposabilidades en tus clases,te vendria bien leer sobre el patron MVC,por ejemplo por que dirias que un servlet tiene la responsabilidad de obtener datos de una BD ??. en la wiki dice algo como esto
Cita:
El uso más común de los servlets es generar todas páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web...

Ademas de esto en el jsp tenes mucha logica tambien a lo sumo te deberia quedar codigo java como para mostrar datos o recorrer una lista no mucho mas que eso.
Entonces esto es importante por que pensa que el dia de mañana tengas que mantener la aplicacion vos mismo y no te va a gustar mucho(quizas no te importe que lo haga otro) quiza sea por esto que te estas volviendo loco.

En particular digo que deberias pasarle los datos ya obtenidos de la base a la pagina que estas teniendo problemas

Saludos.

Etiquetas: almacenar, bd, contenido, html, jsp, medio, servlet, sesión, string
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 11:23.