martes, 6 de febrero de 2007

Java y Ajax sobre Fedora 6


Hace poco entre a un nuevo trabajo aqui en Lima, y bueno mi experiencia programando sobre linux habia sido casi nula, a nivel de usuario quizas, pero en fin. He estado desarrollando estas ultimas 3 semanas con el IDE Eclipe 3.2, base de datos MySqlServer 5, Servidor de Aplicaciones Tomcat y usando AJAX. Como escribi antes solo habia llegado a entender los conceptos basico de Ajax, asi como también uno que otro truquito simpatico.
En lo que se refiere a Java, encontre con un sistema, todavia no terminado, desarrollado sobre el framework FrontController, y asi como todo tiene sus ventajas y desventajas (En los ultimos meses me he vuelto "hincha" de Struts) tuve a disposición la documentacion (algo muy generico) de la aplicaciones y sus clases. El patrón DAO Factory usado era muy vago... estaba algo desordenado, no se usaba de la mejor manera, en cuanto a los servlets igual, a veces nos llenamos de servlets por las puras, en vista que estos redireccionan, me parece algo descabellado usar un servlet para solo un ingresar o cosas por el estilo (creo yo, espero no equivocarme). En cuanto a lo de Ajax, habia implementado sus propios metodos y clases sin usar un framework de los tantos que hay, me parecio genial, porque me dio la oportunidad de entender mas a fondo como se maneja ajax y sus peticiones. De ahi vi que unir Ajax con Java (cosa que por tiempo no habia intentado) no es nada del otro mundo, aunque de manera muy "rustica" pero ahi estaba esta interactuando mi aplicación JAVA con Ajax.
Tengo una clase JavaScript en la cual tengo algo asi
function miAjax(url) {
this.url = url;
var req = init();
req.onreadystatechange = processRequest;

function init() {
if (window.XMLHttpRequest) { return new XMLHttpRequest(); }
else if (window.ActiveXObject) {
isIE = true;
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
function processRequest () {

if (req.readyState == 4) {
if (req.status == 200) {
postProcess(req.responseXML);
}
} }
this.send = function() {
req.open("GET", url, true);
req.send(null);
}
}
con eso establesco mis peticones ajax.
por ejemplo en mi jsp hago los siguiente.
<input id="txtAjax" onkeypress="metodoX()" type="text">
en mi libreria JavaScript tambien debo de ese metodo llamado metodoX() q me capture el valor de la caja de texto ejemplo

var cajita = document.getElementById("txtAjax");
var url = '/PruebaAjaxAction.do?nombre='+cajita.value; //usando los Action de Struts

en el action genero un xml con el StringBuffer asi(uso una clase llamada service q me obtiene el metodo que accesa a los datos de la BD):

MiTablaService mtsv = new MiTablaService();
List lstX = mtsv.listaFiltro(request.getParameter("nombre"));

StringBuffer sb = new StringBuffer();
recorro la lista, casteo sus elementos a un determinado bean

sb.append(""+bean.getX()+"");


asi hasta llenarlo. esto lo recupero en la libreria de JavaScript con el metodo declarado antes. postProcess, q obtiene un responseXML, y eso ya bueno investigan un poco jeje... le recuperan y pueden generar elementos, que si quieren lo añaden a una tabla para que se filtre mientras escribes en la caja de texto.
Les pongo la plantilla que uso de pruebas. En la parte inferior de esa pantalla uso una libreria de javascript llamada rico, que me produce el efecto acordeon.

No hay comentarios.: