Java - Problema a recoger variables pasadas de servlet a JPS

 
Vista:
sin imagen de perfil

Problema a recoger variables pasadas de servlet a JPS

Publicado por Luar79 (5 intervenciones) el 23/01/2017 11:42:20
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Problema a recoger variables pasadas de servlet a JPS

Publicado por Luar79 (5 intervenciones) el 25/01/2017 11:57:31
Nadie una pequeña idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema a recoger variables pasadas de servlet a JPS

Publicado por Carlos (11 intervenciones) el 26/01/2017 19:19:15
Prueba de la siguiente manera, para el servlet:
HttpSession session = request.getSession(true);
session.setAttribute("nombre", nombre);

y en el JSP recibe así :
<%=session.getAttribute("nombre")%>

comprueba también de que se conecte a la base, osea, de que tu Connection no sea null.

Te ayudaría bastante si lo haces por medio de un IDE y pruebas con Debug para ver cual es el valor que te da null.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema a recoger variables pasadas de servlet a JPS

Publicado por Luar79 (5 intervenciones) el 26/01/2017 20:54:20
Muchas gracias por el aporte :)

Lo he probado pero sigue pasando.

Con el debugger en netbeans construye sin errores.

Haciendo pruebas y aislando el error lo localizo cuando esta incluido:

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

Osea sin estas dos lineas el codigo si que recoge bien la variable( lo he probado mostrandola por pantalla).

Yo sinceramente no entiendo si la variable nombre no esta vacia en la servlet en que momento al mostrarla en el jsp se convierte en null :O
No se que opinaras de esto compañero? :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema a recoger variables pasadas de servlet a JPS

Publicado por Carlos (11 intervenciones) el 26/01/2017 21:06:39
Tu variable no se puede convertir a null, si cuando recoges e imprimís te arroja un resultado es porque ya está cargada, hace el paso de la siguiente manera:
response.setHeader("Cache-Control","no-store");
request.getRequestDispatcher("update.jsp").forward(request, response);

no le pongas la barra antes del nombre de tu jsp. Y vemos que pasa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema a recoger variables pasadas de servlet a JPS

Publicado por Luar79 (5 intervenciones) el 26/01/2017 21:12:06
Acabo de probarlo pegando tal cual el codigo y sigue pasando.

Recojo en el jsp en <input type="text" value="<%=session.getAttribute("nombre")%>

Te agradezco los aportes, alguna idea?

:)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar