Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luar79

#1
Muy buenas,


estoy tratando de pasar las variables recogidas en una consulta MySql en un servlet a un JSP. Pero probando de dos formas en ambas acaba dandome un error java.lang.NullPointerException.

Lo que trato de hacer es cuando dan al boton modificar cargue una servlet donde recojera la fila a modificar segun su Id (hasta aqui no hay problema). Despues esa servlet se encargara de enviar los datos de esa fila en un fomulario a un JSP para que el usuario pueda modificar sobre cada campo que quiera modificar. Y cuando pulse el boton actualizar del JSP cargara otra servlet donde finalmente actualizara los registros.

Utilizando en el primer servlet un response.sendRedirect(url+variable)--->al pasar al JSP da el error que recibe un valor null al recoger en request.getParameter(). (aqui veo como en la url por get se lee perfectamente la variable ..)


Y si utilizo la otra forma con request.getRequestDispatcher("update.jsp"); ya me da erro de valor null al entrar en la misma primera servlet. (aqui declaro setAttribute() y finalizo con un forward())


Agredeceria ideas  porque le he dado muchas vueltas a ver donde envia un valor null

Pego el codigo, gracias:


Código (java) [Seleccionar]
SERVLET:


package Imagenes;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;

/**
*
* @author Raul
*/
@WebServlet(name = "update", urlPatterns = {"/update"})
public class update extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

int Id = Integer.parseInt(request.getParameter("Id"));

PrintWriter out = response.getWriter();

try {
String d = "com.mysql.jdbc.Driver";
Class.forName(d);
String sURL = "jdbc:mysql://localhost:3306/imagenes";
Connection Conexion;
Conexion = DriverManager.getConnection(sURL, "root", "oldViews17");
Statement misentencia;
ResultSet rs;
misentencia = Conexion.createStatement();

rs = misentencia.executeQuery("SELECT * FROM imagenes where Id=" + Id);
while (rs.next()) {
String nombre = rs.getString("Nombre");
String descripcion = rs.getString("descripcion");

/*request.setAttribute("nombre", nombre);
RequestDispatcher rd = request.getRequestDispatcher("update.jsp");
rd.forward(request, response);*/
response.sendRedirect("http://localhost:8080/SubirImagenes/update.jsp?nombre=" + nombre);

}
Conexion.close();
} catch (SQLException ex) {

} catch (ClassNotFoundException ex) {

}

}
}







JSP:




<%@page import="Imagenes.*" %>
<%@page import="java.sql.*" %>
<%@page import="java.io.*" %>
<%@page import="javax.servlet.http.*" %>
<%@page import="javax.imageio.ImageIO" %>
<%@page import="javax.servlet.ServletOutputStream" %>
<%@page import="java.awt.image.BufferedImage" %>

<jsp:setProperty name="imagen" property="*" />

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<HTML ><HEAD><TITLE>oldViews</TITLE><META charset='utf-8'/><link rel='stylesheet' type='text/css' href='http://192.168.4.144/Styles/style.css'/></HEAD><BODY><HEADER><H1>Mostrar Imagenes</H1></HEADER><H2>Imagenes</H2><SECTION id='content'>

<form action="http://localhost:8080/SubirImagenes/updateOk" method="Post">
<TABLE><TR><TH >Nombre</TH><TH >Descripcion</TH><TH colspan='3'>FOTO</TH></TR>


<%
// String nombre = (String) request.getAttribute("nombre") ;

String nombre=request.getParameter("nombre");

%>
<tr>

<td ><input type="text" value="<%=nombre %>"</td>

<td ><img src="http://localhost:8080/SubirImagenes/select?Id=<%=nombre%>" width="190px" height="100px" align="right"></td></tr>

</table>
<input type="submit" value='Modificar'>
</form>

</body>
</html>



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex
#2
Buenas!

Vereis estoy creando un backend, y mi intención es crear en cada fila de una tabla un checkbox que si lo selecciona el usuario y confirma en borrar se elimine esa fila. Para identificar que fila se selecciono a traves del checkbox se me ha ocurrido indicar en el atributo name el ID que tiene asignado cada fila en la BBDD.

EL problema lo tengo al comprobar dentro de un if que reciba que ID ha sido seleccionado. SI lo hago con un isset me da error de que el index is offset. Y si lo ejecuto como muestro en el codigo que adjunto en el mensaje, eliga el checkbox que eliga empieza siempre eliminando la última fila:

Código (php) [Seleccionar]
$registros=mysqli_query($conexion,"select * from usuarios")or
die("Problemas en el select:".mysqli_error($conexion));
while($reg=mysqli_fetch_array($registros))
{ $ID=$reg['ID'];
echo $ID;
$login=$reg['NombreUsuario'];


echo "<form method='post' action='BBDD_usuarios.php' enctype='multipart/form-data'>";
echo "<input type='checkbox' name='$ID' >&nbsp";




mysqli_close($conexion);
echo "<form method='post' action='BBDD_usuarios.php' enctype='multipart/form-data'>";
echo "<input type='submit' name='borrar' value='borrar'>" ;
echo "</form>";
$borrar=$_REQUEST['borrar'];

if ($borrar){
$conexion=mysqli_connect("localhost","root","","usuarios")or die("Problemas con la conexión");

$registros=mysqli_query($conexion,"select * from usuarios")or
die("Problemas en el select:".mysqli_error($conexion));


if($_POST[$ID]=true){
echo "hola";
$selecc=$_POST[$ID];
echo $selecc;


mysqli_query($conexion,"delete from usuarios where id='.$selecc.'") or
die("Problemas en el delete:".mysqli_error($conexion));
echo "<form method='post' action='BBDD_usuarios.php' enctype='multipart/form-data'>";
}

mysqli_close($conexion);
}



Gracias de antemano por la ayuda!


Mod: Los códigos deben ir en etiquetas GeSHi