Utilizar getJSON(jQuery) con Java(Struts) crossdomain.

Hace poco en un proyecto tuve que integrar información entre un html y un servlet (struts), tenia que ser con AJAX mediante un html generado con un javascript incrustado en cualquier dominio, claramente no es posible utilizar AJAX si el html esta en un dominio distinto al servidor que envía la respuesta, pero se puede hacer algo similiar.
¿Que hacer?
Existe una libreria llamada JSONP que permite incrustar archivos javascript despues de haber cargado la página y justamente es lo que utiliza la función $.getJSON() de jQuery.
¿Como generar un JSON “leible” por $.getJSON()?
Primero que nada, para consumir un JSON remoto debemos enviar el parametro jsoncallback y con valor “?”, despues en struts lo concatenamos a la respuesta que generemos. Es importante hacer esto ya que de otra forma no funcionará.
Por ejemplo si el JSON generado es:
{"nombre":"andres","edad":24}
La respuesta en struts debe quedar así.
?({"nombre":"andres","edad":24})
Por lo tanto, desde el lado del cliente debemos llamar de la siguiente manera al action de struts.
$.getJSON("http://10.10.20.101:8080/proyecto/controller.do?action=obtenerJson&jsoncallback=?",
function(data){}
//Imprimimos nombre
alert(data.nombre);
);
Del lado del servidor generamos así la respuesta
public ActionForward obtenerJson(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//Guardamos en una variable el JSON
String json = "{\"nombre\":\"Andres\",\"edad\":\"24\"}";
//Capturamos el parametro
String callback = request.getParameter("jsoncallback");
//Concatenamos la respuesta y dejamos entre parentesis la respuesta
String jsonOutput = callback + "(" + json + ")";
//Enviamos al jsp
request.setAttribute("variable",jsonOutput);
return mapping.findForward(forward);
}
Como JSON ayuda a la separación efectiva de capas y/o roles en J2EE. Parte II
En el post anterior, prometí argumentar como solucionar el “punto ciego” entre el area de programación y web con JSON.
Antes que nada, quiero mencionar 2 casos de exito de uso cotidiano.
1.- GMAIL:
Este es mi ejemplo favorito de como la precarga de objetos JSON ayuda al rendimiento, Gmail carga todos los mails, labels, carpetas con JSON (arreglos javascript) y los renderea obviamente con javascript.
2.-Netvibes:
Este es un caso extremo, practicamente todo el sitio se renderea con javascript utilizando objetos JSON, si no me creen solo vean el código fuente, casi nada de XHTML.
Como JSON ayuda a la separación efectiva de capas y/o roles en J2EE. Parte I
Mis comienzos en la informática parten con el mundo WEB, esto debido a una necesidad imperante de ganar dinero (pagarme la universidad), me fue mucho mas sencillo hacer páginas web. Por lo que gané bastante experiencia en el desarrollo de front-end, aprendiendo la diferencia entre XHTML Transitional y Strict o HTML, desarrollo de sitios lidiando con el infame Internet Explorer 6.
Introducción Java y JSON – Segunda parte (Con ejemplo)
Esta es la segunda entrega de Introducción a Json con Java y aquí veremos un ejemplo mas robusto y práctico de utilizar Java para generar objetos con la notación que nos exige Javascript osea JSON.
I: El requerimiento.
El webmaster del sitio del festival del viña nos pide la parrilla programática para incluirla en varias partes del sitio, como solución a su requerimiento nosotros le planteamos el uso de JSON.
Introducción Java y JSON – Primera parte (Con ejemplo)
Bienvenidos a la primera parte de “Introducción a Java y JSON”, la verdad no quiero ahondar en que es Java o que es JSON debido que hay miles de sitios donde pueden buscar definiciones.
El alcance de esta introducción es ilustrar el intercambio de datos entre un servidor de JAVA con un XHTML, algo que podemos hacer de diversas maneras pero en este caso nos toca ver con JSON, en esta primera entrega se limitará a generar JSON desde JAVA con una libreria de Google llamada GSON, en la segunda parte se verán ejemplos mas complicados y usos con Ajax.