Publicado el 3 de Octubre del 2018
875 visualizaciones desde el 3 de Octubre del 2018
944,0 KB
15 paginas
Creado hace 5a (28/05/2018)
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS
PROGRAMACION PARA DISPOSITIVOS MOVILES
PDM115 Ciclo I-2018
GUIA DE LABORATORIO N° 08 A
Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL
Objetivo:
Modificar los servicios web realizados en la guía 7a para que permitir consumo desde
movil.
Requerimientos previos:
Desarrollar guia 7a
Índice
Contenido
Servicios para Encontrar Alumno y Materia por fecha ............................................................................. 1
Agregar los campos de fecha a la tabla Alumno y Materia en el Gestor de Base de Datos(MySQL) .... 1
Agregar los campos de fecha a la tabla Alumno y Materia en las clases Asociadas ............................ 1
Modificar la clase entidad Materia.java con el nuevo atributo fecha. ................................................. 1
Agregar los métodos set y get del nuevo atributo. .............................................................................. 2
Agregar la consulta (NamedQuery) en ambas entidades ..................................................................... 3
Probar los servicios en el plugin rest de Mozilla ................................................................................... 6
Antes de hacer el Servicio de Promedio de notas de un Alumno: ............................................................ 7
Insertar más Notas de alumnos(POST) ................................................................................................. 7
Obtener el Promedio de Notas de un Alumno ..................................................................................... 8
Verificar que se han insertado las librerías correctas. .......................................................................... 9
Probar los servicios en el plugin rest de Mozilla ................................................................................... 9
Anexo1 ................................................................................................................................................... 10
Anexo2 ................................................................................................................................................... 12
Anexo 3 .................................................................................................................................................. 13
1
Servicios para Encontrar Alumno y Materia por fecha
Agregar los campos de fecha a la tabla Alumno y Materia en el Gestor de Base de
Datos(MySQL)
*Si ya se tienen datos hacer el update
ALTER TABLE materia ADD FECHA_MODIFICADO DATE NULL;
UPDATE materia SET FECHA_MODIFICADO = '2016-05-05' ;
ALTER TABLE alumno ADD FECHA_MODIFICADO DATE NULL;
UPDATE alumno SET FECHA_MODIFICADO = '2016-05-05' ;
Script de insercion
INSERT INTO ALUMNO VALUES ('NN00003','Nuevo','Nuevo','M',0,'2016-05-05');
INSERT INTO MATERIA VALUES('PRN115','PROGRAMACION 1',4,'2016-05-05');
INSERT INTO NOTA VALUES('PRN115', 'NN00003','1',2);
Agregar los campos de fecha a la tabla Alumno y Materia en las clases Asociadas
Modificar la clase entidad Materia.java con el nuevo atributo fecha.
2
Verificar que se han insertado las librerías correctas en ambas clases.
Agregar los métodos set y get del nuevo atributo.
a) Podemos agregarlos con asistente:
Sombreamos fechaact y presionamos clic derecho insert code,
Luego clic en Getter and Setter
o
b) Simplemente los digitamos:
3
Repetir lo anterior en la clase Alumno.java
Agregar la consulta (NamedQuery) en ambas entidades
En Alumno.java:
En Materia.java:
4
Escribir el siguiente método en la clase AlumnoFacadeREST.java
Ver anexo 1 (código fuente)
Verificar que se han insertado las librerías correctas.
5
De igual manera para la clase MateriaFacadeREST.java
Ver anexo2 (código fuente)
6
Probar los servicios en el plugin rest de Mozilla
Consultar materias creadas una fecha
http://localhost:8080/WebApplicationDB/webresources/sv.ues.fia.carnet.entidad.ma
teria/by?fecha_modificado=2016-05-05/
Consultar alumnos creados desde una fecha
http://localhost:8080/WebApplicationDB/webresources/sv.ues.fia.carnet.entidad.alumno/by
?fecha_modificado=2016-05-05/
7
Antes de hacer el Servicio de Promedio de notas de un Alumno:
Insertar más Notas de alumnos(POST)
http://localhost:8080/WebApplicationDB/webresources/sv.ue
s.fia.carnet.entidad.nota
Cabecera (Content Type= application/json)
Body
{
"notaPK":
{
"carnet":"NN00001","codmateria":"PRN215","ciclo":"1"
},
"notafinal":"8"
}
Puede insertarlos también con comandos insert
Agregar Librería en proyecto
Busque la librería jettison-1.3.7 en el ftp de la asignatura y descarguelo
8
Cópielo dentro de su proyecto y luego agréguelo con clic derecho agregar archivo jar….
Obtener el Promedio de Notas de un Alumno
Agregar el siguiente NamedQuery a la entidad Nota.java
Agregar el siguiente método a la clase NotaFacadeREST.java
Ver anexo3 (código fuente)
9
Verificar que se han insertado las librerías correctas.
Probar los servicios en el plugin rest de Mozilla
Consultar Notas agrupadas por carnet
http://localhost:8080/WebApplicationDB/webresources/sv.ues.fia.carnet.enti
dad.nota/prom/NN00001/
Notas:
*Suba el proyecto en la opción correspondiente del aula.
*Puede hacer pruebas de los servicios con las ips de prueba en el servidor de la eisi
En Lcomp3 u otro computo de la LAN EISI (10.10.60.3)
O desde otro dominio externo como desde su casa(138.255.154.43)
10
*El proyecto original esta descargable en el ftp de la asignatura (WebApplicationDB.rar)
Anexo1
@GET
@Path("by")
@Produces({"application/json"})
public List<Alumno> findByFecha(@QueryParam("fecha_modificado") String fechaact) {
//Obtenemos la fecha actual
Calendar calendario = GregorianCalendar.getInstance();
Date fechaActual = calendario.getTime();
SimpleDateFormat formatoFecha = new SimpleDateFormat("yyyy-MM-dd");
try {
//Parseamos la fecha a tipo DATE
Date fechaInicial = formatoFecha.parse(fechaact);
//Realizamos la consulta
Query q = getEntityManager().createNamedQuery("Alumno.findByFecha");
q.setParameter("fechaInicial", fechaInicial);
q.setParameter("fechaActual", fechaActual);
//Retornamos el resultado
return q.getResultList();
} catch (ParseException ex) {
//String de fecha con formato incorrecto
Logger.getLogger(AlumnoFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
11
12
Anexo2
@GET
@Path("by")
@Produces({"application/json"})
public List<Materia> findByFecha(@QueryParam("fecha_modificado") String fechaact) {
//Obtenemos la fecha actual
Calendar calendario = GregorianCalendar.getInstance();
Date fechaActual = calendario.getTime();
SimpleDateFormat formatoFecha = new SimpleDateFormat("yyyy-MM-dd");
try {
//Parseamos la fecha a tipo DATE
Date fechaInicial = formatoFecha.parse(fechaact);
//Realizamos la consulta
Query q = getEntityManager().createNamedQuery("Materia.findByFecha");
q.setParameter("fechaInicial", fechaInicial);
q.setParameter("fechaActual", fechaActual);
//Retornamos el resultado
return q.getResultList();
} catch (ParseException ex) {
//String de fecha con formato incorrecto
Logger.getLogger(MateriaFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
Anexo 3
@GET
13
@Path("prom/{carnet}")
@Produces(MediaType.APPLICATION_JSON)
public String getPromedio(@PathParam("carnet") String carnet) throws Exception {
Query q = getEntityManager().createNamedQuery("Nota.findAvg");
q.setParameter("carnet", carnet);
List<Nota> notas = q.getResultList();
Float suma = new Float(0);
for (Nota n : notas)suma = suma + n.getNotafinal();
JSONObject jo = new JSONObject();
try {
if (notas.isEmpty()) {
jo.put("promedio",0);
return jo.toString();
} else {
Float prom = suma / notas.size();
jo.put("promedio",prom );
return jo.toString();
}
} catch (JSONException ex) {
Logger.getLogger(NotaFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
Comentarios de: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL (0)
No hay comentarios