Parametros multivalores

Slides:



Advertisements
Presentaciones similares
Tema 1. Introducción a la programación (Lenguaje java).
Advertisements

Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
Input – Scanner y Cajas de diálogo
1 Streams en Java Agustín J. González ELO Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.
Archivos y Búsqueda Secuencial
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
Servlets, JSP, JavaBEANS,JDBC
Parameters passed by client One of the most important features to make the web an interactive environment is the passing of parameters from client so the.
ESTRUCTURA DE UN PROGRAMA EN
Clase 3: primeros programas (1ª parte) iic1102 – introducción a la programación.
Trabajar con SERVLETS. Índice Qué son los Servlets Para qué sirven Cómo se utilizan Ejemplo Cómo probar un Servlet.
Procesamiento de Formularios con Servlets de Java Aplicaciones Web con JSP y Servlets de Java.
BUSQUEDAS BINARIAS Y SECUENCIALES Hernández Salazar Alma Pérez González Luis Alberto Villa Méndez Edgar Adrián Villegas Titla Jorge Ramsés Ríos Álvarez.
Francisco Moreno Bases de Datos II Universidad Nacional
Introducción a la Programación Multimedial
Manejo de Excepciones Agustín J. González ELO329 ELO329.
Conceptos Básicos Prof. Carlos Rodríguez Sánchez
Formularios Conjunto de elementos que generan interacción con el usuario para dar u obtener información.
2.  Diagramas de Estado.
Polimorfismo y Funciones Virtuales
Olimpiadas Chilenas de Informática - Formación
Métodos y parámetros.
Stored Procedures Firebird.
Polimorfismo y Métodos Virtuales
Introducción a Base de Datos
Manejo de Punteros y objetos en memoria dinámica en C++
Repaso/resumen: Introducción a la Programación orientada a objetos
Objeto de clase Fracción métodos públicos representación privada constructor Fraccion(…) asigna a procedimiento void m(…) modifica b función tipo/clase.
Objeto de clase Fracción métodos públicos representación privada constructor Fraccion(…) asigna a procedimiento void m(…) modifica b función tipo/clase.
Manejo de Excepciones Agustín J. González ELO329.
Asignación Dinámica de Memoria
Diccionarios y Colecciones
Polimorfismo y Métodos Virtuales
Fundamentos del lenguaje de programación Condicionales, ciclos, Métodos, enumeraciones Escuela Técnica Superior Kinal Instructor Edwin Tumax.
Manejo de Excepciones Agustín J. González ELO329.
Repaso/resumen: Introducción a la Programación orientada a objetos
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
Formularios HTML.
Componentes básicos ComponenteDescripción JLabel  Permite agregar texto no editable, o incluso imágenes. JTextField  Permite al usuario ingresar texto.
Cuadros de diálogo - JOptionPane JOptionPane.showMessageDialog(…) JOptionPane.showInputDialog(…) showInputDialog y showMessageDialog, son métodos estáticos.
Tema 4 Lenguaje HTML Parte 7.
ACCESO PROVEEDORES SISTEMA DE ADMINISTRACION DE INSUMOS MEDICOS
E2Open Creacion de ASN Scheduling Agreements
Diccionarios y Colecciones
Servlets Servlets Son modulos que extienden las funcionalidades de un servidor “java-enabled” Normalmente generan código HTML dinámicamente, el cual se.
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
Repaso/resumen: Introducción a la Programación orientada a objetos
Parametros enviados por el cliente
Session Tracking.
Clase 7 Strings 28 de Marzo (N.Baloian).
2.  Diagramas de Estado.
HTML.
HTML.
Repaso/resumen: Introducción a la Programación orientada a objetos
Manejo de Excepciones Agustín J. González ELO329 ELO329.
String, random y stream en java
Repaso/resumen: Introducción a la Programación orientada a objetos
Manejo de Punteros y objetos en memoria dinámica en C++
Formularios Conjunto de elementos que generan interacción con el usuario para dar u obtener información.
Manejo de Excepciones en C++
Manejo de Punteros y objetos en memoria dinámica en C++
Clase 10 (Repaso/Resumen)
Leyendo strings de la línea de comandos
Ejemplos de uso //obtener una respuesta “si” o “no” static public String siNo(String x) throws IOException{ String r=U.readLine(x+” si o no?”) .trim().toLowerCase();
Problemas de Strings boolean palindrome(String x) Ej: palindrome(“reconocer”)=true boolean alfabetico(String x) Ej: alfabetico(“hola”)=true,
Asignación Dinámica de Memoria
Guía rápida de configuración de usuarios
Transcripción de la presentación:

