Eu preciso carregar uma imagem no meu .jsp e esta imagem está no diretório do meu servidor, como por exemplo F:\Imagens Eu tenho esse endereço, e o nome da imagem salvos na tabela…
Eu criei a interface Diretório:
import java.net.URI;
public interface Diretorio {
URI salva(Arquivo arquivo);
Arquivo recupera(URI chave);
}
E criei a classe Arquivo:
public class Arquivo {
private String caminho;
private String nome;
public Arquivo(String caminho, String nome) {
this.caminho = caminho;
this.nome = nome;
}
public String getCaminho() {
return caminho;
}
public void setCaminho(String caminho) {
this.caminho = caminho;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Como eu consigo carregar essa imagem no meu .jsp ?
Certo, então você usar aqueles diretórios virtuais do tomcat, tem alguns posts meus da antiga que eu explicava como fazer, mas também tem na documentação do container, o legar de usar esses repositorios viruais é que vc mapeia um diretório para algum lugar físico no seu filesystem, veja:
Boa tarde aix!
Eu gostaria de implementar com base na documentação do VRaptor, mas não estou conseguindo…
Pois eu tenho dois campos na tabela produto, um para “localImagem” e outro para “imagem”, que possui o "nomeDaImagem.jpg "
Eu preciso passar para o .jsp como parâmentro o endereco+nome da imagem, para que ela seja carregada…
E para isso no VRaptor eu preciso criar um controller…
Até ai tudo bem:
package br.com.ebf.controller;
import java.io.File;
import br.com.caelum.vraptor.Controller;
import br.com.ebf.modelo.Produto;
@Controller
public class ImagemController {
public File imgProduto(Produto produto) {
return new File(produto.getLocalImagem() + produto.getImagem());
}
}
Mas e depois… Como essa informação chega do .jsp ??
desculpe a demora em responder mas acabei me mudando e fiquei sem net, não é permitido acessar o filesystem através do browser, ous eja: não da para montar o caminho assim, até pode, mas não é como você pensa, se fosse acesso local eu penso que dependendo do browser poderia utilizar o file:// mas não vai funcionar para a aplicação, na sua app o correto é utilizar os diretórios virtuais conforme comentei com você, ou então salva a imagem no banco, menos performático mas melhor do que ter que criar alguma bruxaria com HTML5 ou alguma velharia com Applet.
Porém em ambas as tags, gera o erro no console do browser:
GET http://localhost:8080/ebf-catalogo-mysql/imagem/imgProduto/1 404 ()
atualizaVaz:567 GET http://localhost:8080/ebf-catalogo-mysql/imagem/imgProduto?caminho= 404 ()
O problema é que eu não posso criar o arquivo nomedasuaaplicação#resenhadabolafotos.xml e gravar no diretório do usuário, porque a aplicação será acessada externamente… Não só na minha rede interna…
Você comentou no inicio do post que o diretório estaria no seu servidor
logo pode pode mapear, nem que seja o diretório root, crie uma estrutura ex: c:\imagens\client_one\imagem01.jpg, c:\imagens\client_two\imagem02.jpg o diretório mapeado ficaria c:\imagens com o docdir imagem, apartir dele você pode gerar várias estruturas de diretórios tanto para ler quanto para salvar, ai seu HTML vai conseguir interpretar:
A principio a aplicação irá ficar na minha rede sim, mas posteriormente eu irei disponibilizá-la para fora…
Implementei com base em um e-book, não deu certo…
Alterei com a ajuda dos fóruns, mas também não estou conseguindo mostrar as imagens…
Já não estou mais entendendo a estrutura…
A principio a aplicação irá ficar na minha rede sim, mas posteriormente eu irei disponibilizá-la para fora…
Implementei com base em um e-book, não deu certo…
Alterei com a ajuda dos fóruns, mas também não estou conseguindo mostrar as imagens…
Já não estou mais entendendo a estrutura…
Entendo, do modo que te proponho você teria esta feature, mas concordo com vc, tem que fundamentar a ideia, o que me ajuda quando fico na frente de dúvidas é desenhar a aplicação, os módulos se a mesma tem, a arquitetura estrutural do projeto, assim já mapeamos vários problemas que poderiam ocorrer no desenvolvimento.