Sesión 2: Construcción de aplicaciones web usando Java
Definiciones y Ejemplos
Servlet: Son módulos escritos en Java que se utilizan en un servidor, que puede ser o no ser servidor web, para extender sus capacidades de respuesta a los clientes al utilizar las potencialidades de Java.
Referenias bibliográficas:
Arquitectura de n capas | El Ciclo de Vida (Servlet) | Java Servlet | directivas JSP
Servlet: Son módulos escritos en Java que se utilizan en un servidor, que puede ser o no ser servidor web, para extender sus capacidades de respuesta a los clientes al utilizar las potencialidades de Java.
- Ciclo de vida:
- Un servidor carga el servlet.
- Posteriormente, inicializa el servlet.
- El servlet maneja cero o más peticiones de cliente.
- El servidor elimina el servlet.
| Actividades del cliclo de vida del servlet |
- Métodos básicos:
- init(): Se ejecuta unicamente cuando se carga el servlet (una única vez).
- service(): Se ejcuta en respuesta a las peticiones del cliente (get, post, put, delete, etc).
- destroy(): Se invoca cuando el servlet es "desechado". Utilizado para hacer limpieza.
- doGet() y doPost(): Métodos idénticos excepto que uno atiende las peticiones GET y el otro las POST respectivamente. Son refinamientos del método service() en los HttpServlets.
- Estructura:
@WebServlet(name = "NewServlet", urlPatterns = {"/NewServlet"})
public class EjemploServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet EjemploServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet EjemploServlet at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
public void init(ServletConfig config) throws ServletException{
super.init(config);
}
public void destroy(){
System.out.println("Servlet desechado!");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Descripción del servlet";
}
}
- HTTPSession: Otro mecanismo de los servlets corresponde con el uso de session, el cual es utilizado para mantener el estado sobre la serie de peticiones desde un mismo usuario (peticiones originadas desde un mismo navegador) durante un periodo de tiempo. Para utlizar el seguimiento de sesión se debe: obtener una sesión (objeto HttpSession) para un usuario, almacenar u obtener datos desde el objeto HttpSesion, y de manera opcional, invalidar la sesión.
- Obtener una sesión:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession miSesion = request.getSession();
miSesion.getId(); // Obtiene el código único de ID
}
- Almacenar y recuperar la sesión:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession miSesion = request.getSession();
miSesion.setAttribute("llave", "Mensaje que envio");
String recibo = (String) miSesion.getAttribute("llave");
}
- Invalidar una sesión:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession miSesion = request.getSession();
miSesion.setAttribute("llave", "Mensaje que envio");
String recibo = (String) miSesion.getAttribute("llave");
miSesion.invalidate();
}
Java Server Pages - JSP: Componentes basados en
la tecnología de servlets que permiten la separación de la parte
dinámica de las páginas web del HTML estático. Estos invocan JavaBeans,
EJB's y XML.- Ciclo de vida:
| Ciclo de vida de las JSP |
- Elementos Script: Permiten insertar código java dentro del servlet que se generá desde la página JSP. Existen 3 manera de hacer esto: expresiones, scriplets y declaraciones.
- Expresiones: Permite insertar valores Java directamente en la salida. Tienen la forma: <%= expresión Java %>
- Ejemplo:
<%= new java.util.Date() %> // No se incluye ";" al final
- Sintáxis en XML: <jsp:expression> Expresión Java </jsp:expression>
- Scriplets: Permite insertar código arbitrario dentro de la estructura de las páginas JSP's. Tienen la forma: <% código Java %>
- Ejemplo:
<%
String queryData = request.getQueryString();
out.println("Adjuntando GET data: " + queryData);
%>
// Si se incluye ";" al final de cada sentencia
- Sintáxis en XML: <jsp:scriptlet> Código Java </jsp:scriptlet>
- Declaraciones: Permite definir métodos o campos que serán insertados dentro del cuerpo principal de la clase servlet. Tienen la forma: <%! código Java %>
- Ejemplo:
<%! private int accesos = 0; %> Cantidad de accesos: <%= ++ accesos %>
- Sintáxis en XML: <jsp:declaration> código </jsp:declaration>
- Directivas: Etiquetas a partir de las cuales se genera información que puede ser utilizada por el motor de JSP. No producen una salida visible al usuario sino que configura cómo se ejecutará la página JSP. Empiezan con la secuencia <%@ y terminan con %>. Existen 3 tipos: page, include y taglib.
- page: Permite definir uno o más de los siguientes atributos:
- import: Permite especificar los paquetes que deberían ser importados.
Ejemplo: <%@ page import="java.util.*" %>
- session: Se basa en 2 atributos. true: indica
que la variables predefinida session debería unirse a la sesión
existente si existe una, y si no existe se debería crear una nueva
sesión para unirla. false: indica que no se usarán sesiones.
Ejemplo: <%@ page session="false" %>
- info: Define un string que puede unirse para ser recuperado mediante el método getServletInfo() desde un servlet u otra JSP.
Ejemplo: <%@ page info="message" %>
- errorPage: Especifíca la página JSP que se debería procesar si se lanzara cualquier Throwable en la página actual.
Ejemplo: <%@ page errorPage="/URL" %>
- isErrorPage: Indica si la página actual actúa o no como página de error de otra página JSP. El valor por defecto es false.
Ejemplo: <%@ page isErrorPage="true" %>
- include: Permite incluir ficheros en el momento en que la página JSP es traducida a un servlet.
Ejemplo: <%@ include file="/URL relativa" %>
- include: Incluye el contenido de un fichero en la página mediante el atributo file.
Ejemplo: <%@ include file="cabecera.html" %>
- taglib: Importa bibliotecas de etiquetas (Tag Libraries).
Ejemplo: <%@ taglib uri="/tags/struts-html" prefix="html" %>
- Acciones: Las acciones JSP usan construcciones de sintaxis XML para controlar el comportaniento del motor de servlet. Se pueden utilizar para insertar un fichero dinámicamente, reutilizar componentes JavaBeans o bien, reenviar al usuario a otra página o generar HTML para el plug-in Java.
- include: Permite insertar ficheros en una página que esta siendo generada. Ejemplo: <jsp:include page="URL relativa" flush="true" />
- useBean: Permite cargar y utlizar JavaBeans en la página JSP. Ejemplo: <jsp:useBean id="nombre" class="package.class" /> .Seguidamente, se incluyen los atributos de useBean
- id: Da un nombre a la variable la cual contendrá la referencia al bean.
- class: Designa el nombre completo del paquete que contiene el bean.
- scope: Indica el contexto en el que el bean debería estar disponible. Hay cuatro posibles valores: page indica que el bean está sólo disponible para la página actual (almacenado en el PageContext de la página actual). request indica que el bean sólo está disponible para la petición actual del cliente (almacenado en el objeto ServletRequest). session indica que el objeto está disponible para todas las páginas durante el tiempo de vida de la HttpSession actual. application indica que está disponible para todas las páginas que compartan el mismo ServletContext.
- type: Especifica el tipo de la variable a la que se referirá el objeto. Este debe
corresponder con el nombre de la clase o ser una superclase o un interface que implemente la clase.
- beanName: Da el nombre del bean, como se ingresaría en el método instantiate de
Beans. Esta permitido suministrar un type y un beanName, y omitir el atributo class.
- forward: permite reenviar la petición a otra página. Tiene un
sólo atributo, page, que debería consistir en una URL relativa. Éste
podría ser un valor estático o podría ser calculado en el momento de la
petición.
Ejemplos:
<jsp:forward page="/utils/errorReporter.jsp" />
<jsp:forward page="<%= Expresión de Java %>" />
- param: Cuando se invoca un elemento include o forward, el objeto request original es enviado a la página de destino
Referenias bibliográficas:
Arquitectura de n capas | El Ciclo de Vida (Servlet) | Java Servlet | directivas JSP

Comentarios
Publicar un comentario