> Faqs > ingresar otros datos a parte de la ruta de imagen y el nombre, con jsp por medio del servlet

ingresar otros datos a parte de la ruta de imagen y el nombre, con jsp por medio del servlet

tengo programa JSP donde agrego la imagen del producto por medio de String... guardo la imagen en una carpeta que cree "img" dentro del Web Pages... todo bien!! hasta que al formulario le quiero agregar mas datos... no se como hacer para agregarlo a la lista!... tengo la base de datos MYSQL que tiene el id auto-incremento, nombre string, ruta string y codigo... y deseo agregarle más datos...!! El problea esta en el Servlet... el dato que tengo que no es file... esta asi p.setNombre(lista.get(0));... pero si agrego por ejemplo un codigo no se como agregarlo!! coloco el codigo!!

// ** LA ACCION GUARDAR ES LA QUE NO SE COMO REALIZAR!!!...

el servlet

     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
       String accion = request.getParameter("accion");
       
       Producto p=new Producto();
       ProductoDAO pdao=new ProductoDAO();
      
       switch(accion){
           case "Guardar":
               ArrayList<String>lista=new ArrayList<>();
               try {
                   //se capturan todos los datos del formulario 
                   FileItemFactory file=new DiskFileItemFactory();
                   ServletFileUpload fileUpload=new ServletFileUpload(file);
                   List items=fileUpload.parseRequest(request);  
                   //recorremos mediante un for
                   for (int i = 0; i < items.size(); i++) {
                       FileItem fileItem=(FileItem)items.get(i);
                       if(!fileItem.isFormField()){ //capturar el campo que cague el archivo
                            File f=new File("D:\\NetBeansProjects\\ecommerce\\web\\img\\" + fileItem.getName());
                            
                            fileItem.write(f); 
                            p.setRuta("img\\"+ fileItem.getName());
                            
                       }else{
                           lista.add(fileItem.getString());
                       }
                   }
                   p.setNombre(lista.get(0));
                   // ACA ES DONDE AGREGO LOS DEMAS DATOS PERO NO SE COMO HACER... 
                   pdao.Agregar(p);
               } catch (Exception e) {
                   System.err.println("Error" + e);
               }
                request.getRequestDispatcher("Controlador.do?accion=Listar").forward(request, response);
               break;
           case "Listar":
               
                productos=pdao.listarProducto();
               request.setAttribute("productos", productos);
               request.getRequestDispatcher("index.jsp").forward(request, response);
               break;
           default: 
                 request.getRequestDispatcher("index.jsp").forward(request, response);
       }
    }

en el dto tengo

public class Producto {
    private int id;
    private String nombre;
    private String ruta;
 
 /* deseo agregarle codigo y descripcion
 controlador vacio y lleno
 
 getter y setter
 }
  en el dao
  
   public int agregar(Producto p){
        conexion cn=new conexion();
        String sql="INSERT INTO imagen(nombre,ruta) VALUES(?,?)";
        try {
            con=cn.getConnection();
            ps=con.prepareStatement(sql);
            ps.setString(1, p.getNombre());
            ps.setString(2, p.getRuta());
            ps.executeUpdate();
        } catch (Exception e) {
            System.out.println("Error" + e);
        }
        return r;
    }
    public List<Producto>listar(){
        conexion cn=new conexion();
        String sql="SELECT * FROM imagen";
        List<Producto>lista=new ArrayList<>();
        try {
            con=cn.getConnection();
            ps=con.prepareStatement(sql);
            rs=ps.executeQuery();
            while(rs.next()){
                 Producto p=new Producto();
                 p.setId(rs.getInt(1));
                 p.setNombre(rs.getString(2));
                 p.setRuta(rs.getString(3));
                 lista.add(p);
            }
        } catch (Exception e) {
            System.out.println("Error" + e);
        }
        return lista;
    }
    

este es el index... lo realizo con bootstrap

 <div class="container mt-4">
            <form action="Controlador.do?accion=Guardar" class="col-md-6" method="POST" enctype="multipart/form-data">
                <div class="card">
                <div class="card-header">
                    <h3>Agregar Imagenes</h3>
                </div>
                <div class="card-body">
                    
                    <div class="form-group">
                        <label>Nombre del Producto:</label>
                        <input type="text" name="txtNombre" class="form-control">
                    </div>
                    <div class="form-group">
                        <label>Imagen:</label>
                        <input type="file" name="fileImagen" >
                    </div>
                        
                </div>
                <div class="card-footer">
                    <button class="btn btn-outline-primary" name="accion">Guardar Imagen</button>
                </div>
            </div>
                
            </form>
            
    
            <table class="table">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>NOMBRE</th>
                        <th>IMAGEN</th>
                        <th>ACCIONES</th>
                    </tr>
                </thead>
                <tbody>
                    <c:forEach var="p" items="${productos}">
                    <tr>
                        <td>${p.getIdProducto()}</td>
                        <td>${p.getNombre()}</td>
                        <td><img src="${p.getRuta()}" height="50" width="50"/></td>
                    
                        <td>
                            <a>Editar</a>
                            <a>Eliminar</a> 
                        </td>
                    </tr>
                    </c:forEach>
                    
                </tbody>
            </table>
    
        </div>
Responder la pregunta
Editar Hacer otra preguntaPreguntar

Respuestas

Todavía no se han recibido respuestas a esta pregunta. ¿Quieres enviar la primera?