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>