Atualizar imagem (Recarregar) no JSP

11 respostas
R

Boa noite Galera,
Estou a tempos tentando atualizar uma imagem no jsp que o usuario cadastrou no banco.
Como se fosse um ficha mesmo, ele tem a possibilidade de mudar a foto então queria atualizar toda hora que ele mudasse a foto. Apesar de ter criado um request.getRequestDispatcher para a pagina da foto, ela não funciona quando tem um IMG lá dentro alguem tem uma ideia do que pode ser feito?

Meu código está aqui:
O usuario acabou de cadastrar a imagem, atraves de ajax e eu chamo essa função aqui pra dizer que foi cadastrada e carregar a imagem dele no html.
Pagina Principal

function end_upload3(){
                document.getElementById('mensagem').innerHTML += '<br />\r\n'+"Imagem Enviada Com Sucesso";
                $().ajaxStart(function() { $('#loading').show(); });
                $('#imagem').load('Controlador?pagina=carregaImagemLogo',function(){
                });
                $().ajaxStop(function() { $('#loading').hide(); });
            }


<div id="imagem">
<c:import url="cadastro/imagem.jsp"/>
</div>
esse load(Controlador?pagina=carregaImagemLogo,function(){

});

por sua vez vai até o meu controlador e chama a pagina que possui a foto

COntrolador servlet

if (pagina.equals("carregaImagemLogo")) {
                    disp = request.getRequestDispatcher("cadastro/imagem.jsp");
                    disp.forward(request, response);
                }

agora a pagina com a imagem é acionada:
Ela está funcionando pois na primeira chamada ela mostra a foto e se eu mudar isso para qualquer outra coisa, ele sempre mostra até mesmo quando o usuario da um upload em uma nova foto.

Pagina Imagem

<body>
 <img src="ServLoadImage?id=<%=usuario.getIdTipodeUsuario()%>" name="imgLogo" width="310" height="150" alt="Logo"/>
    
 </body>

11 Respostas

A

Como voce gera a imagem no JSP?É atraves de um servlet?

Acho que isso pode ser resolvido no momento em que voce gera a imagem na página…pois o browser está gerando um cache da mesma. Definindo o header dessa requisição para NAO gerar cache, deve resolver.

R

alias:
Como voce gera a imagem no JSP?É atraves de um servlet?

Acho que isso pode ser resolvido no momento em que voce gera a imagem na página…pois o browser está gerando um cache da mesma. Definindo o header dessa requisição para NAO gerar cache, deve resolver.

sim eu utilizo um servlet para mostrar a imagem. está imagem está em um import de uma pagina jsp que é dado um request.getRequestDispatcher para atualizar ela!
esse aqui é o conteudo do dispatcher

<body>  
    <img src="ServLoadImage?id=<%=usuario.getIdTipodeUsuario()%>" name="imgLogo" width="310" height="150" alt="Logo"/>  
          
    </body>

acho que isso ai que você falou ajude sim, vc tem algum exemplo de como faze-lô?
vlw

D

Sem cache no navegador é assim:

<% response.setHeader("Cache-Control", "no-cache"); response.setIntHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); %>

Bons códigos!

A

djemacao:
Sem cache no navegador é assim:

<% response.setHeader("Cache-Control", "no-cache"); response.setIntHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); %>

Bons códigos!

Exato…coloca isso no código do seu servlet, velho.

R

alias:
djemacao:
Sem cache no navegador é assim:

<% response.setHeader("Cache-Control", "no-cache"); response.setIntHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); %>

Bons códigos!

Exato…coloca isso no código do seu servlet, velho.

Nada feito galera :S
talvez o problema esteja no

disp = request.getRequestDispatcher("cadastro/imagem.jsp");
                    disp.forward(request, response);

ele não deve estar aceitando ser só uma imagem dentro dessa jsp, mesmo estando certo
ela está assim:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
              
         <title>JSP Page</title>
        <%
        Usuario usuario = (Usuario) request.getAttribute("usuario");
        %>
        
    </head>
    <body>
                 <img src="ServLoadImage?id=<%=usuario.getIdTipodeUsuario()%>" name="imgLogo" width="310" height="150" alt="Logo"/>
      

          <!-- Imagem de Loading  EHHHHHHHHHHHHHHHHHHHHHHHHHHH POGGGGZIMMMMMMMMMM, fazer oque se não quer atualizar....-->
         
           
         <!-- Carrega o conteúdo do servlet   
         <iframe src="ServLoadImage?id=<%=usuario.getIdTipodeUsuario()%>" frameborder="0"  style="display:none">
         </iframe>  esse IFRAME Está comentado pq ele é quem faz atualizar a pagina.... sem ele ela nao atualiza.

    -->
     </body>
</html>
A

E como ficou o código do seu servlet?

R

ServLoadImage

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, SQLException {
        
        
          OutputStream out = response.getOutputStream();
        try {
            
            int id = Integer.parseInt(request.getParameter("id"));
            byte[] foto = new Dao().recuperaLogoBytes(id);
            if(foto!=null){
            response.setContentType("image/jpeg");
            out.write(foto);
            out.flush();
            }
            
        } finally {
            out.close();
        }
        
    }
A

Inclua aquelas linhas de instrução que o colega mandou dois posts atras nesse servlet…vamos ver.

R

já fiz amigão rs… só não coloquei ai, inclusive não fiz só no servlet da imagem fiz tb no que controla a pagina. E fiz simultaneamente também e não foi :S

A

já fiz amigão rs… só não coloquei ai, inclusive não fiz só no servlet da imagem fiz tb no que controla a pagina. E fiz simultaneamente também e não foi :S

Deveria ter funcionado…admito que estou sem ideias nesse caso :lol: , peço desculpas ao amigo.

R

já fiz amigão rs… só não coloquei ai, inclusive não fiz só no servlet da imagem fiz tb no que controla a pagina. E fiz simultaneamente também e não foi :S

Deveria ter funcionado…admito que estou sem ideias nesse caso :lol: , peço desculpas ao amigo.

Faz parte :S… eu tive que fazer uma ganbiarra… dei o famoso e velho reload :S mas isso será ruim pq vou precisar não atualizar a pagina em outros casos… mas vlw ai

Criado 22 de fevereiro de 2010
Ultima resposta 23 de fev. de 2010
Respostas 11
Participantes 3