Mini tutorial, hablas de JSP asi que tienes java por ahí, bien, vamos a crear un webservice:
Recomendado:
1º Instalas netbeans
Manos a la obra:
1º Te creas un nuevo proyecto maven con arquetipo webapplication. (o usas el tuyo)
2º abres el pom.xml y le añades lo siguiente:
<dependencies>
...
<!-- JERSEY -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
</dependencies>
Con esto tienes la bonita implementación de JAVAX Jersey.
Bien, con lo anterior podemos crear nuestro webservice. Para ello:
1º Te creas una clase Java tal cual, ponle algún nombre chachi guay tipo ChachiAPI o similar.
2º Añade las notaciones a tu clase tal como en el ejemplo:
@Path("/api")
@Stateless
public class EpistemeAPI {
private static String ALLOWED_DOMAIN = "http://localhost";
/* ========= GET METHODS OF EPISTEME ========= */
/**
* Method to obtain a single entry
*
* @param entryId: The entry id
* @return Response: The response containing the requested entry
*/
@GET
@Path("/entry")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response getEntry(@QueryParam("entryId") String entryId) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
EntityManager em = emf.createEntityManager();
Entries entry = (Entries) em.createNamedQuery("Entries.findByIdEntries").setParameter("idEntries", entryId).getSingleResult();
Response customResponse = Response.ok(entry, MediaType.APPLICATION_JSON).
header("Access-Control-Allow-Origin", ALLOWED_DOMAIN).build();
return customResponse;
}
}
Ejemplo de POST:
@POST
@Path("/entry/new")
@Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON})
public Response newEntry(@FormParam("userId") String userId, @FormParam("entityId") String entityId, @FormParam("entryComment") String entryComment) {
String response = "HOLA QUE TAL ESTO ES UNA PRUEBA";
Response customResponse = Response.ok(response, MediaType.APPLICATION_JSON).
header("Access-Control-Allow-Origin", ALLOWED_DOMAIN).build();
return customResponse;
}
3º Resuelve las dependencias para que no explote, más o menos usarás las siguientes (siempre javax.loquesea):
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
4º Para las respuestas usa lo mismo que usas para "nutrir" a tus JSP, clases de mapeo de bd o lo que quieras, en eso estoy usando JPA en un intento fallido por usar Hibernate pero whatevs es un "stub"
Con lo anterior, tendrás una API de servicios REST que responderá a http://tuservidor/tucontexto/api/elmetodomolon.
Eso es tan chachi guay que te genera JSON molones sin tener que hacer "nah", simplemente devuelve tu lista de items, tu objeto login, lo que te plazca y debería tirar, obviamente en la práctica no lo hará asi que no dudes en preguntar.
P.D: No le hagas caso a los header, eso es una historia para el xdomain (CORS).
Ojalá te sirva!