Curso Ajax Con Java
Curso Ajax Con Java
Curso Ajax Con Java
Pagina 2 / 13
ndice de contenido
1. Introduccin al curso..............................................................................................................................3 1.1. Objetivo de este curso...................................................................................................................3 1.2. Manual del alumno.........................................................................................................................3 1.3. Ejercicios prcticos........................................................................................................................3 1.4. Requisitos para atender a este curso.............................................................................................3 1.5. Soporte despus del curso.............................................................................................................3 2. Introduccin...........................................................................................................................................4 2.1. Definicin y uso..............................................................................................................................4 2.2. Marcos de trabajo..........................................................................................................................4 3. Javascript avanzado..............................................................................................................................5 3.1. Javascript y CSS............................................................................................................................5 4. Ajax con Java........................................................................................................................................6 4.1. Llamada Ajax con HTML................................................................................................................6 4.2. Llamada Ajax con Java..................................................................................................................7 Servlet para Ajax..............................................................................................................................7 4.3. Listas con seleccin automtica.....................................................................................................9 4.4. Ajax y seguridad...........................................................................................................................10 5. Ejercicios.............................................................................................................................................11 6. Esquema de la base de datos.............................................................................................................12
www.detodoprogramacion.com
Versin 1.1
Pagina 2 / 13
Pagina 3 / 13
1. Introduccin al curso
1.1. Objetivo de este curso
En este curso vamos a aprender el uso de la tecnologa Ajax, que nos permitir crear pginas web ms dinmicas y ms atractivas.
www.detodoprogramacion.com
Versin 1.1
Pagina 3 / 13
Pagina 4 / 13
2. Introduccin
2.1. Definicin y uso
Ajax significa Asynchronous Javascript and XML. Basicamente, la tecnologa Ajax permite comunicar con sistemas remotos y/o refrescar partes de una pgina si necesidad de recargar la pgina. Algunos ejemplos del uso de Ajax: Lista con seleccin automtica de valor. Aplicaciones de chat 'Drag and drop' Validaciones extensas de formulario Mens dinmicos Personalizacin de pgina ...
www.detodoprogramacion.com
Versin 1.1
Pagina 4 / 13
Pagina 5 / 13
3. Javascript avanzado
3.1. Javascript y CSS
El Javascript interactua con las hojas de estilo para modificar la presentacin de los datos. Cualquier atributo de CSS y HTML se puede modificar usando Javascript. Recuerden que un atributo CSS prevalece sobre atributos HTML. js_css.jsp:
<html> <head> <link rel="stylesheet" type="text/css" href="css/estilo.css"> <SCRIPT language="JavaScript" src="js/soljava.js"></SCRIPT> <SCRIPT language="JavaScript" src="js/js_css.js"></SCRIPT> <title>www.solucionjava.com | Primera llamada con Java</title> </head> <body> <h1>Prueba de javascript con CSS</h1> <h2> Formulario</h2> <table align="left" id="tabla"> <tr> <th valign="top">Color de fondo de la pagina:</th> <td><input type="radio" name="bgcolor" value="#770022" onclick="changeBgColor(this.value)">Rojo<br> <input type="radio" name="bgcolor" value="black" onclick="changeBgColor(this.value)">Negro<br> <input type="radio" name="bgcolor" value="navy" onclick="changeBgColor(this.value)">Azul<br> <input type="radio" name="bgcolor" value="#005500" onclick="changeBgColor(this.value)">Verde<br> </td></tr> <tr><th valign="top">Color de letras de la pagina:</th> <td><input type="radio" name="fgcolor" value="red" onclick="changeFgColor(this.value)">Rojo<br> <input type="radio" name="fgcolor" value="white" onclick="changeFgColor(this.value)">Blanco<br> <input type="radio" name="fgcolor" value="#88aaff" onclick="changeFgColor(this.value)">Azul<br> <input type="radio" name="fgcolor" value="#00ff44" onclick="changeFgColor(this.value)">Verde<br> </td></tr> <tr> <th valign="top">Tamano de letras de la tabla:</th> <td><input type="radio" name="FontSz" value="10" onclick="changeFontSz(this.value)">10<br> <input type="radio" name="FontSz" value="12" onclick="changeFontSz(this.value)">12<br> <input type="radio" name="FontSz" value="14" onclick="changeFontSz(this.value)">14<br> <input type="radio" name="FontSz" value="8" onclick="changeFontSz(this.value)">8<br> </td></tr> <tr> <th valign="top">Alinear la tabla:</th> <td> <input type="radio" name="TbAlign" value="left" onclick="changeTbAlign(this.value)">A la izquierda<br> <input type="radio" name="TbAlign" value="right" onclick="changeTbAlign(this.value)">A la derecha<br> <input type="radio" name="TbAlign" value="center" onclick="changeTbAlign(this.value)">En medio<br> </td> </tr> </table> <hr style="clear: both;"> </body> </html>
js_css.js:
function changeBgColor(color){ document.body.style.backgroundColor=color; } function changeFgColor(color){ document.body.style.color=color; } function changeFontSz(valor){ document.getElementById("tabla").style.fontSize=valor; } function changeTbAlign(valor){ document.getElementById("tabla").align=valor; }
www.detodoprogramacion.com
Versin 1.1
Pagina 5 / 13
Pagina 6 / 13
www.detodoprogramacion.com
Versin 1.1
Pagina 6 / 13
Pagina 7 / 13
ajax_html.jsp:
<%@include file="include/cabecera.jspf" %> <title>www.solucionjava.com | Curso de Ajax | Primera llamada Ajax con HTML</title> </head> <body> <button onclick="getText();">Clic aqui</button> <div id="texto"> Este es mi bloque de texto inicial </div> <%@include file="include/pie.jspf" %> ajax_html.js: var req; function getText() { var url = "nuevo_texto.txt"; if (window.XMLHttpRequest) { req = new XMLHttpRequest( ); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } req.open("Get",url,true); req.onreadystatechange = callback; req.send(null); } function callback( ) { if (req.readyState==4) { if (req.status == 200) { document.getElementById('texto').innerHTML = req.responseText; } } }
nuevo_texto.txt:
<h2>Este es el texto desde el archivo en el servidor!</h2>
www.detodoprogramacion.com
Versin 1.1
Pagina 7 / 13
Pagina 8 / 13
ajax_java.js
var req; function buscaPaciente(campo ) { var url = "GetPatientDetails?no_patient=" + escape(campo.value); if (window.XMLHttpRequest) { req = new XMLHttpRequest( ); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } req.open("Get",url,true); req.onreadystatechange = callback; req.send(null); } function callback( ) { if (req.readyState==4) { if (req.status == 200) { document.getElementById('empList').innerHTML = req.responseText; } } }
GetPatientDetails.java:
package ajax; import java.io.IOException; import import import import import import javax.servlet.ServletException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; bd.LeerDB; com.solucionjava.db.ConnectDB;
public class GetPatientDetails extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer ajaxData=new StringBuffer(""); // Security check boolean isSecure=true; if (isSecure) { String no_patient=request.getParameter("no_patient"); LeerDB miDB = null;
www.detodoprogramacion.com
Versin 1.1
Pagina 8 / 13
Pagina 9 / 13
String sql="select * from patient where no_patient="+no_patient; try { miDB = new LeerDB(this.getServletName()); miDB.select(sql); if (miDB.getNext()) { ajaxData.append("<u>Nombre y apellidos:</u> "+miDB.getStringHTML("fname")+" "+miDB.getStringHTML("fname2")+" "+miDB.getStringHTML("lname")+""+miDB.getStringHTML("lname2")+"<br>"); ajaxData.append("<u>Fecha de nacimiento:</u> "+miDB.getDateLong("dnaiss") +"<br>"); } else ajaxData=new StringBuffer("Paciente numero "+no_patient+" no encontrado."); } catch (Exception e) { ajaxData=new StringBuffer("Error con el SQL : "+sql); e.printStackTrace(); } finally{ if (miDB!=null) miDB.cleanup(); } } else { ajaxData=new StringBuffer("Error de seguridad. Usted no tiene acceso a esta pagina."); } this.writeResponse(response, ajaxData.toString()); } public void writeResponse(HttpServletResponse resp, String output) throws IOException { resp.setContentType("text/plain"); resp.setHeader("Cache-Control", "no-cache"); resp.setHeader("Content", "text/html;charset=iso-8859-1"); resp.getWriter().write(output); }
web.xml: ... <servlet> <description></description> <display-name>GetPatientDetails</display-name> <servlet-name>GetPatientDetails</servlet-name> <servlet-class>com.solucionjava.ejemplosGetPatientDetails</servlet-class> </servlet> <servlet-mapping> <servlet-name>GetPatientDetails</servlet-name> <url-pattern>/GetPatientDetails</url-pattern> </servlet-mapping> ...
www.detodoprogramacion.com
Versin 1.1
Pagina 9 / 13
Pagina 10 / 13
<h1>Primera lista con seleccion automatica en Ajax con Java </h1> <h2> Seleccione la cuidad. Tecla un minimo de 2 letras</h2> <table align="left"> <tr> <td>Cuidad : </td> <td> <input type="hidden" name="no_city" id="no_city" value='76'> <input type="text" id="city" name="city" size="30" maxlength="200" value="Managua" onfocus="this.select();" title="Si no hay valor que cumple con el texto entrado, muestra ?? "/> <img src="images/lista3.gif" border="0" height="18px" class="noprint" onclick="document.getElementById('no_city').value=-1;document.getElementById('city').value='';" title="Borrar el valor" style="vertical-align: text-bottom;"> <div id="autocomplete_choices2" class="autocomplete"></div> <script type="text/javascript"> cityAjax = new Ajax.Autocompleter("city", "autocomplete_choices2", "AjaxListaDyn", {paramName: "ajaxSQL", minChars: 2, callback: getSql, afterUpdateElement : getSelectionId2,autoSelect: true }); </script> </td> </tr> </table> <input type="button" value="Ver valor de no_city" onclick="alert(document.getElementById('no_city').value);"> <%@include file="include/pie.jspf" %>
ajax_lista.js:
function getSql(field, value) { return "nolimit=SI&localSQL=city&ajaxSQL="+ escape(" where city_name like #"+field.value+"@# "+ " group by city_name"); } function getSelectionId2(text, li) { $('no_city').value=li.id; $("city").value=$("city").value.substring(0,$("city").value.lastIndexOf('--')); }
AjaxListaDyn.java:
package ajax; import javax.servlet.http.HttpSession; public class AjaxListaDyn extends AjaxList { private static final long serialVersionUID = 1L; protected String checkSecurity(HttpSession session) { return ""; // No verifico nada de seguridad } protected String translateSql(String localSQL, HttpSession session) { if (localSQL.equals("city")) localSQL = "select no_city, city_name, concat('-->',region) from city "; return localSQL; } protected void initConnection() { try { readDB = new LeerDB(this.getServletName()); } catch (Exception e) { e.printStackTrace(); } } }
www.detodoprogramacion.com
Versin 1.1
Pagina 10 / 13
Pagina 11 / 13
Nota: En caso de tener varias listas en una misma pgina, usar el parametro 'div=x' con un valor de div diferente para cada lista. Usar el atributo autoSelect="false" para que no se selecciona automaticamente el valor cuando solo hay 1 posibilidad. Usar minChar="x" para que inicia la bsqueda cuando se han entrado x caracteres (por defecto=2) Usar nolimit="x" para que limite la lista a los x primeros registros (por defecto son 100). En la clausula where, remplazar las simple comillas del SQL por #, los signos % por @, y escapar las doble comillas con \. Usar \+field_value+\ para insertar el valor teclado por el usuario.
www.detodoprogramacion.com
Versin 1.1
Pagina 11 / 13
Pagina 12 / 13
5. Ejercicios
1. Crear una pgina con un titulo (h1) y una tabla con 8 celdas de colores diferentes. Al pasar el ratn sobre una celda, el color de fondo del titulo se cambia al color de la celda. 2. Crear un formulario con nombre, apellido, fecha de nacimiento, sexo (radio), puesto de trabajo (lista), y salario. Comprobar antes de que se envie el formulario: Que los nombre y apellidos no sean nulos Que la fecha de nacimiento es vlida (dd/mm/yyyy) es en el pasado Que el salario es un numero>=0 Que se escogi el puesto de trabajo (Valor inicial: 'Elige') Que se escogi el sexo 3. Crear una pagina con un prrafo y un botn. Haciendo clic sobre el botn hace aparecer/desaparecer el prrafo de la vista y cambia el texto del botn. 4. Crear una pgina con un bloque de texto y un botn. Cada vez que se presiona el botn, se tiene que agregar los nmeros del 1 al 10 al final del bloque de texto, sin refrescar la pagina. 5. Crear una pgina con un contador=1 y un botn. Cada vez que se presiona el botn, se tiene que aumentar de 1 el contador, sin refrescar la pagina. 6. Crear una pgina con la lista de empleados y su salario. Permitir cambiar el salario directamente, sin salir de la pgina (Ajax). 7. Crear una pagina con una lista de empleados. Al hacer clic sobre un empleado, muestra sus detalle en otra parte de la misma pgina (Ajax).
www.detodoprogramacion.com
Versin 1.1
Pagina 12 / 13
Pagina 13 / 13
www.detodoprogramacion.com
Versin 1.1
Pagina 13 / 13