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

Obtener el id de inicio de sesion

Estas en el tema de Obtener el id de inicio de sesion en el foro de Java en Foros del Web. Buenas tardes, me gustaría que me pudieran apoyar por favor. Tengo dos tablas relacionadas (usuarios y ideas), pero me gustaría saber como puedo insertar un ...
  #1 (permalink)  
Antiguo 23/02/2016, 18:31
 
Fecha de Ingreso: febrero-2016
Mensajes: 2
Antigüedad: 8 años, 2 meses
Puntos: 0
Pregunta Obtener el id de inicio de sesion

Buenas tardes, me gustaría que me pudieran apoyar por favor. Tengo dos tablas relacionadas (usuarios y ideas), pero me gustaría saber como puedo insertar un registro en la tabla ideas ya que esta utiliza una llave foránea y no se como obtener el id del usuario ya que esa es mi llave foránea.

Es decir, cuando el usuario accede al sistema el usuario puede crear una idea y esta se registra en la base datos pero no puedo obtener el id del usuario que inicio sesión.

Este es el código de las dos tablas.

Código MySQL:
Ver original
  1. CREATE TABLE `usuarios` (
  2.   `id_usuarios` int(11) NOT NULL AUTO_INCREMENT,
  3.   `usuario` varchar(45) COLLATE utf8_spanish2_ci NOT NULL,
  4.   `nombre` varchar(45) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  5.   `apellidoP` varchar(45) COLLATE utf8_spanish2_ci NOT NULL,
  6.   `apellidoM` varchar(45) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  7.   `curp` varchar(18) COLLATE utf8_spanish2_ci NOT NULL,
  8.   `email` varchar(45) COLLATE utf8_spanish2_ci NOT NULL,
  9.   `contraseña` varchar(45) COLLATE utf8_spanish2_ci NOT NULL,
  10.   PRIMARY KEY (`id_usuarios`),
  11.   UNIQUE KEY `curp_UNIQUE` (`curp`),
  12.   UNIQUE KEY `email_UNIQUE` (`email`),
  13.   UNIQUE KEY `contraseña_UNIQUE` (`contraseña`),
  14.   UNIQUE KEY `usuario_UNIQUE` (`usuario`)
  15. )
  16.  
  17.  
  18. CREATE TABLE `ideas` (
  19.   `id_idea` int(11) NOT NULL AUTO_INCREMENT,
  20.   `nombre` varchar(200) CHARACTER SET utf8 COLLATE utf8_spanish2_ci NOT NULL,
  21.   `area` varchar(45) COLLATE utf8_spanish_ci NOT NULL,
  22.   `photo` blob NOT NULL,
  23.   `descripcion` varchar(45) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  24.   `video` varchar(250) COLLATE utf8_spanish_ci NOT NULL,
  25.   `id_usuarios` int(11) NOT NULL,
  26.   `votar` double DEFAULT NULL,
  27.   PRIMARY KEY (`id_idea`),
  28.   UNIQUE KEY `area_UNIQUE` (`area`),
  29.   KEY `id_usuarios_idx` (`id_usuarios`)
  30. )[HIGHLIGHT="SQL"]
[/HIGHLIGHT]





Este es el jsp donde se extraen los datos para insertar la idea.




Código HTML:
<form id="formIdea" method="post" action="insertarVoto">
       
        
    
        <input type="text"  required title="Ingrese un nombre para su idea"  name="nombre"  placeholder="Nombre">
        </br>
    </br>
        
        <div class="row uniform">
        <div class="12u">
        <div class="select-wrapper">
	<select name="area" required title="Selecciona una área" id="category">
	<option value="">- Área -</option>
	<option value="Sistemas Computacionales ">Sistemas Computacionales</option>
	<option value="Tic´s">Tic´s</option>
        <option value="Gestion Empresarial">Gestión Empresarial</option>
	<option value="Arquitectura">Arquitectura</option>
        <option value="Electromecanica">Electromecanica</option>
	</select>
	</div>
	</div>
	</div>
        <br>
        <br>
        <div>
            <ul class="actions">
                <li>
                    <input type="file" class="button" name="photo" size="50" required title="Seleccione una imagen">
                </li>
            </ul>
        </div>
        <div class="row uniform">
	<div class="12u">
		<textarea name="descripcion" required title="Ingrese la descripción" id="message" placeholder="Descripcion" rows="6"></textarea>
	</div>
	</div>
        <br>
        <br>
        <div>
                <input type="text"  required title="Ingrese la URL de un video de Youtube"  name="video"  placeholder="Ingresa la URL de tu video de youtube">
        </div>
        <br>
        <br>
        [COLOR="red"]<input type="text" name="id_usuarios"  value="" > 
 en esta parte no se como obtener el id_usuario


[/COLOR]
        </br>
        </br>
    
        <br>
        <br>
            <div class="row uniform">
                <div class="12u">
                    <ul class="actions">
                        <li><input type="submit" value="Publicar" /></li>
                        <li><input type="reset" value="Reset" class="alt" /></li>
                    </ul>
                </div>
            </div>
        
    </form> 


Este es el servlet que manda a llamar el jsp.


Código:
public class InsertarImg extends HttpServlet {
	
	// database connection settings
	private final String dbURL = "jdbc:mysql://localhost:3306/db_proyecto?zeroDateTimeBehavior=convertToNull";
	private final String dbUser = "root";
	private final String dbPass = "12345";
	
    
    @Override
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// gets values of text fields
                
		String nombre = request.getParameter("nombre");
		String area = request.getParameter("area");
                String descripcion = request.getParameter("descripcion");
                String video = request.getParameter("video");
                String usu = request.getParameter("id_usuarios"); 

               Integer idusuario = Integer.parseInt(usu);
		
		InputStream inputStream = null;	// input stream of the upload file
		
		// obtains the upload file part in this multipart request
		Part filePart = request.getPart("photo");
		if (filePart != null) {
			// prints out some information for debugging
			System.out.println(filePart.getName());
			System.out.println(filePart.getSize());
			System.out.println(filePart.getContentType());
			
			// obtains input stream of the upload file
			inputStream = filePart.getInputStream();
		}
		
		Connection conn = null;	// connection to the database
		String message = null;	// message will be sent back to client
		
		try {
			// connects to the database
			DriverManager.registerDriver(new com.mysql.jdbc.Driver());
			conn = DriverManager.getConnection(dbURL, dbUser, dbPass);

			// constructs SQL statement
			String sql = "INSERT INTO ideas (nombre, area, photo, descripcion,video,id_usuarios) values (?, ?, ?, ?, ?, ?)";
			PreparedStatement statement = conn.prepareStatement(sql);
			
			statement.setString(1, nombre);
                        statement.setString(2, area);
			
			if (inputStream != null) {
				// fetches input stream of the upload file for the blob column
				statement.setBinaryStream(3, inputStream,(int) filePart.getSize());
			}
                        statement.setString(4, descripcion);
                        statement.setString(5, video);
                        statement.setInt(6, idusuario);

			// sends the statement to the database server
			int row = statement.executeUpdate();
			if (row > 0) {
				message = "Su idea fue insertada correctamente";
			}
		} catch (SQLException ex) {
			message = "ERROR: " + ex.getMessage();
		} finally {
			if (conn != null) {
				// closes the database connection
				try {
					conn.close();
				} catch (SQLException ex) {
				}
			}
			// sets the message in request scope
			request.setAttribute("Message", message);
			
			// forwards to the message page
			getServletContext().getRequestDispatcher("/idea_1_1.jsp").forward(request, response);
		}
	}
}
  #2 (permalink)  
Antiguo 26/02/2016, 11:52
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Obtener el id de inicio de sesion

En el servlet para guardar las sesiones se pone:
Código:
session=req.getSession(true);
Y yo luego lo que suelo hacer es que si al logearse, el usuario y contraseña que has puesto coincide con usuario y contraseña de la tabla pones estos atributos:
Código:
session.setAttribute("isLogin", "true");
session.setAttribute("sesion_idusuario", idusuario);
session.setAttribute("sesion_nombre", nombre);
...
Esto lo que hace es que si coincide lo de antes, al atributo isLogin o como quieras llamarlo lo pones en true y al atributo sesion_idusuario, le pones el valor de idusuario y así sucesivamente con los datos que quieras tener en la sesión.

Luego ya en el jsp puedes utilizar el atributo sesion_idusuario así:
Código:
<%=session.getAttribute("sesion_idusuario")%>
Por ejemplo yo para el header, cuando alguien se logea, suelo utilizar esto:
Código:
	<header>
		<%if((session!=null)&&
							(session.getAttribute("isLogin")!=null)&&
							(session.getAttribute("isLogin").equals("true"))){%>
			Usuario: <%=session.getAttribute("nombre")%>
			<a href="logout">Logout</a>
		<%}else{ %>
			No hay nadie logeado
		<%} %>
	</header>
  #3 (permalink)  
Antiguo 03/03/2016, 17:42
 
Fecha de Ingreso: febrero-2016
Mensajes: 2
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Obtener el id de inicio de sesion

Gracias por tu aporte, me sirvió de mucho.

Etiquetas: jsp
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 13:19.