Poco a poco vamos instalando en nuestros entornos de desarrollo servidores que cumplen con los standards de JavaEE 6. Con esta versión de la plataforma el uso de anotaciones aumenta y ayuda a simplificar el trabajo. Una de las especificaciones más afectadas es la de Servlets 3.0, vamos a ver algunos ejemplos.
Registro de Servlets
Una de las cosas más habituales a realizar cuando trabajamos en Java EE es registrar un Servlet. Todos hemos manejado el web.xml para realizar este tipo de tarea. Sin embargo ya no es necesario y podemos registrarlo de forma automática a través de la anotación @WebServlet.
package com.genbetadev;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HolaMundo")
public class HolaMundo extends HttpServlet {
private static final long serialVersionUID = 1L;
public HolaMundo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter pw=response.getWriter();
pw.println("hola");
pw.close();
}
}
Acabamos de construir un Servlet y registrarlo, el siguiente paso es invocarlo.
Registro de Filtros
De forma similar podemos ahora registrar un ServletFilter apoyándonos en la anotación @WebFilter y asignando el patrón de filtro que deseemos:
package com.genbetadev;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* Servlet Filter implementation class FiltroHola
*/
@WebFilter("/*")
public class FiltroHola implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("has pasado por un filtro");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
Definimos en la propia anotación que rutas son afectadas por el filtro, en nuestro caso "/* ". Si invocamos el Servlet que construimos al principio el filtro se ejecutará e imprimirá por consola un mensaje.
Registro de Listeners
Otro de los elementos que a partir de ahora podremos registrar usando anotaciones son los Listeners. Vamos a ver un ejemplo apoyándonos en SessionListeners.
package com.genbetadev;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class MiSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("session creada");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("session destruida");
}
}
Acabamos de cubrir algunas de las anotaciones más importantes de Servlets 3.0 pero el conjunto de anotaciones de la plataforma Java EE 6 es muy amplio y lleva tiempo conocerlas a detalle.