Duda con java y struts

Iniciado por luismi_12, 12 Marzo 2014, 22:56 PM

0 Miembros y 1 Visitante están viendo este tema.

luismi_12

Hola buenas tengo una duda con Struts 2, vereis quiero mostrar los platos de un restaurante en una jsp, pero me he quedado un poco perdido.
Tengo esta jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="es">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title></title>
        <link href="css/bootstrap.css" rel="stylesheet">
        <link href="css/business-casual.css" rel="stylesheet">
    </head>
    <body>
        <ul class="nav navbar-nav">
            <li><a href="index.jsp">Inicio</a></li>
            <li><a href="restaurante.jsp">Restaurantes</a></li>
            <li><a href="menu.jsp">Menus</a></li>
            <li><a href="plato.jsp">Platos</a></li>
            <li><a href="login.jsp">Login</a></li>
        </ul>
    </body>
</html>

Que llama a este action
package actions;

import com.opensymphony.xwork2.ActionSupport;

import dao.FactoriaDAO;
import dao.PlatoDAO;
@SuppressWarnings("serial")
public class AccionObtenerPlatoCategoria extends ActionSupport{
    private int idPlato;
    private String nombre;
    private String descripcion;
    private String Categoria;
   
    public int getIdPlato() {
        return idPlato;
    }

    public void setIdPlato(int idPlato) {
        this.idPlato = idPlato;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getCategoria() {
        return Categoria;
    }

    public void setCategoria(String categoria) {
        Categoria = categoria;
    }

    public String execute(){
        try{
            PlatoDAO plato = (PlatoDAO) FactoriaDAO.getInterfacePlatoDAO();
            plato.obtenerplato();
            return SUCCESS;
        }
        catch (Exception e) {
            return ERROR;
        }
    }
}

Y de alli llamo a un DAO que es el que obtiene los datos
package dao;

import java.sql.ResultSet;
import java.util.ArrayList;

import beans.Plato;
import db.DBFacade;

public class PlatoDAO implements InterfacePlatoDAO{
    private DBFacade db = null;
    public PlatoDAO() throws Exception{
        try{
            db = new DBFacade();
        }
        catch (Exception e) {       
            throw new Exception(e);
        }
    }
    /**
     *
     */
    public ArrayList<Plato> obtenerplato() throws Exception{
        ResultSet consul = null;
        ArrayList<Plato>  plato = new ArrayList<Plato>();
        try {
            db.abrirConexion();
            String query = "select * from plato";
            consul = db.ejecutarConsulta(query);
            while(consul.next()){
                Plato plat = new Plato();
                plat.setIdPlato(consul.getInt("idPlato"));
                plat.setNombre(consul.getString("nombre"));
                plat.setDescripcion(consul.getString("descripcion"));
                plat.setCategoria(consul.getString("Categoria"));
                plato.add(plat);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally{
            try{
                db.cerrarConexion();
            }
            catch (Exception e1) {
                throw new Exception(e1);
            }
        }
        return plato;
    }
    /**
     *
     */
    public ArrayList<Plato> obtenerplatocategoria(Plato plato) throws Exception{
        ResultSet consul = null;
        ArrayList<Plato>  platos = new ArrayList<Plato>();
        try {
            db.abrirConexion();
            String Categoria = plato.getCategoria();
            String query = "select * from plato where categoria=="+Categoria;
            consul = db.ejecutarConsulta(query);
            while(consul.next()){
                Plato plat = new Plato();
                plat.setIdPlato(consul.getInt("idPlato"));
                plat.setNombre(consul.getString("nombre"));
                plat.setDescripcion(consul.getString("descripcion"));
                plat.setCategoria(consul.getString("Categoria"));
                platos.add(plat);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally{
            try{
                db.cerrarConexion();
            }
            catch (Exception e1) {
                throw new Exception(e1);
            }
        }
        return platos;
    }
}

Los datos los obtiene de la base de datos pero me he quedado un poco perdido sobre como mostrarlos en la JSP.

Mitsu

#1
Hola,

En con los tags de JSTL, en concreto el grupo core, tiene un tag llamado forEarch.

Antes debes de usar el tag <jsp:useBean> luego de importar JSTL:

Código (=java) [Seleccionar]

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<jsp:useBean name="beanplataodao" class="paquete.clase" scope="page"/>
<head lang="es">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
  Lista de platillos:
  <c:forEach var="plato" items="${beanplatodao.listaPlatos}">
      <c:out value="${plato}"/><br>
  </c:forEach>
</body>
</html>


Solo debes crear un bean o EJB que haga uso del DAO platoDAO. No olvides que debes de crear sus propiedades también, por ejemplo:

Código (=java) [Seleccionar]

public class BeanPlatoDAO {

   private Plato plato;
   private List<Plato> listaPlatos;
   private Connection conexion;
   private PlatoDAO platodao;

  public BeanPlatoDAO() {
    platodao = new PlatoDAO();
    conexion = Conexion.getConexion();
  }

  public List<Plato> getListaPlatos() {
    listaPlatos = new ArrayList<>();
    listaPlatos = platodao.getPlatos();
    return listaPlatos;
  }

  public Plato getPlato() {
  // codigo
  }

  // setters

}



Saludos.