Comunicar Java (Applet) y JavaScript (Comunicación Web)
Hoy ,dia domingo y aun de vacaciones , estaba aburrido a no poder mas. y para no perder mi tiempo intente conectar a Java (Applet) con JavaScript, Habia visto JavaScript conectado con Flash pero no Java con JavaScript. Por lo que Busque y busque alguna forma de conectarlos y encontre esto.
En JCreator cree un proyecto «Basic Java Applet» y me Genero Automaticamente este codigo:
JavaJavaScript.java
import java.awt.*; import java.applet.*; public class JavaJavaScript extends Applet { public void init() { } public void paint(Graphics g) { g.drawString("Welcome to Java!!", 50, 60 ); } }
a ese codigo le agregue un metodo holaMundo() que me devolviera un String ( se supone que despues quiero llamar a ese metodo desde javascript , por lo tanto debe devolverme alguna cosa)
import java.awt.*; import java.applet.*; public class JavaJavaScript extends Applet { public void init() { } public void paint(Graphics g) { g.drawString("Welcome to Java!!", 50, 60 ); } public String holaMundo() { return "Fui llamado desde JavaScript :D"; } } }
luego de eso compile y me genero un archivo lamado JavaJavaScript.class.
Despues de hacer eso cree un pequeño plugin JavaScript usando jQuery
(function($) { var idApplet = null; var returnData = null; jQuery.initApplet = function( id ){ idApplet = id; return this; } jQuery.callMethod = function( metodo,parametros ){ if(parametros != null) return eval('document.all["'+idApplet+'"].'+metodo+'("'+parametros+'")'); else return eval('document.all["'+idApplet+'"].'+metodo+'()'); } })(jQuery);
La forma de usarlo es:
$.initApplet(NOMBRE_DEL_APPLET).callMethod(METODO_A_LLAMAR,[PARAMETROS_DEL_METODO]);
Despues de hacer eso ya estaba listo para testear el codigo usando HTML.
<a href="#">Testear</a>
Al hacer Click en el link «Testear» llama al metodo del Applet, el applet retorna datos y esos datos son tomados nuevamente por javascript y los muestra por alert
Como ven no es tan complicado.
Utilidades:
– Los Applet son muy feo esteticamente, pero tiene la fortaleza de ser una aplicacion java. Al poder comunicar Javascript con Java se podrian hacer diseños utilizando CSS y Javascript pero corriendo por abajo Java.
– El ancho de Banda mensual en los hostings es siempre un punto en contra al querer utilizar recursos de otras webs. Usando java se ahorra esa transferencia al ser utilizado por el lado del cliente (El usuario usa su ancho de banda y recuersos para conectarse). Por lo que se podria hacer una web que utilice recursos de otras webs con Java pero manipulados con JavaScript
Aqui hice un Ejemplo que conecto a mi Twitter desde un applet y los datos descargados de twitter son manipulados por javascript
Aca el ejemplo:
Codigo Java (Applet)
/** * @(#)JavaJavaScript.java * * JavaJavaScript Applet application * * @author Esteban Fuentealba * @version 1.00 2009/7/27 */ import java.awt.*; import java.applet.*; import java.net.*; import java.util.Scanner; public class JavaJavaScript extends Applet { private HttpURLConnection con; private String link=""; private URL url; public void init() { this.link = getParameter("urlLink"); try { url = new URL(this.link); } catch(Exception ex) { } } public void paint(Graphics g) { g.drawString("Welcome to Java!!", 50, 60 ); } public String getMiWeb() { System.getSecurityManager().checkPermission(new SocketPermission(url.getHost(), "connect")); StringBuffer sb = new StringBuffer(); try { con = (HttpURLConnection)this.url.openConnection(); con.connect(); Scanner scan = new Scanner(con.getInputStream()); while(scan.hasNext()) { sb.append(scan.nextLine()); } } catch(Exception ex) { sb.append(ex.getMessage()); } return(sb.toString()); } }
Codigo HTML – JavaScript
(function($) { var idApplet = null; var returnData = null; jQuery.initApplet = function( id ){ idApplet = id; return this; } jQuery.callMethod = function( metodo,parametros ){ if(parametros != null) return eval('document.all["'+idApplet+'"].'+metodo+'("'+parametros+'")'); else return eval('document.all["'+idApplet+'"].'+metodo+'()'); } })(jQuery); //Metodo JavaScript que Llama al metodo getMiWeb Java function onOpen() { var obj = $.initApplet('test').callMethod('getMiWeb'); $(obj).find('item').each(function(){ $('#resultados').append($(this).find('title').text()+"<br />"); }); } <h1>Ejemplo Java (Applet) a JavaScript</h1> <br /> <!-- Le paso como parametro al applet mi link RSS de twitter --> <a href="#">Carga Datos de mi Twiter</a> <!-- Div contendra la informacion --> <div id="resultados"></div>
Aca el Ejemplo Funcionando:
http://estebanfuentealba.net/ejemplos/JavaJavaScript/classes/JavaJavaScript.htm
PD: Testeado en Firefox 3.5.1
Espero que a alguien le sirva o le paresca interesante
Saludos!
Mp3Spider Version 2.0 en Java
Ultimo post antes que me corten el servicio de hosting ya que no lo he pagado xD
es un adelanto, una screen shot de Mp3Spider prgramado en java
IMG:
http://img36.imageshack.us/img36/3558/mp3spiderjava.png
Pronto espero terminarlo.
Examen Transversal Programacion de Base de Datos (OCA DEVELOP)
Hoy fue dia de examenes, este es el «Examen» de programacion de base de datos, una burla de examen comparado con el Certamen II de la misma asignatura =/
Pregunta 1
CREATE TABLE f ( a NUMBER, b VARCHAR(50) );
BEGIN FOR i IN 5..9 LOOP IF i = 5 THEN INSERT INTO f VALUES(i,'Cinco'); ELSIF i = 6 THEN INSERT INTO f VALUES(i,'Seis'); ELSIF i = 7 THEN INSERT INTO f VALUES(i,'Siete'); ELSIF i = 8 THEN INSERT INTO f VALUES(i,'Ocho'); ELSIF i = 9 THEN INSERT INTO f VALUES(i,'Nueve'); END IF; END LOOP; END; /
CREATE OR REPLACE PROCEDURE actualizaTodos IS CURSOR datos_cursor IS SELECT * FROM f FOR UPDATE OF a; BEGIN FOR iterador IN datos_cursor LOOP IF LENGTH(iterador.b) = 5 THEN UPDATE f SET a = (iterador.a * iterador.a), b = '('||iterador.b||')^2' WHERE CURRENT OF datos_cursor; END IF; END LOOP; END; /
Pregunta 2
CREATE TABLE PRODUCTOS ( CO_PRODUCTO NUMBER, NO_PRODUCTO VARCHAR(100), CONSTRAINT pk_productos_CO_PRODUCTO PRIMARY KEY(CO_PRODUCTO) );
CREATE TABLE PRECIOS_PRODUCTOS ( CO_PRODUCTO NUMBER, PRECIO NUMBER, FECHA_ACTUALIZACION DATE, CONSTRAINT fk_PP_CO_PRODUCTO FOREIGN KEY(CO_PRODUCTO) REFERENCES PRODUCTOS(CO_PRODUCTO) );
CREATE OR REPLACE TRIGGER trigg_precioAlProducto AFTER INSERT ON PRODUCTOS FOR EACH ROW BEGIN INSERT INTO PRECIOS_PRODUCTOS (CO_PRODUCTO,PRECIO,FECHA_ACTUALIZACION) VALUES(:NEW.CO_PRODUCTO,100,SYSDATE); END; /
/* Creo una sequencia */ CREATE SEQUENCE seq_productos MINVALUE 1 START WITH 1 INCREMENT BY 1; /* Ingreso algunos datos */ INSERT INTO PRODUCTOS VALUES(seq_productos.NEXTVAL,'Pantalon'); INSERT INTO PRODUCTOS VALUES(seq_productos.NEXTVAL,'Zapatos'); INSERT INTO PRODUCTOS VALUES(seq_productos.NEXTVAL,'Comida'); /* Selecciono los datos */ SELECT PRODUCTOS.CO_PRODUCTO, PRODUCTOS.NO_PRODUCTO, PRECIOS_PRODUCTOS.PRECIO, PRECIOS_PRODUCTOS.FECHA_ACTUALIZACION FROM PRODUCTOS INNER JOIN PRECIOS_PRODUCTOS ON PRODUCTOS.CO_PRODUCTO = PRECIOS_PRODUCTOS.CO_PRODUCTO;
Ese fue el ‘examen’… parece que lo hicieron a ultima hora y a la mala XD
Saludos!.
Introduction To Oracle9i – PL/SQL – Student Guide
Aqui dejo los libros que utiliza el profe para enseñarnos PL/SQL xD
Introduction_To_Oracle9i_-_PL-SQL_-_Student_Guide_-_Volume_1.pdf
Introduction_To_Oracle9i_-_PL-SQL_-_Student_Guide_-_Volume_2.pdf
Saludos!.
Examen Transversal LENGUAJE DE PROGRAMACION II (MS NET)
Esto es lo que escribi del examen de ayer
Enunciado:
Examen Transversal
Se debe construir una aplicacion web que consta de 5 páginas utilizando el modelo de capas , la cual se
utilizará para el registro de órdenes de trabajo y su respectivo detalle, para una empresa que repara vehículos.
Descripcion de las páginas y su funcionalidad
Default.aspx
Permite la autenticación Basandose en los usuarios existentes en la tabla Usuarios y restringiendo el acceso a todas las
páginas mientras no se haya iniciado sesión o esta se haya cerrado, considere además un menú para la navegación.
Pagina1.aspx
Permite almacenar una orden en la tabla Orden.
Restricciones:
- El valor de la mantención debe ser mayor a 0.
- El kilometraje debe ser múltiplo de 5000.
Pagina2.aspx
permite agregar un nuevo servicio en la tabla Servicios.
Restricciones
- Descripcion debe tener al menos 6 caracteres
Pagina3.aspx
Permite consultar las órdenes de servicio, utilizando un control GridView paginado y seleccionable. Al Seleccionar
una orden se muestran sus detalles asociados en un DetailsView.
Pagina4.aspx
Permite agregar o actualizar un nuevo usuario con la función «user» o «admin», para ambos casos debe utilizar un servicio web como
capa intermedia, la cual se comunica con procedimientos almacenados. Recuerde que solo los administradores pueden agregar nuevos usuarios.
Script SQL Proporcionado:
Forma_A.sql
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Servicios]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Servicios]( [cod_servicio] [nchar](10) NOT NULL, [Descripcion] [varchar](50) NOT NULL, CONSTRAINT [PK_Servicios] PRIMARY KEY CLUSTERED ( [cod_servicio] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usuarios]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[usuarios]( [rut] [char](10) NOT NULL, [password] [char](10) NOT NULL, [habilitado] [char](2) NOT NULL, [funcion] [char](10) NOT NULL, CONSTRAINT [PK_usuarios] PRIMARY KEY CLUSTERED ( [rut] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Orden]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Orden]( [nroOrdenTrabajo] [nchar](10) NOT NULL, [Patente] [char](6) NOT NULL, [RutCliente] [char](10) NOT NULL, [valorMantencion] [int] NOT NULL, [kilometraje] [int] NOT NULL, CONSTRAINT [PK_Orden] PRIMARY KEY CLUSTERED ( [nroOrdenTrabajo] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DetalleOrden]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[DetalleOrden]( [nroOrdenTrabajo] [nchar](10) NOT NULL, [cod_servicio] [nchar](10) NOT NULL ) ON [PRIMARY] END GO IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_DetalleOrden_Orden]') AND parent_object_id = OBJECT_ID(N'[dbo].[DetalleOrden]')) ALTER TABLE [dbo].[DetalleOrden] WITH CHECK ADD CONSTRAINT [FK_DetalleOrden_Orden] FOREIGN KEY([nroOrdenTrabajo]) REFERENCES [dbo].[Orden] ([nroOrdenTrabajo]) GO ALTER TABLE [dbo].[DetalleOrden] CHECK CONSTRAINT [FK_DetalleOrden_Orden] GO IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_DetalleOrden_Servicios]') AND parent_object_id = OBJECT_ID(N'[dbo].[DetalleOrden]')) ALTER TABLE [dbo].[DetalleOrden] WITH CHECK ADD CONSTRAINT [FK_DetalleOrden_Servicios] FOREIGN KEY([cod_servicio]) REFERENCES [dbo].[Servicios] ([cod_servicio]) GO ALTER TABLE [dbo].[DetalleOrden] CHECK CONSTRAINT [FK_DetalleOrden_Servicios]
Mi Solucion:
ETLDP3501-Fuentealba-Esteban.rar