[color=red]Obrigado a todos que responderam a pergunta original, “como descobrir coisas com JavaScript”, porém resolvi ampliar a discussão e perguntar como “descobrir coisas” com Java mesmo.[/color]
Gostaria de saber como é possível, em Java,
. “Descobrir coisas” como o Browser do usuário, seu Sistema Operacional, IP, país etc?
. Se existem códigos/frameworks/bibliotecas “prontas” que fazem isso? Ou se é preciso fazer tudo “na unha”?
. Como persistir dos “dados descobertos” em BD?
Em tempo: eu não quero um “produto”, um “google analytics” da vida; quero é aprender a capturar esses dados por conta própria.
[color=blue]Imagino que isso dá para ser feito via JSP - mal comparando - mais ou menos como é feito via PHP, porém confesso não saber como…[/color]
Se voce tiver algum navegador netscape-* com plugin java, pode fazer
var ip = java.net.InetAddress.getLocalHost().getHostAddress();
senao
var ip = '<!--#echo var="REMOTE_ADDR"-->'; //nem sempre dá certo
Para persistir esses dados são n-formas também, se levar em conta que precisa passar pro servidor, pode fazer por Ajax ou formas na ação da pagina mesmo.
para salvar isto em banco de Dados, envia isto por JSON para o servidor e guarda os dados, lembrando que deve ao invés de mostrar na tela guardar em uma variável ou montar o JSON de uma vez.
ok?
Mas vc tmbém pode pegar esses dados no servidor, isso não seria melhor?
Aproveitando este topico de javascript, alguem sabe como faço para enviar o Foco para determinado item de um listbox, e como fazer um auto complete? estou usando o Visual Jsf, se alguem pudesse me dar uma luz agradeceria muito.
Agora, para autocomplete, você deve fazer o seguinte::
crie uma div com posição absoluta abaixo do input text, ao digitar, você pegará o onmouseout, ou out em jquery e enviará um json ou post para o servidor, o resultado você populará a div que por sua vez voce colocará uma tag tipo ul li e pegará o seu conteúdo quando clicado, e ainda, pegue as setas com seu código na tabela ASCII e permita que o usuário possa direcionar pelo teclado qual ele queira usar, ok?
Bom, muito simples mesmo, caso tenha dúvida, só perguntar, flw
Descobrir, à partir do IP, em que país o usuário está me parece ser mais fácil que descobrir, por exemplo, em que estado brasileiro ele está… alguma ideia quanto a isto?
Bom meu caro, isso é meio complicado porque vc deverá saber a qual DNS o ip do seu cliente está acessando, e para isso, vc deverá ter uma base de dados com as faixas de IPs que os DNS estão responsáveis, e assim fazer o cálculo para verificar entre qual faixa o cliente está situado, isto se consegue através dos servidores mundiais responsáveis pela distribuição, e aliás, você deverá estar sempre atualizado em relação à isso.
Bom, o caso é, conseguir os endereços dos servidores DNS e suas respectivas faixas.
Não é legal você alterar o tópico como fez. Os posts ficaram todos sem sentido e não vão ter utilidade para quem procurar.
De qualquer forma, esses dados que você quer estão no cabeçalho da requisição HTTP. Dê uma olhada no protocolo.
Ex: browser, versão, SO estão no user-agent, referer (URL de onde o usuário veio) etc. Tudo isso é o browser que me manda, então obviamente não é confiável.
No java: request.getHeader(“user-agent”).
EL: ${header[“user-agent”]}
edit: vai retornar a string que você vê aqui: http://whatsmyuseragent.com/
edit2: pro IP tem o método getRemoteAddr() do request. Tudo da requisição fica nesse objeto.
[quote=Schuenemann]Não é legal você alterar o tópico como fez. Os posts ficaram todos sem sentido e não vão ter utilidade para quem procurar.
De qualquer forma, esses dados que você quer estão no cabeçalho da requisição HTTP. Dê uma olhada no protocolo.
Ex: browser, versão, SO estão no user-agent, referer (URL de onde o usuário veio) etc. Tudo isso é o browser que me manda, então obviamente não é confiável.
No java: request.getHeader(“user-agent”).
EL: ${header[“user-agent”]}
edit: vai retornar a string que você vê aqui: http://whatsmyuseragent.com/
edit2: pro IP tem o método getRemoteAddr() do request. Tudo da requisição fica nesse objeto.[/quote]
Concordo plenamente com nosso amigo aí em cima, se for o caso, cria um novo tópico e manda um post pra gente ir lá e comentar…
:shock:
eu só me dei conta da ‘cagada’ que fiz agora… apesar de os colegas terem ‘ignorado’ isso e terem destilado seu conhecimento assim mesmo… desculpe-me pelo ocorrido… :roll: