29/08/2011, 21:42
|
| | Fecha de Ingreso: agosto-2011 Ubicación: Mendoza - Argentina
Mensajes: 4
Antigüedad: 13 años, 2 meses Puntos: 0 | |
Problema con servlet (.jsp) Gente estoy haciendo una pagina en "jsp" con "tomcat 6" y una BD MySQL.. todo anda joya.. el problema aparece cuando quiero usar un servlet (llamado subirArchivo) para subir una imagen a traves de un formulario (ver mas abajo).. Cuando envio el formulario al servlet me tira el siguiente error:
GRAVE: Servlet.service() para servlet jsp lanzó excepción
java.lang.NullPointerException at org.apache.jsp.admin.subir_005ffoto_jsp._jspServic e(subir_005ffoto_jsp.java:603)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.proces s(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11C onnectionHandler.process(Http11AprProtocol.java:57 9)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run( AprEndpoint.java:1555) at java.lang.Thread.run(Thread.java:619)
----------------------------------------------------------------------- A continuación les dejo lo que uso
----------------------------------------------------------------------- FORMULARIO
-----------------------------------------------------------------------
<FORM NAME="Sinfoto" enctype="multipart/form-data" method="POST" action="/subirArchivo">
<input type="file" accept="image/jpg" name="foto_in">
<input type="submit" name="botonSubir" value="Subir">
</FORM>
----------------------------------------------------------------------- SERVLET "subirArchivo"
-----------------------------------------------------------------------
package servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.tomcat.util.http.fileupload.*;
import java.util.*;
/**
*
* @author Blanckit0
*/
public class subirArchivo extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet</title>");
out.println("</head>");
out.println("<body>");
System.out.println("Comenzamos procesamiento ficheros");
procesaFicheros(request,out);
out.println("</body>");
out.println("</html>");
out.close();
}
void depura(String cadena)
{
System.out.println("El error es " + cadena);
}
public boolean procesaFicheros(HttpServletRequest req, PrintWriter out ) {
try {
// construimos el objeto que es capaz de parsear la perición
DiskFileUpload fu = new DiskFileUpload();
// maximo numero de bytes
fu.setSizeMax(1024*512); // 512 K
depura("Ponemos el tamaño máximo");
// tamaño por encima del cual los ficheros son escritos directamente en disco
fu.setSizeThreshold(4096);
// directorio en el que se escribirán los ficheros con tamaño superior al soportado en memoria
fu.setRepositoryPath("/tmp");
// ordenamos procesar los ficheros
List fileItems = fu.parseRequest(req);
if(fileItems == null)
{
depura("La lista es nula");
return false;
}
out.print("<br>El número de ficheros subidos es: " + fileItems.size());
// Iteramos por cada fichero
Iterator i = fileItems.iterator();
FileItem actual = null;
depura("estamos en la iteración");
while (i.hasNext())
{
actual = (FileItem)i.next();
String fileName = actual.getName();
out.println("<br>Nos han subido el fichero" + fileName);
// construimos un objeto file para recuperar el trayecto completo
File fichero = new File(fileName);
depura("El nombre del fichero es " + fichero.getName());
// nos quedamos solo con el nombre y descartamos el path
fichero = new File("c:/" + fichero.getName());
// escribimos el fichero colgando del nuevo path
actual.write(fichero);
}
}
catch(Exception e) {
depura("Error de Aplicación " + e.getMessage());
return false;
}
return true;
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
----------------------------------------------------------------------- CONFIGURACION WEB-INF/web.xml
-----------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>subirArchivo</servlet-name>
<servlet-class>servlet.subirArchivo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>subirArchivo</servlet-name>
<url-pattern>/subirArchivo</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
----------------------------------------------------------------------- Alguien sabe a que se puede deber? Desde ya muchas gracias! |