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.
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:
<%@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:
public class BeanPlatoDAO {
private Plato plato;
private List<Plato> listaPlatos;
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.