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

Problema a recoger variables pasadas de servlet a JPS

Estas en el tema de Problema a recoger variables pasadas de servlet a JPS en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/01/2017, 07:51
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Problema a recoger variables pasadas de servlet a JPS

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:


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>
  #2 (permalink)  
Antiguo 25/01/2017, 04:56
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Problema a recoger variables pasadas de servlet a JPS

Nadie una pequeña idea de lo que pasa? :)

La verdad esque es extrañisimo, porque revisando inumerables tutoriales estoy poniendo tal cual como deberia funcionar.
El mapeo a la servlet va correctamente y ahora he reducido el codigo al minimo encontrando que el fallo esta ó en el setAttribute ó en el requestDispatcher:


protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


String nombre="hecho";
request.setAttribute("nombre", nombre);
request.getRequestDispatcher("/update.jsp").forward(request, response);
}
  #3 (permalink)  
Antiguo 25/01/2017, 05:30
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Problema a recoger variables pasadas de servlet a JPS

Vale. solucionado.

El orden de los factores si que altera el producto XD

El setAttribute va despues del requestDispatcher:

RequestDispatcher rd = request.getRequestDispatcher("/update.jsp");
request.setAttribute( "nombre", nombre);
rd.forward(request, response);

Etiquetas: imagenes, jsp, recoger, servlet, set, string, variables
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 04:13.