Diferencia entre revisiones de «Usuario:ManuelRomero/jsp/introduccion/concepto»
De WikiEducator
< Usuario:ManuelRomero | jsp | introduccion
(→Sintaxis de jsp) |
|||
(11 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 5: | Línea 5: | ||
*Es decir dentro del programa hacemos que se genere la página web | *Es decir dentro del programa hacemos que se genere la página web | ||
<source lang=java> | <source lang=java> | ||
− | + | public class HolaMundoServlet extends HttpServlet { | |
− | public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException | + | /** |
+ | * 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(); | PrintWriter out = response.getWriter(); | ||
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); | out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); | ||
Línea 16: | Línea 23: | ||
} | } | ||
} | } | ||
− | </ | + | </source> |
*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. | *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. | ||
Línea 22: | Línea 29: | ||
*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. | *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 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 | ||
+ | [[image:jspToClass.png]] | ||
+ | *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 | ||
+ | <source lang=asp> | ||
+ | <%-- Comentario de página JSP --%> | ||
+ | </source> | ||
+ | ;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 | ||
+ | <source lang=java> | ||
+ | <%= expresion %> | ||
+ | </source> | ||
+ | *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 | ||
+ | <source lang=java> | ||
+ | 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> | ||
+ | </source> | ||
+ | {{Actividad|Escribe un programa en jsp que muestre los valores devueltos por '''''System.getProperty''''' en las siguientes propiedades java.version, java.home, os.name, user.name, user.home, user.dir | ||
+ | <!-- | ||
+ | <source lang=java> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>TODO supply a title</title> | ||
+ | <meta charset="UTF-8"> | ||
+ | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
+ | </head> | ||
+ | <body> | ||
+ | <div>TODO write content</div> | ||
+ | <h1>La fecha actual | ||
+ | <%= new java.util.Date()%> | ||
+ | </h1> | ||
+ | <div>TODO write content</div> | ||
+ | <h1>La version de java | ||
+ | <%= System.getProperty("java.version") %> | ||
+ | </h1> | ||
+ | <div>TODO write content</div> | ||
+ | <h1>La fecha actual | ||
+ | <%= new java.util.Date()%> | ||
+ | </h1> | ||
+ | </body> | ||
+ | </html> | ||
+ | |||
+ | </source>--> | ||
+ | }} | ||
+ | {{Actividad| | ||
+ | Copia, ejecuta e interpreta el siguiente código | ||
+ | <source lang=java> | ||
+ | |||
+ | </source>}} | ||
+ | |||
+ | ;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 | ||
+ | *https://jtagua.wordpress.com/2010/06/26/tutorial-de-jsp-4-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 | ||
+ | |||
+ | <source lang=php> | ||
+ | <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> | ||
+ | </source> | ||
+ | <source lang=php> | ||
+ | <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> | ||
+ | </source> | ||
+ | <source lang=php> | ||
+ | <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> | ||
+ | </source> | ||
+ | ===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 | ||
+ | <source lang=java> | ||
+ | |||
+ | </source> |
Última revisión de 19:33 23 feb 2015
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