RSS

Java Server Pages, primer ejemplo

05 Jun

Crear una página JSP desde NetBeans………

Existen diferentes opciones para crear el jsp, en este caso solo modificamos el nombre y damos click en
finalizar.

Ejecutando una página JSP ………..

Escribir en el navegador la siguiente dirección:

http://localhost:8080/Laboratorio8/unoJSP.jsp

Una página JSP puede contener código html y también etiquetas JSP.

Incluir archivos en una página JSP ……………

Crear un archivo HTML en NetBeans, con el nombre unoHTML:

 <!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>Contenido HTML</div>
    </body>
</html>

después incluir el siguiente código en la página unoJSP:

<%@page info="Ejemplo JSP" contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@ include file="unoHTML.html" %>
        <table>
            <tr>
                <td width=150> &nbsp; </td>
                <td width=250 align=right>
                    <h1>Hola, Mundo!</h1> </td>
            </tr>
        </table>
    </body>
</html>

La directiva @include inserta el contenido de otro archivo en la página JSP, es muy útil por ejemplo
para insertar código html estático o funciones de otros lenguajes como javascript.

Sintaxis de las etiquetas JSP ……

Puedes ver la sintaxis de las etiquetas en este enlace(http://java.sun.com/products/jsp/syntax/2.0/card20.pdf),

Manejo de formularios ………

Modificaremos el archivo index.jsp para que el usuario escriba su nombre y la página JSP muestre un mensaje,
que contenga el nombre del usuario.

Primero es necesario crear un Bean que sirva para manejar la información del formulario, en este caso solo vamos a manejar el nombre del usuario, la clase se llamará NombreBean y estará en un paquete llamado hola:

package hola;public class NombreBean {
    private String nombre;
   
    public NombreBean(){
        nombre = "???";
    }
   
    public void setNombre(String nombre){
        this.nombre = nombre;
    }
   
    public String getNombre(){
        return nombre;
    }  
}

Si se quiere utilizar las etiquetas <jsp:getProperty> y <jsp:setProperty> es necesario que se tengan los métodos get y set para cada uno de los atributos del bean.

El mensaje que se mostrará se va a incluir por medio de otra página JSP la cual solo mostrará un mensaje con el valor del atributo del bean que hemos creado anteriormente. El código es el siguiente:

<table border="0" width="700">
<tr>
<td width="150">
&nbsp;
</td>
<td width="550">
<h1>Hola, <jsp:getProperty name="bean" property="nombre" /> !!
</h1>
</td>
</tr>
</table>

Se debe crear un formulario como se hace para las páginas html, en este caso, se omite el atributo
action de la etiqueta form ya que el proceso de los datos se hará por medio del objeto que se especifica
en la etiqueta <jsp:useBean>

Poner propiedades en un Bean desde un formulario html requiere de dos tareas importantes:

  • Crear o localizar la instancia del bean con <jsp:useBean>
  • Poner las propiedades en el bean con <jsp:setProperty>

El primer paso busca una instancia llamada como se describe en la etiqueta, si no se encuentra la crea,
esto permite usar instancias de un bean en otra página JSP dependiendo del alcance definido.

El segundo paso es indicar los valores de las propiedades del bean, lo más adecuado es poner nombres del variables igual a las que se usan en el formulario. Aunque es posible poner nombres diferentes se tendría que indicar el valor de la propiedad una por una.

El código para la página index.jsp es el siguiente:

<!DOCTYPE html>
<%@page import="hola.NombreBean" %><jsp:useBean id="bean" scope="page" />
<jsp:setProperty name="bean" property="*" /><html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <table border="0" width="700">
            <tr>
                <td width="30"> Escribe tu nombre: &nbsp;</td>
                <td width="150">
                    <form method="get">
                        <input type="text" name="nombre" size="25">
                        <br>
                        <input type="submit" value="Enviar">
                        <input type="reset" value="Limpiar">
                    </form>
                </td>
            </tr>
        </table>
       
        <%
            if(request.getParameter("nombre") != null){
        %>
        <%@include file="respuesta.jsp" %>
        <% } %>
    </body>
</html>

Para probar la aplicación es necesario escribir la siguiente dirección en el navegador:

http://localhost:8080/Laboratorio8/


Scripting con JSP ……………….

Algunas reglas generales para utiliza elementos de scripting en JSP:

  1.  Usar directiva page para definir el lenguaje utilizado(Java es el lenguaje por defecto, en este caso)
  2.  La sintaxis <%! … %> para declarar variables o métodos
  3.  La sintaxis <%= … %> define una expresión del lenguaje y convierte a String
  4.  La sintaxis <% … %> puede tomar declaraciones, expresiones o cualquier otro tipo de fragmento de código válido en el lenguaje
  5.  Cuando se escribe un scriptlet asegurarte de terminarlo con %> antes de mezclarlo con código html, texto u otra etiqueta JSP.

Ejemplos:

Declaraciones:

    <%! int j=0; %>
    <%! int a, b, String c; %>
    <%! Object o = new STring(); %>

Expresiones:

    <%= items[i] %>
    <%= a + b +c %>
    <%= new MiClase() %>

Scriptlets:

    <%
        String name = " ";
        if(request.getParameter("nombre").equals(name)){
      %>

En un scriptlet las instrucciones deben terminar con ; si es que lo requieren, tal y como se hace en el lenguaje.
También puedes utiliza los objetos implicitos o clases importadas en una declaración, a través de la directiva
page o la etiqueta <jsp:useBean>.

EL siguiente ejemplo es un juego de adivinar el número, el usuario intenta adivinar el número apróximandose a la respuesta correcta a través de pistas que le da la página JSP a cerca de si el número debe ser mayor o menor al que ha introducido anteriormente.

Para realizar esto necesitamos crear una clase que maneje el dato del usuario y la verificación del número dado. El código del bean es el siguiente:

package num;import java.util.*;public class NumeroBean {

    int respuesta;
    boolean adivino;
    String pista;
    int numIntentos;

    public NumeroBean() {
        reset();
    }

    public void setNumero(String numero) {
        numIntentos++;
        int g;

        try {
            g = Integer.parseInt(numero);
        } catch (NumberFormatException e) {
            g = -1;
        }
        if (g == respuesta) {
            adivino = true;
        } else if (g == -1) {
            pista = "un número";
        } else if (g < respuesta) {
            pista = "uno más grande";
        } else if (g > respuesta) {
            pista = "uno más chico";
        }
    }

    public boolean getAdivino() {
        return adivino;
    }

    public String getPista() {
        return "" + pista;
    }

    public int getNumIntentos() {
        return numIntentos;
    }

    public void reset() {
        respuesta = Math.abs(new Random().nextInt() % 100) + 1;
        adivino = false;
        numIntentos = 0;
    }
}

En el jsp llamado adivinaNumero.jsp, se utilizan los métodos definidos en el bean, de esta manera se puede ver como es el uso de elementos script en las páginas JSP. El siguiente código es el encargado de mostrar los mensajes al usuario con los valores que se definen en la clase NumeroBean.

<%@ page import = "num.NumeroBean" %><jsp:useBean id="nbean"
             scope="session" />
<jsp:setProperty name="nbean" property="*" /><html>
    <head><title>Adivina el número</title></head>
    <body bgcolor="white">
        <font size=4>
        <% if (nbean.getAdivino()) {%>
        Felicidades! adivinaste.
        Después de <%= nbean.getNumIntentos()%> intentos.<p>
            <% nbean.reset();%>
            <a href="adivinaNumero.jsp">Intentar de nuevo</a>?
            <% } else if (nbean.getNumIntentos() == 0) {%>
            Bienvenido al juego de adivinar el número.<p>
            ¿En qué número estoy pensando? del 1 al 100.<p>
        <form method=get>
            Escribe el número? <input type=text name=numero>
            <input type=submit value="Submit">
        </form>
        <% } else {%>
        Bien, pero no. Intenta con <b><%= nbean.getPista()%></b>.
        Tú has hecho <%= nbean.getNumIntentos()%> intentos.<p>
            ¿En qué número estoy pensando? del 1 al 100.<p>
        <form method=get>
            Escribe el número? <input type=text name=numero>
            <input type=submit value="Submit">
        </form>
        <% }%>
        </font>
    </body>
</html>  

Para probar la aplicación es necesario escribir la siguiente dirección en el navegador:

http://localhost:8080/Laboratorio8/adivinaNumero.jsp

 
2 comentarios

Publicado por en 5 junio, 2012 en Código, Java

 

2 Respuestas a “Java Server Pages, primer ejemplo

  1. Jesús Echarri Maceiras

    28 noviembre, 2012 at 17:54

    Hola,

    Me gustaría ponerme en contacto contigo por un proyecto en SOLR.

    si estás interesado, puedes contactarme en el email de este comentario.

     
  2. Jesús Echarri Maceiras

    28 noviembre, 2012 at 17:54

    Por si acaso mi correo no queda en el comentario: jesusem@siotic.com

    Un saludo.

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: