Página HTML aceita Java?

26 respostas
ssh

Pessoal, bom dia.

Estou com uma dúvida, pois preciso utilizar um <%= request.getRemoteHost();%> dentro de uma função javascript em uma página html.
é possível eu utilizar? obs a página é em html, mas o projeto em si é em java.

será que funciona?

obrigado.

att,

26 Respostas

E

porque você não faz o teste?

ssh

quero ter certeza antes de mexer dentro de um ambiente estritamente restrito, que causaria mto trabalho.

ssh

Acabei de fazer o teste, coloquei um alert dessa forma:

alert("<%= request.getRemoteHost();%>");

e não funcionou o alert printou justamente o conteúdo que inseri

Isso quer dizer que não funciona?

F

Quando você coloca o alert(“teste”) ;

Qualquer coisa entre “” ele vai entender como uma String e irá printar o que tiver dentro idêntico.

F

Você colocou o seu comando dentro de “” no alert.

Ele entende como uma String e irá exibir o conteúdo informado la dentro.

Idêntico.

F

Acabei de fazer o teste, coloquei um alert dessa forma:

alert("<%= request.getRemoteHost();%>");

e não funcionou o alert printou justamente o conteúdo que inseri

Isso quer dizer que não funciona?

Você colocou o seu comando dentro de “” no alert.

Ele entende como uma String e irá exibir o conteúdo informado la dentro.

Idêntico.

batista.gerson

tenta

alert('<%= request.getRemoteHost();%>');
F

Você colocou o seu comando dentro de “” no alert.

Ele entende como uma String e irá exibir o conteúdo informado la dentro.

Idêntico.

ssh

batista.gerson:
tenta

alert('<%= request.getRemoteHost();%>');

pessoal fiz o teste utilizando o que o batista nos disse, mas não funcionou.

continua dando o mesmo resultado.

obg.

CharlesAlves

Esse comando que você está tentando usar é um comando para ser usado em arquivos .jsp (Java Server Pages) que é quase um servlet java de forma mais simplificando usando html e EL se você quiser fazer algo do tipo com javaScript vai ter que encontrar a forma correta de fazer com JavaScript. Qual é o real motivo para estar querendo fazer esta requisição, o que vai fazer com esta informação posteriormente, poderia ser o caso de você estudar um pouco de Ajax e JavaScript ou modificar esta página de .html para .jsp

ssh

Então, amigo CharlesAlves.
O que eu quero nada mais é do que pegar o ip do visitante e adicioná-lo a um link. nesse formato:

Default.aspx?nome="+nome+"&email="+email+"&ip="+myIP()+"";

Eu já tentei utilizar uma função em javascript, mas no entanto ela não funciona no internet explorer, e já tentei utilizar $.ajax também e retorna undefinied.

veja as funções que já testei. O PROBLEMA É QUE NÃO FUNCIONA NO INTERNET EXPLORER!

function myIP()   
{         
    if (window.XMLHttpRequest)  
        xmlhttp = new XMLHttpRequest();         
    else   
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");         
         
    xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);         
    xmlhttp.send();         
         
    hostipInfo = xmlhttp.responseText.split("\n");         
         
    for (i=0; hostipInfo.length >= i; i++)   
    {         
        ipAddress = hostipInfo[i].split(":");         
        if ( ipAddress[0] == "IP" )   
            return ipAddress[1];         
    }                
    return false;         
}  

function myIP1()       
{         
    var ipAddress;  
      
    data = $.ajax({  
      url: "http://api.hostip.info/get_html.php",  
      async: false  
    }).responseText;       
    //alert(data);   
    hostipInfo = data.split("\n");      
    alert(hostipInfo);             
    ipAddress = hostipInfo[2].split(":");    
            
    return ipAddress[1];  
}

já testei as duas funções.
A segunda($.ajas) retorna undefinied no internet explorer.

obs: nos outros navegadores funciona normalmente.

Tem como me ajudar?

obrigado

CharlesAlves

Eu tenho uma funçãozinha que peguei no livro Use a Cabeça Ajax pra criar o xmlhttp, faz ai a alteração e vê se funciona

function createRequest() {
	try {
		request = new XMLHttpRequest();
	} catch (tryMS) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (otherMS) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = null;
			}
		}
	}
	return request;
}
CharlesAlves

Há duas formas de utilizar esta função ou você coloca ela inteira dentro do arquivo que vai utiliza-la, ou no caso mais recomendavel cria um arquivo separado e importa ele na página html que vai ser utilizado como faria com o jQuery por exemplo.

Ela cria um arquivo exatamente como você estava fazendo a unica diferença é que para o Internet Explorer mais atual o nome de referencia para os arquivos xmlhttp mudou.

Então de forma totalmente implementada ficaria assim

function myIP(){
    try {  
        var xmlhttp = new XMLHttpRequest();  
    } catch (tryMS) {  
        try {  
            var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");  
        } catch (otherMS) {  
            try {  
                var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
            } catch (failed) {  
                var xmlhttp = null;  
            }  
        }  
    }

    // Alerta caso não consiga o objeto para enviar a requisição ao servidor
    if (xmlhttp == null{
         // Coloca a mensagem que tu achar mais correta
         alert("mensagem de erro");
         //Termina a função
         return;
    }      
           
    xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);           
    xmlhttp.send();           
           
    hostipInfo = xmlhttp.responseText.split("\n");           
           
    for (i=0; hostipInfo.length >= i; i++)     
    {           
        ipAddress = hostipInfo[i].split(":");           
        if ( ipAddress[0] == "IP" )     
            return ipAddress[1];           
    }                  
    return false;           
}

ou caso queira fazer utilizando a função de forma completa

function createRequest() {  
        try {  
            request = new XMLHttpRequest();  
        } catch (tryMS) {  
            try {  
                request = new ActiveXObject("Msxml2.XMLHTTP");  
            } catch (otherMS) {  
                try {  
                    request = new ActiveXObject("Microsoft.XMLHTTP");  
                } catch (failed) {  
                    request = null;  
                }  
            }  
        }  
        return request;  
    }  

function myIP(){           
    var xmlhttp = createRequest();

    // Alerta caso não consiga o objeto para enviar a requisição ao servidor
    if (xmlhttp == null{
         // Coloca a mensagem que tu achar mais correta
         alert("mensagem de erro");
         //Termina a função
         return;
    }
           
    xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);           
    xmlhttp.send();           
           
    hostipInfo = xmlhttp.responseText.split("\n");           
           
    for (i=0; hostipInfo.length >= i; i++)     
    {           
        ipAddress = hostipInfo[i].split(":");           
        if ( ipAddress[0] == "IP" )     
            return ipAddress[1];           
    }                  
    return false;           
}

e na terceira ipotese tu cria um arquivo tipo util.js e coloca a minha função dentro dele e nas páginas html que for preciar da mesma função é só referenciar o arquivo dentro da tag

<head>
(...)
   <script type="text/javascript" src="js/util.js"></script>
(...)
</head>

Só uma coisa se form fazer a referencia na página ela tem que ficar antes do arquivo java script que vai utiliza-la e tem que ser a tag de abertura e fechamento completa não pode ser tipo que a porcaria do Internete Explorer não aceita ¬¬

ssh

Amigo, no Internet Explorer continua não funcionando!
OBS: Ele não cai em nenhum alert, e o I.E não acusa nenhum erro javascript(alerta amarelo embaixo da pagina).

<script type="application/javascript">
function createRequest() {  
    try {  
        request = new XMLHttpRequest();  
    } catch (tryMS) {  
        try {  
            request = new ActiveXObject("Msxml2.XMLHTTP");  
        } catch (otherMS) {  
            try {  
                request = new ActiveXObject("Microsoft.XMLHTTP");  
            } catch (failed) {  
                request = null;  
            }  
        }  
    }  
    return request;  
}  

function myIP()   
{     
	var xmlhttp = createRequest(); 
    
	if(xmlhttp == null)
	{
		alert("xmlhttp = null");
	}
	else
	{
		xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);         
		xmlhttp.send();         
			 
		//hostipInfo = xmlhttp.responseText.split("\n");         
			hostipInfo = xmlhttp.responseText;
			alert(hostipInfo);
		for (i=0; hostipInfo.length >= i; i++)   
		{         
			ipAddress = hostipInfo[i].split(":");         
			if ( ipAddress[0] == "IP" )   
				return ipAddress[1];  
				
		}                
		return false; 
	}
}
CharlesAlves

Eu ia sugerir alguns testes de retorno com alert mas já vi que fez isso, com relação a variavel hostipInfo, ela está recebendo os valores corretos quando utiliza outro navegador!?

quando usa o IE recebe alguma coisa ou apenas null?!

ssh

CharlesAlves:
Eu ia sugerir alguns testes de retorno com alert mas já vi que fez isso, com relação a variavel hostipInfo, ela está recebendo os valores corretos quando utiliza outro navegador!?

quando usa o IE recebe alguma coisa ou apenas null?!


Então charles, eu adicionei um alert na variavel xmlhttp.

e nos outros navagedores, funciona tudo direitinho, retornando os valores corretos.

var xmlhttp = createRequest(); 
	alert(xmlhttp);

e não aparece nada! muito estranho.

CharlesAlves

Será que o problema não é o java script do IE que está desativado!?

ssh

Cara, realmente acredito que possa ser, coloquei para exibir um simples alert no evento onclick, e não funcionou.

vou dar uma olhada, e qualquer coisa aviso.

obrigado.

ssh

Realmente a assinatura do javascript estava errada, erro bobo.

Mas mesmo assim, ainda não consigo pegar o ip do usuário utilizando javascript.

a $.ajax retorna undefinied, e em javascript puro, nao acontece nada.

CharlesAlves

Então usa o $.get ou $.post

Depois de abilitado tu vio se apareceu algum erro?!

Como é que está sendo chamado esse metodo?! a partir de um ação, quando a página é carregada, coloca ai a chamada, porque dependendo pode está sendo feita de forma errada para o IE ele é todo cheio de não me toque ¬¬

ssh

CharlesAlves:
Então usa o $.get ou $.post

Depois de abilitado tu vio se apareceu algum erro?!

Como é que está sendo chamado esse metodo?! a partir de um ação, quando a página é carregada, coloca ai a chamada, porque dependendo pode está sendo feita de forma errada para o IE ele é todo cheio de não me toque ¬¬

É isso que estou fazendo.
depois de capturar o ip, irei adicionar o valor em um elemento.href (mudar a direção do link). e só.
mas o problema está em recuperar o ip no internet explorer.

<script language="javascript" type="text/javascript">
function createRequest() {  
    try {  
        request = new XMLHttpRequest();  
    } catch (tryMS) {  
        try {  
            request = new ActiveXObject("Msxml2.XMLHTTP");  
        } catch (otherMS) {  
            try {  
                request = new ActiveXObject("Microsoft.XMLHTTP");  
            } catch (failed) {  
                request = null;  
            }  
        }  
    }  
    return request;  
}  

function myIP()   
{     
	var xmlhttp = createRequest(); 
	//alert(xmlhttp);
    
	if(xmlhttp == null)
	{
		alert("Erro na requisição XMLHttp.");
	}
	else
	{
		xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);         
		xmlhttp.send();         
			 
		hostipInfo = xmlhttp.responseText.split("\n");         
		//hostipInfo1 = xmlhttp.responseText;
		//alert(hostipInfo1);
		for (i=0; hostipInfo.length >= i; i++)   
		{         
			ipAddress = hostipInfo[i].split(":");         
			if ( ipAddress[0] == "IP" )   
				return ipAddress[1];  				
		}                
		return false; 
	}
}  
</script>


<form id="news" action="">
             <div class="campos">
                  <input class="nome" id="txtNome" name="txtNome" type="text" value="Digite aqui o seu nome" onfocus="setNone(this.id);"/>
                  <input class="email" id="txtEmail" name="txtEmail" type="text" value="Digite aqui o seu e-mail"  onfocus="setNone(this.id);"/>
                  <a class="botaook" id="btnOk" name="btnOk" href="" onClick="return myIP();"><img src="img/btok_03.jpg" /></a>             
             </div>
           </form>

Então cara, é assim que estou fazendo.

batista.gerson

ssh fiz um jsp e consegui pegar todos esses request. Inclusive o getRemoteHost() que vc quer.

<html>
<body bgcolor="white">
<h1> Request Parameters </h2>
<b>Request Method:</b> <% out.print(util.HTMLFilter.filter(request.getMethod())); %>
 <br>
  <b>URI: </b><%= request.getRequestURI() %>
  <br> 
  <b>Protocol:</b> <%= request.getProtocol() %>
  <br>
  <b>Servlet path:</b> <%= request.getServletPath() %>
  <br>
  <b>Path info:</b><% out.print(util.HTMLFilter.filter(request.getPathInfo())); %>
  <br>
  <b>Query string:</b><% out.print(util.HTMLFilter.filter(request.getQueryString())); %>
  <br>
  <b>Content length:</b><%= request.getContentLength() %>
  <br>
  <b>Content type:</b><% out.print(util.HTMLFilter.filter(request.getContentType())); %>
  <br>
  <b>Server name:</b><%= request.getServerName() %>
  <br>
  <b>Server port:</b><%= request.getServerPort() %>
  <br>
  <b>Remote user: </b><%= request.getRemoteUser() %>
  <br>
  <b>Remote address:</b><%= request.getRemoteAddr() %>
  <br>
  <b>Remote host:</b><%= request.getRemoteHost() %>
  <br>
  <b>Authorization scheme:</b><%= request.getAuthType() %> 
  <br>
  <b>Locale:</b><%= request.getLocale() %>
  <br>
  <b>Browser:</b><% out.print(util.HTMLFilter.filter(request.getHeader("User-Agent"))); %>
