31/03/2006, 15:18
|
| | Fecha de Ingreso: agosto-2005
Mensajes: 72
Antigüedad: 19 años, 5 meses Puntos: 1 | |
este es mi servlet que carga ael archivo y lo agrega al servidor a la vez se debe guardar los datos en la base de datos, si no utilizo el metodo processRequest(request, response) funciona y se agregan los datos a la base de el problema es con el upload, me da el siguiente error :
edu.plantilla.admin.servlet.ServletNormativa; Mensaje:java.lang.NullPointerException
package edu.plantilla.admin.servlet;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import edu.plantilla.admin.dao.*;
import edu.plantilla.bean.*;
import edu.plantilla.util.*;
public class ServletNormativa extends HttpServlet{
private Connection getConnection() {
MySqlDBConn cnx = new MySqlDBConn();
return cnx.getConnection();
}
public void service(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String sTipo = request.getParameter("tipo");
String cod_normativa;
String cod_indicador;
String nom_normativa;
String dir_imagen_normativa;
BeanNormativa objEntidad = new BeanNormativa();
// --- Obtenemos el DAOFactory y luego el DAO especifico DAOFactory objDAOFactory=DAOFactory.getDAOFactory(DAOFactory. MYSQL);
NormativaDAO objNormativaDAO =objDAOFactory.getNormativaDAO();
try {
if (sTipo.equals("insertar")) {
cod_normativa= request.getParameter("cod_normativa");
cod_indicador= request.getParameter("cod_indicador");
nom_normativa= request.getParameter("nom_normativa");
dir_imagen_normativa= request.getParameter("dir_imagen_normativa");
objEntidad.setCod_indicador(cod_indicador);
objEntidad.setNom_normativa(nom_normativa);
objEntidad.setDir_imagen_normativa(dir_imagen_norm ativa);
System.out.println("LO QUE SE ESTÁ VIENDO Cod_indicador1 "+cod_indicador);
Lista objLista = null;
BuscaCodigo(request,response,objLista,cod_normativ a,nom_normativa,cod_indicador);
System.out.println("LO QUE SE ESTÁ VIENDO Cod_indicador5 "+cod_indicador);
//Inserta el Bean.
if(nom_normativa!=""){
System.out.println("Paso 1 Antes del METODO");
//***********llamo al metodo de upload para cargarlo e insertarlo a la base de datos
processRequest(request, response);
System.out.println("Paso 2 Despues del METODO");
objNormativaDAO.insertar(objEntidad);
}
else {
getServletContext().getRequestDispatcher("/msg.jsp?tipo=error&titulo=Cliente&descripcion=Erro r en el Proceso el numero de medida ingresado es vacio &continua=javascript:window.history.back()").forwa rd(request,response);
request.setAttribute("cod_indicador1",cod_indicado r);
//getServletContext().getRequestDispatcher("/medida.jsp").forward(request,response);
}
request.setAttribute("cod_indicador1",cod_indicado r);
getServletContext().getRequestDispatcher("/normativa.jsp").forward(request,response);
System.out.println("LO QUE SE ESTÁ VIENDO Cod_indicador1 "+cod_indicador);
} else if (sTipo.equals("actualizar")) {
//Captura los parametros que llegan de la Web.
cod_normativa= request.getParameter("cod_normativa");
cod_indicador= request.getParameter("cod_indicador");
nom_normativa = request.getParameter("nom_normativa");
dir_imagen_normativa = request.getParameter("dir_imagen_normativa");
//Llena el Bean
objEntidad.setCod_normativa(cod_normativa);
objEntidad.setCod_indicador(cod_indicador);
objEntidad.setNom_normativa(nom_normativa);
objEntidad.setDir_imagen_normativa(dir_imagen_norm ativa);
//Actualiza segun el Bean.
Lista objLista = null;//************************************
BuscaCodigo(request,response,objLista,cod_normativ a,nom_normativa,cod_indicador);//**************
if(nom_normativa!=""){
objNormativaDAO.actualizar(objEntidad);
}
if(nom_normativa==""){
getServletContext().getRequestDispatcher("/msg.jsp?tipo=error&titulo=Cliente&descripcion=Erro r en el Proceso debe ingresar el nombre del color &continua=javascript:window.history.back()").forwa rd(request,response);
}
System.out.println("Actualizar"+objNormativaDAO);
System.out.println("request.setAttribute cod_color "+cod_indicador);
request.setAttribute("cod_indicador1",cod_indicado r);
getServletContext().getRequestDispatcher("/normativa.jsp").forward(request,response);
}
else if (sTipo.equals("eliminar"))
{
cod_normativa = request.getParameter("cod_normativa");
objNormativaDAO.eliminar(cod_normativa);
getServletContext().getRequestDispatcher("/normativa.jsp").forward(request,response);
}
} catch (Exception e) {
response.sendRedirect(
"msg.jsp?tipo=error&titulo=Cliente&descripcion=Err or en el Proceso&continua=javascript:window.history.back()" );
System.out.println("Proyecto: "+ Parametros.S_APP_NOMBRE + "; Clase: "
+ getClass().getName()+ "; Mensaje:"+ e);
}
}
private void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String rootPath, uploadDirectory;
System.out.println("Paso 1 Antes del MENSAJE");
String nextPage = "/mensaje.jsp";
System.out.println("Paso 1 Antes del MENSAJE");
System.out.println("Paso 1");
StringBuffer mensaje = new StringBuffer();
System.out.println("Paso 2");
// --- directorio en el que se grabaran los archivos cargados
//uploadDirectory = "/archivosCargados/";
uploadDirectory = "/images/productos/";
System.out.println("Paso 3");
// --- ruta fisica en disco de la aplicacion web
rootPath = getServletContext().getRealPath("").toString();
System.out.println("Paso 4");
try {
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(1024 * 512); // --- 512 K
List fileItems = fu.parseRequest(request);
if (fileItems == null) {
mensaje.append("No existen archivos para ser cargados");
return;
}
mensaje.append("Carga exitosa <br>");
// --- Iteramos en el while por cada archivo enviado
Iterator i = fileItems.iterator();
FileItem actual = null;
while (i.hasNext()) {
actual = (FileItem) i.next(); //FileItem
if (actual.isFormField()) { //es cualquier objeto check,combo ,etc
String action;
String id = actual.getFieldName();
String value = actual.getString();
System.out.println("id: "+id);
System.out.println("value: "+value);
} else {
String fileName = actual.getName();
System.out.println("fileName " + fileName);
// --- validamos que el nombre del archivo no sea vacio
if (!fileName.trim().equals("")) {
// --- construimos un objeto file para recuperar la ruta
// completa
File archivo = new File(fileName);
mensaje.append("<br><br>El nombre del archivo es " + archivo.getName());
File directorio = new File(rootPath + uploadDirectory);
if (!directorio.exists()) {
directorio.mkdirs();
// --- ruta absoluta del archivo
archivo = new File(rootPath + uploadDirectory+ archivo.getName());
// escribimos el archivo
actual.write(archivo);
}
}
}
} catch (Exception e) {
mensaje.append("<br><br>Error de Aplicación " + e.getMessage());
}
request.setAttribute("mensaje", mensaje.toString());
System.out.println("mensaje"+ mensaje.toString());
}
private Lista BuscaCodigo(HttpServletRequest re, HttpServletResponse res, Lista objLista, String cod_normativa, String nom_normativa, String cod_indicador) throws Exception {
Lista objListaLN = new Lista();
BeanNormativa objEntidad = null;
String sql = "";
Connection conn = getConnection();
Statement stm = conn.createStatement();
DAOFactory objDAOFactory=DAOFactory.getDAOFactory(DAOFactory. MYSQL);
NormativaDAO objNormativaDAO =objDAOFactory.getNormativaDAO();
sql="select cod_normativa,nom_normativa,cod_indicador from tb_normativa where nom_normativa='"+nom_normativa+"' and cod_indicador='"+cod_indicador+"'";
ResultSet rst = stm.executeQuery(sql);
System.out.println("*************Aqui me da el setNom_producto del producto "+ sql) ;
while (rst.next()) {
objEntidad = new BeanNormativa();
objEntidad.setCod_normativa(rst.getString(1));
objEntidad.setNom_normativa(rst.getString(2));
objEntidad.setCod_indicador(rst.getString(3));
System.out.println("*************Aqui me da el setCod_normativa del normativa "+rst.getString(2)) ;
System.out.println("Aqui me da el setCod_indicador del normativa "+rst.getString(3)) ;
objListaLN.setElemento(objEntidad);
String coma = rst.getString(2);
String coma2 = rst.getString(3);
if((!coma.equals("") || coma!=nom_normativa || coma2.equals(cod_indicador))){
System.out.println(" el codigo ingresado es repetido " + coma );
System.out.println(" el codigo ingresado es repetido " + coma2 );
System.out.println(" el codigo ingresado es repetido " + coma2.equals(cod_indicador) );
HttpServletResponse response = null;
//getServletContext().getRequestDispatcher("/msg.jsp?tipo=error&titulo=Cliente&descripcion=Erro r en el Proceso el numero de normativa ingresado es repetido &continua=normativa.jsp").forward(re,res);
response.sendRedirect("msg.jsp?tipo=error&titulo=C liente&descripcion=Error en el Proceso&continua=javascript:window.history.back()" );
//System.out.println("este es el error toString " + e.toString());
}
}
rst.close();
stm.close();
conn.close();
return objListaLN;
}
} |