Usuario:ManuelRomero/jsp/introduccion/concepto
De WikiEducator
< Usuario:ManuelRomero | jsp | introduccion
Qué es un servlet
- Un Servlet podría verse como una herramienta que nos permite generar HTML desde código Java. Una de las partes más tediosas de la programación de Servlets es precisamente la generación del código HTML.
- Es decir dentro del programa hacemos que se genere la página web
public class HolaMundoServlet extends HttpServlet { /** * Servlet de ejemplo que procesa una petición GET * @param request * @param response * @throws ServletException */ @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); out.println("<html>"); out.println("<head><title>Ejemplo Hola Mundo</title></head>"); out.println("<body>"); out.println("<h1>¡Hola Mundo!</h1>"); out.println("</body></html>"); } }
- En una web real, especialmente si queremos que tenga una apariencia razonablemente buena, tendremos que generar cantidades de HTML mucho mayores. Si hacemos esto desde un Servlet, será increíblemente tedioso.
- La arquitectura Java en su plataforma Entreprice Edition Java EE tenemos una herramienta mucho más adecuada para generar este HTML, que es usar JSP.
- En este caso como vamos a ver a continuación, vamos a tener una página HTML donde incrustramos códgio jsp', exactamente igual de como hacíamos con php.
- El código jsp que vamos a introducir es usando lenguaje de programaicón java que ya conocemos.
- El fichero que escribimos en jsp se va a convertir en un servlet con extensión .java que se seudocompila a un fichero .class
- Al hacer el primer ejemplo lo comprobaremos
- Aunque no hemos hablado de los servlet's, un jsp en realidad es una manera cómoda y fácil de escribir un servlet.
- Cuando queremos escribir una página jsp, debemos generar un fichero con extensión jsp
Sintaxis de jsp
- Vamos a ver cómo podemos incluir código java dentro de una página jsp
- Podríamos afirmar que dentro de una página jsp podemos encontrar hasta 5 elementos de script
- comentarios
- directivas
- declaraciones
- expresiones
- scriptlets
- Comentarios
- Además de los típicos comentarios de java podemos introducir un comentario de tipo jsp
<%-- Comentario de página JSP --%>
- expresiones
- Una expresión denota un conjunto de operandos con operadores que son evaluados y de su evaluación se obtiene un valor
- Para visualizar un valor usando expresines usaremos la siguiente sintaxis
<%= expresion %>
- Por ejemplo, sabiendo que new java.util.Date() genera un valor que es la fecha actual, podemos hacer un programa que muestre la fecha actual de la siguiente manera
html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hola mundo JSP</title> </head> <body> <h1>Hola mundo JSP</h1> <p>La fecha actual en el servidor es <%= new java.util.Date() %> </p> </body> </html>
- scriptlests
- Para escribir código php usaremos scriptlets.
- Para ello escribiremos nuestro código entre <% aquí el código %>
- Como ya hemos comentado el código que se escribe entre los símbolo <% %> se llama scriptlests.
- declaraciones
Las variables así definidas son globales para el Servlet resultante de la página JSP.
- Este aspecto es muy importante yq que el servlet que responde ante la solicitud del cliente conserva los valores entre las distintas llamadas.
- Vamos a implementar un programa de adivinar un número. El servidor nos dirá si el número es mayor o menor
Escribiendo html
- Para escribir codigo html usaremos un objeto o variable predefinido out
- Este objeto es de la clase JspWriter https://docs.oracle.com/javaee/7/api/javax/servlet/jsp/JspWriter.html
- Para generar código html, usaremos el método print o println como veremos en los ejemplos siguientes.
- Ver la diferencia con usar System.out.println(...) que genera texto que irá al log del server
<HTML> <BODY> <% // Este scriptlet declara e inicializa "date" System.out.println( "Evaluando la variable fecha" ); java.util.Date date = new java.util.Date(); %> Hello! The time is now <% // Este scriptlet genera html out.println( String.valueOf( date )); %> </BODY> </HTML>
<HTML> <BODY> <% // Este scriptlet declara e inicializa "date" System.out.println( "Evaluando la variable fecha" ); java.util.Date date = new java.util.Date(); %> Hello! The time is now <%=date%> %> </BODY> </HTML>
<HTML> <BODY> <% // Este scriptlet declara e inicializa "date" System.out.println( "Evaluando la variable fecha" ); java.util.Date date = new java.util.Date(); // Este scriptlet genera html out.println("Hello! The time is now "+ String.valueOf( date )); %> </BODY> </HTML>
Leyendo datos de la petición http
- Otra variable predefinida importante es request de la clase HttpServletRequest https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletRequest.html
- Con este objeto ya predefinido, podemos recuperar cualquier información que la solicitud web contenga.
- Vamos a hacer un ejemplo que lea un número y nos diga si es positivo o negativo