Parametros multivalores Algunos parámetros pueden tener más de un valor. What IDEs do you use?<BR> <BR><input type=checkbox name=ide value=NB>NetBeans <BR><input type=checkbox name=ide value=EX>Eclipse <BR><input type=checkbox name=ide value=JW>JavaWorkShop <BR><input type=checkbox name=ide value=JP>J++ <BR><input type=checkbox name=ide value=CF>Cafe' Este código HTML generará este output

“ide” será un parámetro multivalorado El parámetro “ide” <ocomo se llame> recibirá tantos valores como valores se hayan seleccionado (de 0 a 5 en este caso) What IDEs do you use?<BR> <BR><input type=checkbox name=ide value=NB>NetBeans <BR><input type=checkbox name=ide value=EX>Eclipse <BR><input type=checkbox name=ide value=JW>JavaWorkShop <BR><input type=checkbox name=ide value=JP>J++ <BR><input type=checkbox name=ide value=CF>Cafe' Estos son los valores que recibe

Recuperando los valores Los valores seleccionados se recuperan en un arreglo de strings de la siguiente manera getParameterValues(<parameter name>) La firma de esta fincion es la siguiente: String[] getParamterValues(String) String[] values = request.getParameterValues(“ide”); for (int i = 0; i < values.length; i++) out.println(i+” “+values[i]+”<br>”); Esto imprimirá 1- NB 2- EX 3- JP

Recuperando todos los parámetros cuando sus nombres no son conocidos A veces el programador no puede conocer los nombres de los parámetros Por ejemplo cuando la página ha sido generada como resultado de una consulta a una base de datos En este caso podemos usar getPatameterNames() que retornará un objetode la clase Enumeration conteniendo todos los nombres de los parámetros Enumeration en = request.getParameterNames()

Usando el Objeto Enumeration Para recuperar los valores de los parámetros desconocidos podemos usar los métodos nextElement() y hasMoreElement() Enumeration en = request.getParameterNames(); while(en.hasMoreElements()) { String parameterName = (String)en.nextElement(); String parameterValue = request.getParameter(parameterName); out.println(“parametro “+parameterName+ “tiene valor “+parameterValue); }

Ejemplo: productos en un archivo La informacion sobre productos está guardada en un archivo. En cada linea hay un código, precio y descripción sepàrados por un espacio. Un primer servlet debe mostrar esto y permitir a los usuarios especificar la cantidad a comprar. Después de especificar esto (ingresando números) se aprieta un botón que va a un servlet que muestra el total de la compra

Processing workflow Products.txt 111 34347 motores 222 760 escoba 333 123 lapiz 444 224 goma 555 322 papel OrderPage ProcessPage

Clases auxiliares: Product Una clase para guardar la nformación de cada producto public class Product { public String code; public int price; public String desc; Product(String x, String y, int z){ code = x; desc = y; price = z; }

La clase auxiliar Item import java.util.Hashtable; public class Item { static public Hastable getItems() { BufferedReader in = new BufferedReader( new FileReader(“Productos.txt”); Hashtable v = new Hashtable(); String l; while( (l= in.readLine()) != null) { int i = l.indexOf(“ “); int j = l.indexOf(“ “,i+1); String c = l.substring(0,i); String ps = l.substring(i+1,j); int pi = Integer.parseInt(ps); String d = l.substring(j+1); Product p = new Product(c,d,pi); v.put(code,p); } return p;

doGet of OrderPage Conseguir la tabla de hashing con la public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Make your order</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Number"); Enumeration enum = h.getKeys(); out.print("<form action=ProcessPage method='POST'>"); while(enum.hasMoreElements()) { Product e = (Product)enum.nextElement(); out.print("<TR>"); out.print("<TD>" + e.number); out.print("<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>"); out.print("<input type=textarea SIZE=3 "+ out.print(" name="+e.number+" value=0 >"); } out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>"); Conseguir la tabla de hashing con la informacion de los productos

doGet of OrderPage Titulo y header de la tabla public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Make your order</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Number"); Enumeration enum = h.getKeys(); out.print("<form action=ProcessPage method='POST'>"); while(enum.hasMoreElements()) { Product e = (Product)enum.nextElement(); out.print("<TR>"); out.print("<TD>" + e.number); out.print("<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>"); out.print("<input type=textarea SIZE=3 "+ out.print(" name="+e.number+" value=0 >"); } out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>"); Titulo y header de la tabla

doGet of OrderPage Recuperar las claves de la tabla public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Make your order</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Number"); Enumeration enum = h.getKeys(); out.print("<form action=ProcessPage method='POST'>"); while(enum.hasMoreElements()) { Product e = (Product)enum.nextElement(); out.print("<TR>"); out.print("<TD>" + e.number); out.print("<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>"); out.print("<input type=textarea SIZE=3 "+ out.print(" name="+e.number+" value=0 >"); } out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>"); Recuperar las claves de la tabla De Hashing (códigos de productos)

doGet of OrderPage Iterar sobre el objeto Enumeration para public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Make your order</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Number"); Enumeration enum = h.getKeys(); out.print("<form action=ProcessPage method='POST'>"); while(enum.hasMoreElements()) { Product e = (Product)enum.nextElement(); out.print("<TR>"); out.print("<TD>" + e.number); out.print("<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>"); out.print("<input type=textarea SIZE=3 "+ out.print(" name="+e.number+" value=0 >"); } out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>"); Iterar sobre el objeto Enumeration para Obtener cada elemento (un objeto Product)

doGet of OrderPage Mostrar cada campo (number, name, price) public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Make your order</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Number"); Enumeration enum = h.getKeys(); out.print("<form action=ProcessPage method='POST'>"); while(enum.hasMoreElements()) { Product e = (Product)enum.nextElement(); out.print("<TR>"); out.print("<TD>" + e.number); out.print("<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>"); out.print("<input type=textarea SIZE=3 "+ out.print(" name="+e.number+" value=0 >"); } out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>"); Mostrar cada campo (number, name, price) del producto en cada fila de la tabla

doGet of OrderPage public void doGet( .. request, ... response) throws . . . { out.print("<input type=text SIZE=3 "+ out.print(" name="+e.number+" value=0 >"); } Esto pone un campo input de texto al final de cada linea de la tabla. Su nombre (del parámetro) Será el número (code) del producto

El nombre del input field será el código del producto

Ahora generemos la proxima página

doGet del ProcessOrder public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Your choice was</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Total"); Enumeration en = request.getParameterNames(); int total = 0; out.print("<form action=ProcessPayment method='POST'>"); while(en.hasMoreElements()) { String number = (String)en.nextElement(); String qtty = request.getParameter(number); int nqqty = Integer.parceInt(qtty); Product e = (Product)item.get(number); out.print("<TR> <TD>" + e.number+"<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>“+e.price*nqtty); total = total*e.price*nqtty; } out.println(“<TR> <TD> <TD> <TD> <TD>”+total); out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>");

Ahora con un checkbox public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Make your order</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Number"); Enumeration enum = h.getKeys(); out.print("<form action=ProcessPage method='POST'>"); while(enum.hasMoreElements()) { Product e = (Product)enum.nextElement(); out.print("<TR>"); out.print("<TD>" + e.number); out.print("<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>"); out.print("<input type=chackbox SIZE=3 "+ out.print(" name=selection value="+e.number+" >"); } out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>");

Selección significa un solo item <H2 ALIGN=CENTER> Make your order</H2> <TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00> <TH>Product Number <TH>Product Name<TH>Price <TH> Number <TR><TD> 1111 <TD> motores <TD> 34347 <TD> <input type=checkbox name=selection value=1111 > <TR><TD> 2222 <TD> escoba <TD> 760 <TD> <input type=checkbox name=selection value=2222 > <TR><TD> 3333 <TD> lapiz <TD> 1237 <TD> <input type=checkbox name=selection value=3333 > <TR><TD> 4444 <TD> goma <TD> 224 <TD> <input type=checkbox name=selection value=4444 > <TR><TD> 5555 <TD> papel <TD> 322 <TD> <input type=checkbox name=selection value=5555 >

ProcessOrder para checkbox public void doGet( .. request, ... response) throws . . . { Hashtable items = Item.getItems(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<H2 ALIGN=CENTER> Your choice was</H2>\n" + "<TABLE BORDER=1 ALIGN=CENTER><TR BGCOLOR=#FFAD00>" + "<TH>Product Number <TH>Product Name<TH>Price <TH> Total"); String[] values = request.getParameterValues(“ide”); out.print("<form action=ProcessPayment method='POST'>"); for (int i = 0; i < values.length; i++){ String number = values[i]; Product e = (Product)item.get(number); out.print("<TR> <TD>" + e.number+"<TD>" + e.name ); out.print("<TD>" + e.price+"<TD>“+e.price*nqtty); total = total*e.price*nqtty; } out.println(“<TR> <TD> <TD> <TD> <TD>”+total); out.println("</TABLE>"); out.println("<INPUT TYPE='SUBMIT' VALUE='Process'>");