Java + JavaScript + JavaServerFaces(JSF)

Por Felipe Thomas
16/06/2008 – 16:29

Caro amigo leitor, gostaria de fazer-lhe uma simples pergunta? É possível desenvolvermos uma aplicação que contenha uma classe Java e essa classe comunique-se com um browser? Sabemos que esses dois itens(classe Java e browser) estão relacionados a tipos de propósitos diferentes, mas… gostaria de conceder a boa notícia. Sim, é possível fazermos essa comunicação entre uma classe Java e um browser usando Applet(classe Java) e JavaScript(linguagem utilizada pelo browser).

 

O melhor de tudo isso é que não é complicado a ponto de fazer pessoas desistirem de utilizar este recurso. Na verdade é muito simples. Para começar crie seu projeto web(dynamic web do Eclipse), o qual sugiro com o nome Java-JavaScript. Após ter criado o projeto, faça o download de um arquivo .jar que será fundamental para que nossa aplicação funcione com sucesso, o nome do arquivo é JSObject.jar, ele pode ser encontrado bem facilmente pela internet(o que seria de nós sem o google). Feito isso, coloque o JSObject.jar dentro do seu classpath. Pronto já temos todos os .jar de que precisamos!!

 

Bem, agora vamos desenvolver o código da nossa aplicação. Primeiro crie sua classe Applet dentro da pasta src que por sua vez esta dentro do seu projeto. Nessa classe Applet teremos um método chamado init() e nós o utilizaremos para testar nossa comunicação com o browser através de JavaScript. Só para tirar qualquer dúvida que possa surgir, o método init() é lido na primeira vez que o applet é carregado em memória(se você ainda assim não entendeu, a grosso modo, o método init() é lido quando você aciona o applet). Faça também o import do pacote de classes que iremos utilizar no nosso Applet: import netscape.javascript.*;

 

Não se preocupe, irei colocar um exemplo dessa classe aqui para você:

import javax.swing.JApplet;

import netscape.javascript.*;

public class JavaJS extends JApplet {

//Método iniciado quando o Applet é executado.

public void init() {

JSObject.getWindow(this).eval(”alert(\”Saudações Javanesas!\”)”);

JSObject win = JSObject.getWindow(this);

String[] args = {”Saudações Javanesas!”};

win.call(”alert”, args);

}

}

Perceba que dentro do nosso método init(), temos dois blocos de código. O primeiro faz exatamente o que o segundo faz, só que com a referência ao objeto win nós poderíamos realizar mais tarefas. No primeiro bloco de código dentro do método init(), teremos uma janela do tipo alert que será aberta quando o applet for iniciado, assim como no segundo bloco.

Agora, já que nosso Applet foi criado com sucesso, vamos empacotá-lo em um .jar e colocá-lo dentro de WebRoot do projeto criado pelo Eclipse. Para isso basta você clicar com o botão direito do mouse em cima do nome do seu projeto e escolher a opção Exportar… Não esqueça de colocá-lo dentro do diretório WebRoot(é o nome da pasta) do seu projeto. Se o seu browser não estiver reconhecendo a classe do seu Applet, então você precisará assiná-lo e para saber como fazer isto, consulte um outro tutorial feito por mim mesmo aqui no horizontesdigitais.com com o titulo de Assinatura de Applet.

 

Vamos criar agora nossa página com conteúdo JSF. A título de maior praticidade, vou colocar o código de exemplo logo abaixo. Não esqueça que para utilizar JSF você precisa do framework JSF. Caso você não tenha, basta baixar a versão mais recente e colocar os .jar do framework no seu classpath. Quem usa MyEclipse ainda pode ter a vantagem dele fazer isso mais praticamente, basta clicar com o botão direito do mouse em cima do nome do projeto e escolher a opção MyEclipse… e depois a opção Add JSF Capabilities.

 

Bem, segue o exemplo do conteúdo do arquivo com tags JSF. Coloque-o no arquivo index.jsp:

<%@ taglib uri=”http://java.sun.com/jsf/core” prefix=”f” %>

<%@ taglib uri=”http://java.sun.com/jsf/html” prefix=”h” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<meta http-equiv=”Content-Type”

content=”text/html; charset=iso-8859-1″ />

<title>Materia feita por Felipe Thomas</title>

</head>

<f:view>

<body>

<f:verbatim>

<jsp:plugin type=”applet”

archive=”JavaJS.jar”

code=”JavaJS.class” codebase=”.”

width=”480″ height=”224″ jreversion=”1.6″>

<jsp:params>

<jsp:param name=”MAYSCRIPT” value=”TRUE” />

</jsp:params>

</jsp:plugin>

</f:verbatim>

</body>

</f:view>

</html>

Nesse código temos algumas tags importantes para o bom funcionamento da nossa aplicação:

archive=”JavaJS.jar” É o nome do arquivo que você criou empacotando o Applet

code=”JavaJS.class” É o nome da sua classe + extensão .class . Note que os nomes dos que eu criei são os mesmos, mas isso não necessita ser desta forma. Se você tiver criado a classe dentro de um pacote, você DEVE colocar o nome completo do pacote aqui também.

codebase=”.” É o local onde se encontra-se o .jar .

<jsp:param name=”MAYSCRIPT” value=”TRUE” /> Essa tag é o que habilita a comunição entre applet e browser. Aqui você está dizendo “meu browser, você pode aceitar que um applet comunique-se com você através de JavaScript ok!!!”.

Tendo este código, precisamos ter no web.xml configurado adequadamente. Portanto segue o código correto:

<?xml version=”1.0″ encoding=”UTF-8″?>

<web-app xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” version=”2.5″ xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

<context-param>

<param-name>javax.faces.CONFIG_FILES</param-name>

<param-value>/WEB-INF/faces-config.xml</param-value>

</context-param>

<servlet>

<servlet-name>Faces Servlet</servlet-name>

<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

<load-on-startup>0</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>/faces/*</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

 

A comunicação também pode ser feita do JavaScript para o applet. O JavaScript pode fazer uma instância de um applet e usá-lo para comunicação. Deixaremos isto para um próximo tutorial ou caso algum leitor tenha interesse, basta solicitar que iremos atendê-lo o mais brevemente possível.

Pronto!!!

Agora, acione o tomcat(já pode ser usado o Tomcat 6), faça o deploy da sua aplicação, abra o browser(pode ser Firefox, Interner Explorer, Netscape …), digite a seguinte URL:

http://localhost:8080/Java-JavaScript/faces/index.jsp

E divirta-se bastante, por que você é jovem, êÊêÊêÊêÊêÊêÊêÊêÊêÊêÊêÊêÊ.

Muito obrigado…….

You must be logged in to post a comment.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.