Existen distintas
tecnologías, plataformas, lenguajes y formas de implementar Web Services. En
este caso se va a implementar una aplicación web sencilla para consulta de
información utilizando tecnología Java, la cual devolverá la información en
formato JSON.
En primer lugar, comentar
que el Eclipse ADT Bundle no está habilitado para la implementación de
aplicaciones web, por lo que será necesario recurrir a otro tipo de entorno
como Eclipse IDE for JavaEE, que se trata de un entorno hermano al ADT Bundle,
o Netbeans si se busca un entorno muy sencillo de configurar y emplear.
En cualquiera de los
dos casos habrá que trabajar con dos IDEs abiertos en el mismo equipo, lo cual
puede perjudicar a la memoria del mismo, más aún si se emplean emuladores de
dispositivos móviles. La gran ventaja es poder depurar en ambos lados de la
comunicación para ver en qué punto del sistema se puede encontrar algún error.
Lo mínimo necesario
Una clase JavaBean que
representa la información del sistema:
public class Equipo
{
private String nombre;
private float presupuesto;
private int clasificacion;
private int gf;
private int gc;
public Equipo(){
}
public Equipo(String nombre, float presupuesto, int clasificacion,
int gf, int gc) {
this.nombre = nombre;
this.presupuesto = presupuesto;
this.clasificacion = clasificacion;
this.gf = gf;
this.gc = gc;
}
public int getClasificacion() {
return clasificacion;
}
public void setClasificacion(int clasificacion) {
this.clasificacion = clasificacion;
}
public int getGc() {
return gc;
}
public void setGc(int gc) {
this.gc = gc;
}
public int getGf() {
return gf;
}
public void setGf(int gf) {
this.gf = gf;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public float getPresupuesto() {
return presupuesto;
}
public void setPresupuesto(float presupuesto) {
this.presupuesto = presupuesto;
}
}
|
Una clase de servicio
para el acceso a la información, en este caso de ejemplo la información se
obtiene de forma directa, lo habitual será emplear un motor de persistencia y
los métodos adecuados para acceder a la información contenida en una base de
datos:
public class EquipoSvc {
/**
* Obtener la lista de equipos
* A sustituir por acceso a bdd
* @return lista de equipos
*/
public List<Equipo> listar(){
List<Equipo> lista = new ArrayList<Equipo>();
lista.add(new Equipo("Nottingham Prisa", 1.2F, 1, 16, 3));
lista.add(new Equipo("Steaua Nobebere", 0.9F, 2, 7, 4));
lista.add(new Equipo("Dinamo de Bici", 0.7F, 3, 6, 5));
lista.add(new Equipo("Atlético
Agujetas", 0.00001F, 4, 1, 18));
return lista;
}
}
|
Un Servlet para permitir
el acceso a la información. Es imprescindible disponer de la API Gson
configurada en el proyecto, la cual se encarga de la transformación de objetos
Java a su representación JSON correspondiente:
@WebServlet(name = "ChampionWS", urlPatterns = {"/ChampionWS"})
public class ChampionWS
extends HttpServlet {
private static final String
PARAM_OP = "op";
private static final String
OP_EQUIPOS = "equipos";
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException {
//Habilitado en desarrollo para poder probar con el navegador
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException {
response.setContentType("application/json;charset=UTF-8");
PrintWriter
out = response.getWriter();
try{
//Obtener la operación que requiere el usuario
String op =
request.getParameter(PARAM_OP);
//Responder al usuario en función de la operación solicitada
if (op.equals(OP_EQUIPOS)) {
equipos(request, out);
}
} catch (Exception ex) {
out.println(ex);
} finally {
out.close();
}
}
/**
* Obtener la lista de equipos
* @param request
* @param out
* @throws Exception
*/
private void equipos(HttpServletRequest request, PrintWriter
out)
throws
Exception {
//Obtener la lista de equipos
EquipoSvc svc = new EquipoSvc();
List<Equipo> lista =
svc.listar();
//Si los datos contienen fecha se formatearán con el patrón
Gson gson = new GsonBuilder().
setDateFormat("yyyy-MM-dd
HH:mm:ss").create();
//El objeto Gson transforma automáticamente la lista a formato JSON
out.println(gson.toJson(lista));
}
}
|
No hay comentarios:
Publicar un comentario