You are on page 1of 12

Laboratorio 3: Java Server Pages

Indice

JSP Componentes Web Ejercicios Referencias

JSP Utilizar un proyectpo Tomcat nuevo (sysideo). Hello World en JSP <html> <head> <title> Hello World JSP </title> </head> <body> <h1> <% out.print("Hello World !"); %> </h1> </body> </html> No hace falta compilarlo, de eso se encarga el contenedor Web; solo copiaremos el fichero a nuestro directorio y pondremos su Url en el navegador. hello.jsp Importando clases <%@ page import = "java.util.*" %> (...) hello2.jsp

Declarando variables <%! Vector lista= new Vector(); %> (...) hello3.jsp

Utilizando variables <% String nombres[] = {"a","b","c"}; String tlfno[] = {"1","2","3"}; %> Hola amigo <%= nombres[0] %> <br> Tu tfno es: <%= tlfno[0] %> var.jsp Intercalando cdigo Java

<% String nombres[] = {"a","b","c"}; String tlfno[] = {"1","2","3"}; %> <table> <% for (int i=0;i<nombres.length;i++){ %> <tr> <td> <%=nombres[i] %> </td> <td> <%=tlfno[i] %> </td> </tr> <% } %> </table> var2.jsp Recibiendo datos de formularios (objeto request) Observad en este ejemplo como bloques de cdigo Java pueden mezclarse con codigo html. Abrimos la llave del if y la cerramos despues. Esto puede ser util por ejemplo para

recorrer un Vector de Objetos y generar la tabla dinamicamente. <html> <body> <h1> <% String param1 = null; if (request.getParameter("param1").equals("") || request.getParameter("param1")== null) { %> Necesitas rellenar los campos !!! <% }else { out.println("El parametro 1 es "+request.getParameter("param1")); } %> <h1> </body> </html> Para ejecutar este ejemplo podeis probar directamente: http://127.0.0.1/sob/params.jsp?param1=hola

params.jsp Proceso de datos de formularios e inclusin de archivos externos <html> <body> <% String param1 = null; if (request.getParameter("param1").equals("") || request.getParameter("param1")== null) { %> Necesitas rellenar los campos !!! <br> <%@ include file="form.htm" %> <% }else { out.println("El parametro 1 es "+request.getParameter("param1"));

} %> </body> </html> <html> <body> <form method=get action=form.jsp> Introduce parametro 1: <input type=text size=20 name=param1 value=""> <input type =submit value=OK> </form> </body> </html>

form.jsp form.htm

Beans y mbito Utilizando servlets el ciclo de vida nos permitia sobreescribir un metodo init que se ejecuta solo la primera vez que nos conectamos a un servlet. En el modelo JSP, la inicializacin se efectuara en el constructor sin parametros del Bean. Dependiendo del mbito de este bean, la inicializacion se producira en un momento u otro, por ejemplo:

En ambito pagina (scope=page), se llamara a este constructor vacio cada vez que se entre a la pagina. En ambito sesion (scope=session), se llamara a este constructor vacio cuando se inicie la sesion por primera vez para cada usuario. En ambito aplicacion (scope = application), se llamara a este constructor vacio la primera vez que cualquier usuario se conecte a esta pagina.

Demostraremos las diferencias con un contador de visitas, Utilizaremos un bean muy sencillo llamado CounterBean cuyo constructor pondra a 0 el contador. Incrementaremos el contador en cada visita a la pagina. Con ambito session, el contador vale siempre 1, porque cada vez que entra en la pagina inicializara el bean. package hall; public class CounterBean { private int cnt;

public CounterBean() { cnt = 0; } public int getValue() { return(cnt); } public void setValue(int value) { this.cnt = value; } public void incValue() { cnt++; } } <%@ page import = "java.util.*" %> <jsp:useBean id="counter" class="hall.CounterBean" scope="page"/> <html> <body> <% counter.incValue(); out.print("Eres la visita numero: "+counter.getValue()); %> </body> </html> Ficheros:

CounterBean.java contador.jsp

Si cambiamos el ambito de contador.jsp a session. Observaremos que nos sirve para tener un contador personal de cuanto visita cada usuario una pagina. Pero usuarios distintos tendran valores diferentes. Con ambito aplicacion todos tendremos un contador global que valdra para todos los usuarios.

Otro ejemplo similar:

Recargar este jsp (scope y scope2) y ver la diferencia. <%@ page import = "java.util.*" %> <jsp:useBean id="lista" class="java.util.Vector" scope="page"/> <html> <body> <% lista.add("HOLA"); Iterator it = lista.iterator(); while (it.hasNext()) { out.print(it.next()+"<BR>"); } %> </body> </html> <%@ page import = "java.util.*" %> <jsp:useBean id="lista" class="java.util.Vector" scope="session"/> <html> <body> <% lista.add("HOLA"); Iterator it = lista.iterator(); while (it.hasNext()) { out.print(it.next()+"<BR>"); } %> </body> </html>

scope.jsp scope2.jsp

Manejo de JavaBeans y JSP Las clases de los JavaBeans deberan ir al direcrorio Web-Inf\classes. <jsp:useBean id="test" class="hall.SimpleBean" /> <jsp:setProperty name="test" property="message" value="Hello WWW" /> <H1>Message: <I> <jsp:getProperty name="test" property="message" />

</I></H1> </BODY> </HTML> package hall; public class SimpleBean { private String message = "No message specified"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }

