+2

Integrando o PHP com Java (parte 2)

criado por Rodrigo Rodrigues em 26/04/2004 11:58am
Recomendo que vejam antes a primeira parte (http://www.phpbrasil.com/articles/article.php/id/777) deste artigo, todas informações necessárias sobre configurações estão descritas nele.

Faremos agora nossa classe "Java" principal onde terá todas as funções do sistema, seguindo um passo a passo bem simples e objetivo.
Observações importantes:
-> Métodos no Java é o mesmo que funções no PHP.
-> Todos os métodos deverão ter seu controle de acesso "public".

JavaPHP.java
**
package br.com.phpbrasil.artigo;

import java.sql.*;

public class JavaPHP {
    public JavaPHP() {
    }

    public boolean doProcessaForm(String usuario, String senha) {
        if (usuario.equalsIgnoreCase("phpbrasil") && senha.equalsIgnoreCase("senha")){
            return true;
        }
        return false;
    }
}
**

Criamos nossa classe(JavaPHP) dentro do package(br.com.phpbrasil.artigo) com 2 métodos.
Importamos o pacote(java.sql.*) padrão de Conexão com Banco de Dados.
Método construtor "JavaPHP()" sem nenhuma execução.
Método "doProcessaForm(String usuario, String senha)" do tipo Boolean(true|false) espera como paramêtros 2 Strings, ele retorna um boolean conforme o valor das Strings, o método "equalsIgnoreCase(String)" vem da classe String, ele compara o valor da String e retorna um boolean.

Agora criaremos nossa classe PHP "principal" para interagir com o Java.

classe_main_phpjava.php
**
class JavaPHP {
    function JavaPHP() {
        $this->packageJava = "br.com.phpbrasil.artigo."; // Import do Pacote do Sistema.
        $this->javaPhp = new Java($this->packageJava.'JavaPHP'); // Variável($this->javaPhp) da classe instância do objeto Java.
    }

    function doProcessaForm($usuario, $senha) {
        if ($this->javaPhp->doProcessaForm($usuario, $senha)){
            echo "Ok, usuário válido.";
        } else {
            echo "Senha ou Login incorretos.";
        }
    }
}
**

Nossa classe(JavaPHP) PHP tem a mesma nomenclatura da classe Java para facilitar na manutenção dos scripts.
A função construtora "JavaPHP()" cria uma variável($this->javaPhp) da classe com o valor objeto do Java, depois quando precisarmos chamar algum método fazeremos assim "$this->javaPhp->nomeDoMetodo()".
A função "doProcessaForm($usuario, $senha)" processará nosso "primeiro" exemplo com formulário, ela verifica o retorno do método Java(doProcessaForm) e printa uma mensagem conforme o valor de retorno.

Criaremos nosso formulário.
index.php
**
<?php 
include_once("classe_main_phpjava.php");

$acao = $_POST['acao'];
if ($acao == "enviar"){
    $javaPHP = new JavaPHP();
    $javaPHP->doProcessaForm($_POST['usuario'], $_POST['senha']);
}
?>
<html>
<head>
<title>Interagindo Java+PHP</title>
</head>

<body>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>" name="">
<input type="hidden" name="acao" value="enviar">
Usuário: <input type="text" name="usuario"><br>
Senha: <input type="password" name="senha"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
**

Nesta página criamos um formulário Html Simples com os campos "Usuário,Senha", caso coloque os valores usuário "phpbrasil" e senha "senha", retornará um true no método "doProcessaForm()" e printará a mensagem de usuário válido na página.

Aprendemos até aqui o básico, fizemos nossas classes(Java e Php) e interagimos ela com o browser num form, na próxima página veremos conexão com o Banco de Dados Mysql através do Java.

Comentários:

Mostrando 1 - 9 de 9 comentários
Olá, Rodrigo:
O JavaScript abaixo não roda através do navegador Firefox. Será que VC poderia me ajudar alterando algum(s) parâmetro(s) ? Agradeço desde já = Fiumari:
<script language="JavaScript"> var ultimo=-1, dBanner;
function carrega(x) {dBanner=x;Banners()}
function Banners()
{ var MNews = new Array();
MNews[0]= '<iframe " name="_blank" scrolling="no" src="http://www.finet.com.br/google.htm" width="100%" frameborder="0" target="_blank" height="350" BORDER="0"></iframe><a href="http://www.finet.com.br/google.htm" target="_blank"></a>';
MNews[1]= '<iframe " name="_blank" scrolling="no" src="http://www.finet.com.br/google2.htm" width="100%" frameborder="0" target="_blank" height="350" BORDER="0"></iframe><a href="http://www.finet.com.br/google2.htm" target="_blank"></a>'
while((Numero = parseInt(Math.random()*MNews.length))==ultimo);
dBanner.innerHTML=MNews[Numero];
setTimeout("Banners()",15000);
} </script>
03/09/2007 11:06am (~17 anos atrás)

Prezado amigo,

Li os seus artigos no PHPBRASIL sobre php com java e estão sendo muito úteis para mim. Entretanto estou com uma dúvida terrível e peço sua ajuda.

eu estou usando dois arquivos .jar

httpclient.jar e getUrl.jar

eu coloquei assim no meu php.ini:
java.class.path = "C:\apache\php\JAVA\php_java.jar;C:\apache\php\java_class\getUrl.jar;C:\apache\php\java_class\getUrl.jar\commons-httpclient-2.0.2.jar;C:\apache\php\java_class"
java.home = "C:\j2sdk1.4.2_05\bin"
java.library = "C:\j2sdk1.4.2_05\jre\bin\server\jvm.dll"
java.library.path = "C:\apache\php\extensions"

entretanto quando rodo a página php que eu fiz, ele lança uma ClassNotFound Exception.

vc poderia me dizer como que eu faço para ele encontrar os meus .jar ?

meu php está assim:
<?
$url_final = "http://www.uol.com.br";
$string_url=(String) $url_final;
$getStj = new Java("GetStj");

$html=$getStj->getHtml($string_url);
?>

desde já agradeço imensamente.

Alexandre
23/03/2005 1:02pm (~20 anos atrás)

DAVID disse:
¿qUE SERVIDOR UTILIZAIS APACHE SOLO?
13/05/2004 8:32am (~20 anos atrás)

Nesse link(http://www.phpbrasil.com/scripts/download.php/id/2315) tem a versão "completa" do artigo.
04/05/2004 11:44am (~20 anos atrás)

DAVID disse:
Tengo un proflema tengo una clase java con una función que llama a System.out.println("Hola"); y una pagina php que llama a este método, y el sistema me da un error, si quito esta linea funciona bien. Me gustaría saber si tengo que realizar álgún cambio en la configuración para redireccionar la salida estandard o que muchas gracias y perdon por no hablar portugés
04/05/2004 3:26am (~20 anos atrás)

Bom, com essa integração da pra perceber como pode ser forte o uso combinado dos dois. É claro, que prefiro usar o Mysql com o php e integrar o java para algo livetime, mas seu exemplo é de muito bom tamanho e me mostrou como posso integrar essas duas linguagens poderosas, e que tem, de certo modo, um uso diferente, o que possibilita algo grande e bem feito.
29/04/2004 11:58am (~20 anos atrás)

O artigo devia explorar rapidamente a documentação da parte de SQL em Java, pois isto ficou obscuro e atrapalhou o entendimento do funcionamento da classe JavaPHP criada.
Fora isto, a intenção do artigo foi atingida, deixando claro a integração PHP, Java e MySQL.
parabéns!
27/04/2004 4:44pm (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)