viernes, 16 de enero de 2009

Tercer día: Ronda de Servlets

HTML
Comenzamos el día con un repaso del lenguaje HTML, que es vital para poder seguir avanzando en el módulo.
El lenguaje HTML es por etiquetas y cada etiqueta tiene una función específica.
Todas las etiquetas se abren y también se tienen que cerrar, aunque hay algunas que simplemente no se cierran.
Las etiquetas más básicas que hay son (lo que muestro se debe incluir dentro de los caracteres < >):
  • html - etiqueta contenedora de todo el código html
    • head - etiqueta contenedora de la cabecera de la página
      • title - etiqueta para poner título a la página web
    • body
      • hr - etiqueta para colocar una barra horizontal
      • br - etiqueta para crear un salto de línea.
      • a href=enlace_que_queramos - etiqueta para crear un enlace a otra página
Los subapartados de la lista indican cuales etiquetas deben estar dentro de otras.

Sobre los servlet
A continuación un diagrama del funcionamiento de un servlet. Un navegador web realiza una solicitud http, el servlet lo recoje, procesa la información que deba procesar y devuelve una página hml para el navegador.





Para el correcto funcionamiento de una aplicación web es necesario que tenga una estructura determinada, tal que así:

aplicacion/
_______/archivo.html
_______/archivo.jsp
_______/imgs/...
_______/css/...
_______/masjsps/archivo.jsp
_______/mashtmls/archivo.jsp
_______/WEB-INF/
web.xml
_______
/WEB-INF/classes/es.cea...
_______
/WEB-INF/lib/librerias.jar

Los 6 primeros son archivos accesibles para la página, como son las propias páginas html o jsp, imágenes y las hojas de estilo y también hay una estructura interna para el funcionamiento de la aplicación web.
En WEB-INF se encuentra el archivo de configuración que lee el servidor web Tomcat que es el "web.xml" que sirve principalmente para dar de alta a los recursos de la aplicación.
Dentro de WEB-INF existen dos subcarpetas que son la carpeta "classes", que sirve para introducir las clases de nuestros programas, y la carpeta "lib" que son las librerías que necesiten las aplicaciones.
Como anotación, decir, que los archivos con extensión ".war" son aplicaciones web empaquetadas.


Ronda de ejercicios y explicación
Despues de las explicaciones vino una ronda extensa de ejercicios simples para saber crear un servlet.
Cito aquí las explicaciones y los enunciados de los ejercicios del blog del curso:


¿Cómo crear un servlet?
  1. Se crea una clase java que herede (extienda) de HttpServlet (javax.servlet.http.HttpServlet)
  2. se sobreescriben los dos metodos encargados de procesar las solicitudes via GET y via POST
  3. public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
  4. public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
  5. Se reenvia todo lo que pase por doPost a doGet incluyendo en la implementacion del metodo doPost la siguiente linea: doGet(req,res);
  6. Se escribe la respuesta en el metodo doGet utilizando el objeto Writer a traves del objeto response: res.getWriter()
  7. Se da de alta el servlet en el archivo de configuración de la aplicación web: web.xml
  8. Se despliega la aplicación
  9. Consultamos el servlet en la dirección http://localhost:8090/nombreAplicacion/bienvenida


¿cómo imprimimos los resultados del servlet en la pagina web?
  1. Accedemos al objeto PrintWriter para imprimir los resultados: PrintWriter pw = res.getWriter();
  2. Imprimimos lineas con el metodo println("mensaje"): pw.println("HOLA SOY UN SERVLET ");
  3. Cerramos el objeto de impresion pw.close();

Ejercicios

  1. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/ciudad y que imprima la palabra SEVILLA
  2. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/academia y que imprima la palabra CEA
  3. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/enlaces y que imprima los enlaces del blog del curso
  4. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/formulario y que imprima este formulario
  5. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/calculadora y que imprima este otro formulario
  6. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/registro y que imprima un formulario con los campos usuario y clave y se envie(atributo action) a la direcion /registrar


¿cómo recuperamos los parametros que el usuario nos envia a traves de URLs?
  1. Accedemos al objeto request y utilizamos su metodo getParameter("nombreParametroEsperado")
  2. El valor que retorna se lo asignamos a una variable
  3. si la variable es diferente de null entonces lo imprimios en el resultado

Ejercicios
  1. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/envioFormulario y que imprima los valores nombre y apellidos
  2. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/calcular y que imprima el resultado de los parametros sumando1 y sumando2
  3. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/registro y que imprima el resultado de los parametros usuario y clave.


Por último remarcar que en todas las aplicaciones web que realicemos nos pueden saltar excepciones y los tres más frecuentes son:
  • NullPointerException - Se intenta invocar, por ejemplo, un método de un objeto no inicializado.
  • ClassCastException - El casting de una clase no es la que esperaba.
  • ClassNotFoundException - Clase no encontrada.

No hay comentarios:

Publicar un comentario