Exibir imagem fora do contexto da aplicação

5 respostas
R

Srs, no JSF como é possível capturar uma imagem que esta fora do servidor tomcat por exemplo e exibi-la como um img no jsp ?

Eu tenho uma imagem que esta em uma pasta exe c:\imagem\imagem.jpg na maquina do lado servidor.
Como eu pego essa imagem e faço ela apareger em um IMG ou GraphicImage ?

Me falaram para converter em Hexa e usar o codigo Hexa na tag IMG, porem não achei na internet sobre esta pratica.
Alguem poderiam me ajudar com esta ou outra forma de exibir esta imagem ?

5 Respostas

R

espero que ajude

http://www.guj.com.br/posts/list/48587.java

abrasssss

A

Grande Rogério!

Uma solução simples para esse problema seria colocar o apache na máquina onde se encontra a imagem e no JSF/HTML fazer referência para o link da imagem.

Abraços!

L

Alberes, bom dia.

Tenho tentado desta forma mas não consegui exibir as imagens ainda.

Procurei renderizar através da tag graphicImage do jsf mas não fumegou, alguma dica?

Eu pensei em salvar em uma pasta temporária dentro do contexto da aplicação, mas em questão de otimização de processos e etc isso não seria algo usual em relação à desenvolvimento.

A

Olá lexmaximo.

Quando precisei separa o conteúdo estático da aplicação fiz dessa forma:

1 - Módulos do apache que tive que baixar.

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_html_module /usr/lib/apache2/modules/mod_proxy_html.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
LoadModule proxy_ftp_module /usr/lib/apache2/modules/mod_proxy_ftp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

2 - Configuração do httpd.conf do Apache (para o meu caso tive que ter diversos VirtualHost:

<VirtualHost *:80>   
    ServerName www.aplicacao.com.br
    CustomLog /home/user/workspace/logs/access.log combined
    ErrorLog /home/user/workspace/logs/error.log   
    ServerSignature On
    ProxyRequests Off
    ProxyPass /aplicacao http://localhost:8080/aplicacao
    ProxyPassReverse /aplicacao http://localhost:8080/aplicacao
    RewriteEngine on                                            
    RewriteCond   %{REQUEST_URI} .*\.(gif|png|jpg|css|js|swf|xml)$
    RewriteRule ^/(.*) http://img.aplicacao.com.br/$1 [P]
    DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
    ServerName img.aplicacao.com.br
    CustomLog /home/user/workspace/logs/access.log combined
    ErrorLog /home/user/workspace/logs/error.log
    DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>   
    ServerName 192.168.10.215
    CustomLog /home/user/workspace/logs/access.log combined
    ErrorLog /home/user/workspace/logs/error.log   
    ServerSignature On
    ProxyRequests Off
    ProxyPass /aplicacao http://localhost:8080/aplicacao
    ProxyPassReverse /aplicacao http://localhost:8080/aplicacao
    RewriteEngine on                                            
    RewriteCond   %{REQUEST_URI} .*\.(gif|png|jpg|css|js|swf|xml)$
    RewriteRule ^/(.*) http://img.aplicacao.com.br/$1 [P]
    DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>   
        ServerName www.aplicacao.com.br
    CustomLog /home/user/workspace/logs/access.log combined
    ErrorLog /home/user/workspace/logs/error.log   
    ServerSignature On
    ProxyRequests Off
    ProxyPass /aplicacao http://localhost:8080/aplicacao
    ProxyPassReverse /aplicacao http://localhost:8080/aplicacao
    RewriteEngine on                                            
    RewriteCond   %{REQUEST_URI} .*\.(gif|png|jpg|css|js|swf|xml)$
    RewriteRule ^/(.*) http://img.iaplicacao.com.br/$1 [P]
    DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
    ServerName img.aplicacao.com.br
    CustomLog /home/user/workspace/logs/access.log combined
    ErrorLog /home/user/workspace/logs/error.log
    DocumentRoot /var/www
</VirtualHost>

3 - Na página com CSS e JS:

<link href="_css/fale-conosco.css" type="text/css" rel="stylesheet" media="screen" />
        <link href="_css/_geral.css" type="text/css" rel="stylesheet" media="screen" />
	<script src="_js/flash.js" type="text/javascript"></script>
	<script src="_js/jquery.min.js" type="text/javascript"></script>
	<script src="_js/script.js" type="text/javascript"></script>
	<script src="_js/_geral.js" type="text/javascript"></script>
	<link href="_css/cadastro.css" type="text/css" rel="stylesheet" media="screen" />

4 - Na página com imagens:

<a href="url qualquer" target="_blank">
    <img src="_img/faleconosco/img-atendimento-online.png" alt="" />
</a>

Observe que ficou tudo relativo, o problema maior foi encontrar os módulos necessários para o apache.

Uma segunda opção com apache é (Esse é bem simples, não lembro bem as configurações, na net tem diversos exemplos com rewrite):

1 - Configuração do httpd.conf do Apache:

<VirtualHost :80>
	servername exemplo.com.br
        DocumentRoot /home/user/www/exemplo //Caminho das imagens
        RewriteEngine on
        RewriteCond %{SERVER_PORT} !^8080$
        RewriteRule ^/(.) http://www.exemplo.com.br:8080/exemplo/$1 [NC,L,R]
        ServerSignature on
</VirtualHost>

2 - Na página:

<link href="www.exemplo.com.br/exemplo/_css/fale-conosco.css" type="text/css" rel="stylesheet" media="screen" />

Obs.: DocumentRoot é o caminho das imagens.

Tem diversas formas, no primeiro exemplo tive que manter tudo relativo, no segundo criei um virtualhost e coloquei absoluto o caminho do conteúdo estático, teve um amigo que fez diferente no primeiro exemplo

L

Alberes obrigado pela dica.

Até o momento não havia levado em consideração passar essa “responsabilidade” através do apache.

Por enquanto procurei apenas comunicação Bean x Form.

Vou implementar e tentar alguns testes e postar o resultado.

Mais uma vez obrigado.

Criado 2 de dezembro de 2010
Ultima resposta 10 de jul. de 2012
Respostas 5
Participantes 4