Java Server Pages (JSP)

Jesús Arias Fisteus
Curso 2007/2008


Introducción

Introducción

JSP como servlet

JSP ejemplo

<%@ page language='java' contentType='text/html;charset=iso-8859-1'%>
<%@ page import='java.util.Date' %>
<html>
  <head>
    <title>Hola Mundo</title>
  </head>
  <body>
    <p>Hola, esto es una página JSP.</p>
    <p>La hora del servidor es <%= new Date() %></p>
  </body>
</html>

JSP ejemplo transformado en un servlet

(...)
out.write("<html>\n ");
out.write("  <head>\n ");
out.write("    <title>Hola Mundo</title>\n ");
out.write("  </head>\n ");
out.write("  <body>\n    <p>Hola, esto es una página JSP.</p>\n ");
out.write("    <p>La hora del servidor es ");
out.print( new Date() );
out.write("</p>\n ");
out.write("  </body>\n");
out.write("</html>\n");
(..)

JSP ejemplo: documento recibido por el cliente

<html>
  <head>
    <title>Hola Mundo</title>
  </head>
  <body>
    <p>Hola, esto es una página JSP.</p>
    <p>La hora del servidor es Wed Nov 06 13:25:34 CET 2002</p>
  </body>
</html>

Comentarios en JSP

<%!-- Esto es un comentario JSP --%>

Directivas JSP: page

<%@ page language='java' contentType='text/html'
         isErrorPage='false' errorPage='error.jsp' %>

Otras directivas JSP

<%@ include file='footer.html' %>
<%@ page import='java.util.*' %>

Scriptlets

<%!-- los siguientes scriptlets son equivalentes --%> 
<%= user.getName() %>
<% out.println(user.getName()); %>

Scriptlets (aviso)

<% String text = new String(); %>

Scriptlets: ejemplo

<table>
  <tr><th>Product</th><th>Price</th></tr>
<%
  for (int i=0; i<catalog.length; i++ ) {
    ProductInfoBean product = catalog[i];
%>
  <tr>
    <td>
      <a href='<%= response.encodeURL("view?id=" 
                   + product.getId()) %>'>
        <%= product.getShortName() %>
      </a>
    </td>
    <td><%= product.getPrice() %> Euros</td>
  </tr>
<% } %>
</table>

Variables implícitas

javax.servlet.ServletContext application
javax.servlet.ServletConfig config
javax.servlet.jsp.JspWriter out
javax.servlet.jsp.PageContext pageContext
javax.servlet.http.HttpServletRequest request
javax.servlet.http.HttpServletResponse response
javax.servlet.http.HttpSession session

<%!-- Sólo en páginas marcadas con isErrorPage: --%>
java.lang.Throwable exception

Acciones: jsp:include

<jsp:include page='header.jsp'>
  <jsp:param name='title' value='Welcome' />
</jsp:include>

Acciones: jsp:forward

<jsp:forward page='list.jsp'>
  <jsp:param name='order' value='date' />
</jsp:forward>

Java Beans

Java Beans: ejemplo

public class UserInfoBean implements java.io.Serializable
{
  private String firstName;
  private boolean registered;

  public String getFirstName() {
    return firstName;
  }
  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }
  public boolean isRegistered() {
    return registered;
  }
  public void setRegistered(boolean registered) {
    this.registered = registered;
  }
}

Java Beans en JSP

<jsp:useBean id='user' class='foo.UserInfoBean' scope='session'>
  <jsp:setProperty name='user' property='name' value='Pepe' />
</jsp:useBean>

Java Beans en JSP: contextos (I)

La acción jsp:getProperty

<jsp:getProperty name='user' property='fullName' />

La acción jsp:setProperty

<jsp:setProperty name='user' property='firstName'
                 value='<%= request.getParameter("fisrtName") %>' />
<%!-- si 'firstName' es un parámetro de la petición --%>
<jsp:setProperty name='user' property='firstName' />
<%!-- todos los parámetros de la petición cuyo nombre 
      coincida con propiedades --%>
<jsp:setProperty name='user' property='*' />

Java Server Pages Tag Libraries

Algunas referencias