Desarrollo de Servlets y Páginas JSP: Fundamentos y Aplicaciones

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 11,31 KB

Introducción a los Servlets

El servlet es una clase en el lenguaje de programación Java, utilizada para ampliar las capacidades de un servidor. Aunque los servlets pueden responder a cualquier tipo de solicitudes, estos son utilizados comúnmente para extender las aplicaciones alojadas por servidores web.

Ejemplo de Servlet

public class HolaMundoServlet extends HttpServlet {

    /**
     * Servlet de ejemplo que procesa una petición GET
     * @param request Objeto HttpServletRequest que contiene la petición del cliente.
     * @param response Objeto HttpServletResponse que contiene la respuesta del servidor.
     * @throws ServletException Si ocurre un error relacionado con el servlet.
     * @throws IOException Si ocurre un error de entrada/salida.
     */
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println(""-//W3C//DTD HTML 4.0 Transitional//EN\">");
        out.println("");
        out.println("Ejemplo Hola Mundo");
        out.println("");
        out.println("

¡Hola Mundo!

"); out.println(""); } }

Todo Servlet debe implementar la interfaz servlet (manejo de vida).

Configuración del Servlet en web.xml

<servlet>
    <servlet-name>HolaMundo</servlet-name>
    <servlet-class>HolaMundoServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>HolaMundo</servlet-name>
    <url-pattern>/saludo</url-pattern>
</servlet-mapping>

Ciclo de Vida de un Servlet

  1. Si no existe ninguna instancia del servlet:
    1. Carga la clase del servlet.
    2. Crea una instancia.
    3. Inicializa la instancia invocando al método init().
  2. Invoca al método service() pasando el objeto request y el objeto response.

Para finalizar el servlet se invoca al método destroy().

El trabajo habitual de un método de servicio es:

  • Extraer información del pedido.
  • Acceder a recursos externos.
  • Generar una respuesta.

Páginas JSP (JavaServer Pages)

Una página JSP es un documento de texto que contiene dos tipos de texto:

  • Información estática: que puede ser expresada en cualquier formato basado en texto (ej: HTML, WML, XML). También se lo conoce como template text.
  • Elementos JSP: que construyen contenido dinámico. Estos elementos JSP pueden ser expresados de dos formas (sintaxis): estándar o XML. Se abordará aquí la forma estándar. Una página JSP con sintaxis XML es un documento XML que puede ser manipulado por APIs y herramientas para manejo de XML.

Tipos de Elementos JSP

  • Directivas (directives): especifican información acerca de la página que se mantiene igual a lo largo de todos los pedidos.
  • Acciones (actions): permite realizar alguna acción basado en información al momento de hacer el pedido.
  • Scriplets (scripting): permiten incorporar código Java dentro de una página JSP.

Sintaxis de Elementos JSP

  • <jsp:useBean> Permite utilizar un JavaBean desde la página JSP.
  • <jsp:getProperty> Permite obtener el valor de una propiedad del JavaBean.
  • <% ... %> Se denomina scriplet (surge de scripting element) y permite colocar código Java dentro.
  • <%= ... %> Expresión: permite incorporar una expresión que es evaluada y su resultado (en string) es incorporado a la salida HTML.
  • <%! ... %> Declaración: permite incorporar una declaración a ser utilizada por los scriplets.

EL (Expression Language)

Dicho lenguaje permite a los autores de páginas JSP (particularmente a quienes no son programadores) escribir expresiones relativamente sencillas para dinámicamente leer valores de un JavaBean y/o establecer valores de atributos de acciones basados en datos recolectados en tiempo de ejecución.

Estas expresiones permiten potenciar el poder de las acciones JSP, ya sean las acciones estándar o las incluidas en JSTL (Java Standard Tag Library).

Dicho lenguaje (EL) contiene características similares a JavaScript.

Una expresión EL comienza con los caracteres "$" y termina con el carácter .

Ejemplo de uso de una expresión EL para el seteo de un atributo de un JavaBean (el uso de JavaBeans será abordado más adelante):

<someTag scope="session"></someTag>

<someTag value="${expresionEL}" />

Para que las expresiones EL puedan ser interpretadas y su resultado pueda ser devuelto al browser en forma de HTML, el atributo isELIgnored de la directiva @page debe estar habilitado.

De no estarlo, las expresiones EL se mostrarán como texto plano en la página JSP.

Uso:

Por defecto, las expresiones EL están habilitadas (es decir con el valor false).

Tanto la traducción como la compilación pueden producir errores que son observados cuando la página sea solicitada por primera vez.

Frente a estos errores, el servidor lanza una JasperException

•La nueva clase Java resultante de la traducción contiene los métodos:

public void _jspInit()

public void _jspService(HttpServletRequest,

HttpServletResponse)

public void _jspDestroy()

•Estos métodos son los análogos a los vistos para servlets (pues de hecho se ejecutará como servlet).

•El siguiente código es un extracto (a modo de ejemplo) del método _jspService(…) para una página JSP que solicita el login del usuario…

El

•Requiere evaluaciónde expresión.

•El interprete de JSP debe detectar inicio y fin de la expresión para evaluarla.

•Existen dos tipos de sintaxis:

1.- Inmediata: ${expr}, la expresión es evaluada en tiempo de renderizado de la página. El código JSP se ejecuta de arriba hacia abajo. El signo de dólar y las llaves indican los límites de la expresión EL. Todo dentro de las llaves será evaluado. Si se requiere mostrar algo que presenta la misma sintaxis al usuario se debe usar el caracter de escape \, como se muestra: \${Mensaje},de esta manera no será evaluada. Igualmente se puede usar el caracter de escape $ en lugar del \$, o el \ en lugar del \.

•Simplemente las podemos usar en cualquier lugar del JSP, con algunas pocas excepciones.

•Para empezar no la podemos usar en las directivas




ya que se interpretan en compilación.

  • No se permiten tampoco en declaraciones , scriptlets o expresiones , si se llega a usar pudiera ser ignorada o dar problema de sintaxis. Exceptuando lo anterior puede ser usada en cualquier lugar del JSP.
  • Pueden usarse embebido en atributos html estandar.Y en atributos JSP, por ejemplo:



•Las EL están hechas para evaluar algún valor, no pueden usarse para declarar variables, o realizar algún tipo de asignación (versiones anteriores a la 3.0) o evaluación que no resulte en algún valor. Están hechas para crear JSP sin Java, no para reemplazarlo.

Palabras reservadas: true, or, false, not, null, eq, instanceof, ne, empty, lt, div, gt, mod, le, and, ge.

empty: Se usa para evaluar si una coleccion, map o arreglo contiene valores. ${empty x}

Equivalencia de operadores y funciones:



$(function(){

alert("cargando...");

})


Java Server Faces

•Es un framework o modelo estándar para componentes de presentación a nivel del
servidor para aplicaciones Web.

•Es parte de la especificación JEE.

•Reúne un conjunto de buenas prácticas aplicadas al patrón de diseño MVC.

•Versiones previas a la 2.0 usaban JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas.

•A partir de la versión 2.0 usan facelets.

La especificación para la versión actual 2.2 esta en el JSR 344

  1. Impone un MVC de capa Web con Front-Controller
  2. Manejo de interfaz similar a Swing
  3. Componentes compuestos por otros
  4. Permite modificar la apariencia de los componentes
  5. Define conjunto básico de componentes de UI (User Interface)
  6. Maneja el estado de los componentes de UI
  7. Integrado en los servidores de aplicaciones Java.
  8. Completo soporte para Ajax.
  9. Soporte internacionalización i18n y accesibilidad a11y.
  10. Previenen el Crossite Scripting XSS (v2.2.6+).

Soporte a etiquetas HTML 5 (v2.2).

  1. Ciclo de vida rico compuesto por 6 fases
    1. Restore View: Construcción de la vista.
    2. Apply Request Values: Extracción de parámetros.
    3. Process Validations: Procesa validaciones.
    4. Update Model Values: Asigna los parámetros a los objetos del servidor.
    5. Invoke Application: Realiza submits o llama hace links a otras páginas.
    6. Render Response: Realiza el renderizado de la vista.
  2. Posee un modelo de programación guiado por eventos
  3. Define un estándar de navegación entre páginas
  4. Estandariza la validación de componentes

Estandariza la conversión entre String y otros tipos de datos

Son Java Beans intermediarios entre páginas JSF y lógica liviana, guardan y comparten datos entre la vista y el modelo.

Application @ApplicationScope

– Los beans son visibles por todos los request/response de todos los clientes que utilicen la aplicación mientras esté activa

Session @SessionScope

– Los beans son visibles para cualquier request/response que pertenezca a la sesión web de un usuario

Request @RequestScope
– Los beans son visibles desde que comienza un request hasta que termina con un response

View @ViewScope
– Los beans son visibles por todos los request/response de todos los clientes que utilicen la vista actual mientras esté activa

None
– Los beans no son visibles por ninguna página
– Utilizados cuando un bean utiliza otro bean

Entradas relacionadas: