Академический Документы
Профессиональный Документы
Культура Документы
Roberto Moriyn
Servlets, I
Objetos java, componentes web contenidas en un servidor (contenedor de servlets) que los reutiliza, que reciben peticiones mediante una URL y generan respuestas Mantienen informacin mediante cookies HTTP, objetos de sesin y de aplicacin y reescritura de la URL Normalmente generan cdigo HTML
Servlets, II
Los servlets no son aplicaciones, sino partes de aplicaciones que gestionan informacin que puede tener un contexto ms amplio que el del cdigo escrito por el desarrollador (contexto de sesin o de aplicacin). Los servlets proporcionan medios para almacenar informacin vlida en los contextos de sesin y de aplicacin y para acceder a ella.
Contenedores: Optimizaciones
Los contenedores no crean y destruyen objetos constantemente, sino que los reaprovechan mediante pools o caches.
Los contenedores se pueden configurar especificando el nmero de items en caches y pools de objetos almacenados para su reutilizacin
Servlets, III
Corresponden a una subclase de HttpServlet Su fichero compilado se guarda en un subdirectorio WEB-INF/class
Mtodos esenciales:
doGet(request, response) doPost(request, response) PrintWriter response.getWriter() String request.getParameter(String)
Servlets, IV
Los atributos no estticos de una subclase de HttpServlet no tienen utilidad en general. Puede ser til definir mtodos especficos de la subclase, llamados por doGet o doPost.
Servlets, IV
HttpServlet
response
requestURL
writer
Ejemplo: SimpleServlet.zip, I
public class SimpleServlet extends HttpServlet { protected void doGet (HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html> <head><title>Simple</title></head>"); out.println("<body><h1>Hello, + request.getRemoteAddr () + .</h1> </body> </html>); out.close(); } }
Ejemplo: SimpleServlet, II
Ejecucin: http://localhost:8080/Simple/
Hello, 127.0.0.1.
Pliegue
asadmin undeploy <nombre_contexto> http://localhost:4848/asadmin -> Aplicaciones Web -> Anular implementacin
ANT
Script: build.xml Objetivos (Compilar, desplegar, )
Pueden estar satisfechos Pueden depender de otros objetivos Pueden utilizar variables
ant deploy
NetBeans
Proyecto (mdulo)
Categora: Java Web, Web Application Nombre (context path) Servidor (GlassFish 3) Versin Java EE: 6
Acciones: Build (compila y genera *.war), Deploy (despliega), Run, Generate JavaDoc, (usan fichero Ant generado automticamente) Crea fichero build.xml y directorio de configuracin nbproject
Ejercicios
[NombreYClub] Desarrollar una aplicacin
web que incluya la pgina HTML del ejercicio STATIC as como un servlet que conteste a la URL
UUU:8080/NombreYClub?nombre=XXX&club=YYY
Ejercicios, II
[SERV1] Escribir una aplicacin web que
Ejercicios, III
[SERV3] Aplicacin web con un servlet que pide un nmero y se llama a s mismo de nuevo. Adems, el servlet muestra la suma de las cantidades introducidas hasta el momento por todos los usuarios.
Recordatorio
Los servlets no son aplicaciones, sino partes de aplicaciones con informacin que puede tener un contexto ms amplio que el del cdigo escrito por el desarrollador (contexto de sesin o de aplicacin). Los servlets proporcionan medios para almacenar informacin vlida en los contextos de sesin y de aplicacin y para acceder a ella.
Contextos
Aplicacin: javax.servlet.ServletContext HttpServlet.getServletContext() Sesin: javax.servlet.http.HttpSession HttpServletRequest.getSession() HttpServletRequest.getSession(t) Peticin: javax.servlet.HttpServletRequest
Contextos, II
Los contextos son objetos que pueden guardar informacin en atributos (un mapa de asociacin) mediante los mtodos Object getAttribute(String) void setAttribute(String, Object) El contexto de aplicacin se pierde si el servidor se apaga. Hay mecanismos para guardarlos y cargarlos automticamente, basados en eventos. Se pueden definir para eventos ms generales.
Ejercicios
[SERVCONT1] Aplicacin web que pide una lista de nmeros y muestra la suma de ellos pidiendo a la vez otra lista, as como la suma de todos los que se han introducido en la misma sesin y de los que se han introducido desde que se arranc la aplicacin. [SERVCONT2] (Voluntario) Aplicacin web que permite guardar dos listas de objetos: una que se mantiene y se puede modificar durante una sesin y otra comn que se mantiene y se puede modificar en cualquier momento y por cualquier usuario.
Ejercicios, II
[SERVEMAILS] (Voluntario) Aplicacin web
con tres funcionalidades accesibles a travs de URLs diferentes: aadir personas y direcciones de correo electrnico a una lista comn, ver la lista de personas y correos electrnicos y pedir la direccin de correo electrnico correspondiente a un nombre.
Servlets, III
Servlet
Response
RequestDispatcher
forward()
include()
Ejercicios
[SERVRED] Aplicacin web que pide una
URL y si es de la UAM la muestra y si no, no. [SERVFILTER] (Voluntario) Aplicacin web que permite gestionar un filtro de acceso a dominios de Internet.
Filtros
Permiten hacer acciones sobre la peticin (Request) y la respuesta previas al tratamiento de la peticin. Ejemplo: Mantenimiento de un contador de usuarios e insercin de su valor como atributo de la respuesta. Pueden servir para varios servlets simultneamente. Los ficheros se configuran mediante el fichero web.xml.
Configuracin de filtros
<filter> <filter-name>Timer</filter-name> <filter-class>kief.FD.TimerF</filter-class> <description> Servlet timing. </description> </filter> <filter-mapping> <filter-name>Timer</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Ejercicios opcionales
[BLINDAEMAIL] Blindar la aplicacin de
gestin de contactos comunes por correo electrnico contra fallos en el servidor. [ SERVUTILS] Extraer clases tiles para otros programas.
Concurrencia: Precauciones
Si un servidor recibe varias peticiones dirigidas a la misma URL que corresponde a un servlet, el contenedor de servlets ejecuta en hilos diferentes el mtodo doGet o doPost sobre el mismo objeto de la clase correspondiente en vez de crear una instancia para cada peticin. Como consecuencia de lo anterior, los atributos de la clase del servlet son compartidos por todas las peticiones.
Concurrencia: Precauciones, II
Cualquier variable o recurso cuyo estado tenga un mbito ms amplio para la aplicacin que la ejecucin del mtodo doGet o doPost tiene que ser sincronizada explcitamente Ejemplo: Saldo de una cuenta corriente (independientemente de que se guarde en el servlet o en una base de datos) No es recomendable usar atributos de servlets para informacin actualizable
Ejercicios
[SERVCONC1] Reescribir la aplicacin web del ejercicio [SERVCONT1] para evitar
problemas de concurrencia. [SERVCONC2] (Voluntario) Reescribir la aplicacin web del ejercicio [SERVCONT2] para evitar problemas de concurrencia. [SERVCONC3] (Voluntario) Reescribir la aplicacin web del ejercicio [SERVEMAILS] para evitar problemas de concurrencia.