En nuestro post anterior vimos un Java Servlet en acción. El uso de servlets hacen fácil que podamos acceder a parámetros, cookies, y otros recursos en el servidor. Pero al momento de generar una respuesta (HTML) se vuelve tedioso rápidamente.
JavaServer Pages (JSP) es la solución para este problema. Una pagina JSP nos permite incrustar código Java en un documento HTML. Este es un concepto usado en otras tecnologÃas, como son Active Server Pages (ASP) y PHP.
Una pagina JSP es en realidad un servlet. Cuando la pagina JSP es solicitada por primera vez, un compilador JSP analiza la pagina y genera un servlet para procesar la solicitud. Cualquier llamada posterior es procesada por el servlet.
En este post vamos a generar la misma pagina web del post anterior, pero en esta ocasión usaremos una pagina JSP en lugar de un servlet.
Abre el proyecto que creamos en el post anterior o crea un nuevo proyecto en NetBeans. Si eliges crear un proyecto nuevo, necesitaras las dos clases de la capa de negocios del proyecto anterior.
La primera clase es ServletSample.Business.Product.
package ServletSample.Business; public class Product { private int id; private String name; private float price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public Product(){ this.id = -1; this.name = ""; this.price = 0f; } public Product(int id, String name, float price) { this.id = id; this.name = name; this.price = price; } }
La segunda clase es ServletSample.Business.ProductService.
package ServletSample.Business; import java.util.List; import java.util.ArrayList; public class ProductService { public List<Product> getProducts(){ List<Product> products = new ArrayList<Product>(); products.add(new Product(1,"HP Laptop",799f)); products.add(new Product(2,"IBM Desktop",599f)); products.add(new Product(3,"Cannon Printer",159f)); return products; } public Product getProduct(int id) { Product product = null; switch(id) { case 1: product = new Product(1,"HP Laptop",799f); break; case 2: product = new Product(2,"IBM Desktop",599f); break; case 3: product = new Product(3,"Cannon Printer",159f); break; } return product; } }
Ahora vamos a crear una nueva pagina JSP. Haz clic derecho en el proyecto -> Nuevo -> JSP.
Nombra el nuevo archivo product. Haz clic en Terminar (Finish).
Cambia el contenido de la nueva pagina al siguiente.
<%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ page import="ServletSample.Business.Product" %> <%@ page import="ServletSample.Business.ProductService" %> <%@ page import="java.text.DecimalFormat" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Sample</title> </head> <body> <% ProductService service = new ProductService(); String value = request.getParameter("id"); if (value != null) { int id = Integer.parseInt(value); Product product = service.getProduct(id); %> <h1>Product Details</h1> <div>ID: <%= product.getId()%></div> <div>Name: <%= product.getName()%></div> <div>Price: $ <%= new DecimalFormat("#0.00").format(product.getPrice()) %></div> <div><a href="product.jsp">Go Back</a></div> <% } else { %> <h1>Product List</h1> <table> <tr> <td><b>Name</b></td> <td><b>Options</b></td> </tr> <% for (Product product : service.getProducts()) {%> <tr> <td><%= product.getName()%></td> <td><a href="product.jsp?id=<%= product.getId()%>">Details...</a></td> </tr> <% } }%> </table> </body> </html>
A primera vista la pagina parece una pagina HTML, pero con la ayuda de algunas directivas, es posible mezclar código Java.
Primero usamos la directiva <%@ page %> para establecer el atributo contentType de la pagina y para importar clases Java.
Con la directiva <% %> podemos ejecutar cualquier código Java. Declaramos variables, leemos un parámetro, definimos un block if-else y un ciclo for.
Finalmente, la directiva <%= %> es capaz de evaluar una expresión y enviar el resultado directamente a la respuesta HTML. Observa que no es necesario usar punto y coma (;) con esta directiva.
Ejecuta el proyecto. Escribe product.jsp al final de la URL.
Cada vinculo es un vinculo a la pagina JSP misma con el parámetro correspondiente al producto. Haz clic en uno de los vÃnculos.
Los detalles del productos son mostrados. Haz clic en el vinculo para regresar a la lista de productos.
Por favor deja tus comentarios.