</body>
</html>
ssh

batista.gerson:
ssh fiz um jsp e consegui pegar todos esses request. Inclusive o getRemoteHost() que vc quer.

<html>
<body bgcolor="white">
<h1> Request Parameters </h2>
<b>Request Method:</b> <% out.print(util.HTMLFilter.filter(request.getMethod())); %>
 <br>
  <b>URI: </b><%= request.getRequestURI() %>
  <br> 
  <b>Protocol:</b> <%= request.getProtocol() %>
  <br>
  <b>Servlet path:</b> <%= request.getServletPath() %>
  <br>
  <b>Path info:</b><% out.print(util.HTMLFilter.filter(request.getPathInfo())); %>
  <br>
  <b>Query string:</b><% out.print(util.HTMLFilter.filter(request.getQueryString())); %>
  <br>
  <b>Content length:</b><%= request.getContentLength() %>
  <br>
  <b>Content type:</b><% out.print(util.HTMLFilter.filter(request.getContentType())); %>
  <br>
  <b>Server name:</b><%= request.getServerName() %>
  <br>
  <b>Server port:</b><%= request.getServerPort() %>
  <br>
  <b>Remote user: </b><%= request.getRemoteUser() %>
  <br>
  <b>Remote address:</b><%= request.getRemoteAddr() %>
  <br>
  <b>Remote host:</b><%= request.getRemoteHost() %>
  <br>
  <b>Authorization scheme:</b><%= request.getAuthType() %> 
  <br>
  <b>Locale:</b><%= request.getLocale() %>
  <br>
  <b>Browser:</b><% out.print(util.HTMLFilter.filter(request.getHeader("User-Agent"))); %>
</body>
</html>


Batista, obrigado pelo tempo dedicado.
Mas infelizmente não posso mudar o arquivo do projeto para a extensão .jsp.

o ideal mesmo é conseguir efetuar as requisições em javascript que estou tentando. porém, não funciona no internet explorer.

socorro! não sei mais o que fazer.

Minduin

Opa,

Veja se ajuda, teste em um html limpo....

Abs,
<html>
<head>
<script>
	function Trim(str){return str.replace(/^\s+|\s+$/g,"");}
	function myIP() {
		var ip_result;
		
		if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
		else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

		xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
		xmlhttp.send();

		hostipInfo = xmlhttp.responseText.split("\n");

		for (i=0; hostipInfo.length >= i; i++) {
			ipAddress = hostipInfo[i].split(":");
			if ( ipAddress[0] == "IP" ){			
				ip_result =  ipAddress[1];
				alert(ip_result);
				document.getElementById("form_teste").action="http://www.teste.com.br/ip="+Trim(ipAddress[1]);
				document.getElementById("form_teste").submit();
				//return ip_result;	
			}
		}

		
		//return false;
	}
</script>
</head>
	<form id="form_teste" action="">
	 <input type="image" onclick="myIP()"  src="SUA_IMAGEM"/>
	</form>
</html>
ssh
Minduin:
Opa,

Veja se ajuda, teste em um html limpo....

Abs,
<html>
<head>
<script>
	function Trim(str){return str.replace(/^\s+|\s+$/g,"");}
	function myIP() {
		var ip_result;
		
		if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
		else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

		xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
		xmlhttp.send();

		hostipInfo = xmlhttp.responseText.split("\n");

		for (i=0; hostipInfo.length >= i; i++) {
			ipAddress = hostipInfo[i].split(":");
			if ( ipAddress[0] == "IP" ){			
				ip_result =  ipAddress[1];
				alert(ip_result);
				document.getElementById("form_teste").action="http://www.teste.com.br/ip="+Trim(ipAddress[1]);
				document.getElementById("form_teste").submit();
				//return ip_result;	
			}
		}

		
		//return false;
	}
</script>
</head>
	<form id="form_teste" action="">
	 <input type="image" onclick="myIP()"  src="SUA_IMAGEM"/>
	</form>
</html>

Obrigado pelas dicas Minduin, irei testar e amanhã posto o resultado.

obrigado.

ssh

Pessoal, fiz o teste em um internet explorer mais recente aqui em casa, e ele me exibe essa menssagem, logo ao entrar na página

Nas versões anteriores não exibe essa menssagem.

Se eu clicar em

Allow blocked content
consigo pegar o ip normalmente.

o problema é, como fazer para que essa mensagem não apareça? e nas versões anteriores?

obrigado.

Criado 6 de fevereiro de 2012
Ultima resposta 7 de fev. de 2012
Respostas 26
Participantes 6