BeanTest.jsp SimpleBean.java

JavaBeans y formularios Ejecutar primero el servlet contador del laboratorio 1. <jsp:useBean id="mybean" scope="page" class="hello.NameHandler" /> <jsp:setProperty name="mybean" property="*" />

hellouser.jsp response.jsp NameHandler.java

Comunicacin Servlets y JSP utilizando objetos de mbito sesin Ejecutar primero el servlet contador del laboratorio 1. <%@ page import = "java.util.*" %> <jsp:useBean id="contador" class="hall.ContaBean" scope="session"/> <html> <body> <% out.println(contador.getValue()); %>

</body> </html>

session.jsp session2.jsp

Comunicacin Servlets y JSP utilizando objetos de mbito aplicacin Para que los servlets puedan comunicarse entre s o acceder a objetos de mbito aplicacin tendrn que acceder directamente al contexto para depositar los objetos. <jsp:useBean id="contador" class="hall.CounterBean" scope="application"/> ServletContext sc = getServletContext(); CounterBean obj = (CounterBean)sc.getAttribute("contador"); if (obj==null) { CounterBean obj1 = new CounterBean(); obj1.setValue(1); sc.setAttribute("contador",(Object)obj1); out.println("Esta es tu primer vez ..."); } else

CounterBean.java contador2.jsp Contador.java

Ejercicios Bloque 1. JSP

Repetid los ejercicios de servlets utilizando JSP (el tercero es opcional)

Referencias Parte primera (jsp) Sun Java Server Pages Web XML Descriptor (J2EE) Application XML Descriptor (J2EE)

Servidor Orion TutorJava Tutorial de Sun

http://deim.urv.cat/~pgarcia/SOB/l3/guide.htm

ejercicio1

<% // declarando double nota1=0, nota2=0, nota3=0, nota4=0, promedio=0; String puntuacion=""; if(request.getParameter("OK") != null) { nota1= Integer.parseInt(request.getParameter("NOTA1")); nota2= Integer.parseInt(request.getParameter("NOTA2")); nota3= Integer.parseInt(request.getParameter("NOTA3")); nota4= Integer.parseInt(request.getParameter("NOTA4")); promedio=(nota1+nota2+nota3+nota4)/4; if ((promedio>=0) && (promedio<=2.9)) {puntuacion="A";} else if ((promedio>=3) && (promedio<=4.9)) {puntuacion="B";} else if ((promedio>=5) && (promedio<=6.9)) {puntuacion="C";} else if ((promedio>=7) && (promedio<=8.9)) {puntuacion="D";} else if ((promedio>=9) && (promedio<=10)) {puntuacion="E";}

}; // construyendo forma dinamica out.println("<FORM ACTION=notas.jsp METHOD=post>"); out.println("LA NOTA DEBE ESTAR ENTRE 0-10<BR>"); out.println("DAME NOTA 1:<INPUT TYPE=TEXT NAME=NOTA1 value="+nota1+"><BR>"); out.println("DAME NOTA 2:<INPUT TYPE=TEXT NAME=NOTA2 value="+nota2+"><BR>"); out.println("DAME NOTA 3:<INPUT TYPE=TEXT NAME=NOTA3 value="+nota3+"><BR>"); out.println("DAME NOTA 4:<INPUT TYPE=TEXT NAME=NOTA4 value="+nota4+"><BR>"); out.println("PROMEDIO:<INPUT TYPE=TEXT NAME=PROMEDIO value="+promedio+"><BR>"); out.println("PUNTUACION:<INPUT TYPE=TEXT NAME=PUNTUACION value="+puntuacion+"><BR>"); out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=Calcular><BR>"); out.println("</FORM>"); %>

<% // declarando int anonac=0, edad=0, diasvivi=0; if(request.getParameter("OK") != null) { anonac= Integer.parseInt(request.getParameter("ANONAC")); edad=2009-anonac; diasvivi=anonac*365; }; // construyendo forma dinamica

out.println("<FORM ACTION=edad.jsp METHOD=post>"); out.println("DAME AO DE NACIMIENTO:<INPUT TYPE=TEXT NAME=ANONAC value="+anonac+"><BR>"); out.println("EDAD:<INPUT TYPE=TEXT NAME=EDAD value="+edad+"><BR>"); out.println("DIAS VIVIDOS:<INPUT TYPE=TEXT NAME=DIASVIVI value="+diasvivi+"><BR>"); out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=Calcular><BR>"); out.println("</FORM>"); %>

http://kathelezcano.galeon.com/edad.jsp

<% // declarando int consumos=0, descuento=0; if(request.getParameter("OK") != null) { consumos = Integer.parseInt(request.getParameter("CONSUMOS")); if ((consumos >= 30000) && (consumos <= 50000)) { descuento=consumos*10/100; } else if (consumos > 50000) { descuento=consumos*20/100;} else {descuento=0; }; }; // construyendo forma dinamica out.println("<FORM ACTION=restaurante.jsp METHOD=post>"); out.println("DAME LOS CONSUMOS:<INPUT TYPE=TEXT NAME=CONSUMOS value="+consumos+"><BR>"); out.println("DESCUENTO:<INPUT TYPE=TEXT NAME=DESCUENTO value="+descuento+"><BR>");

out.println("<INPUT TYPE=SUBMIT NAME=OK VALUE=Calcular><BR>"); out.println("</FORM>"); %>

http://kathelezcano.galeon.com/restaurante.jsp

You might also like