Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Servlet não é chamado

$
0
0

@anderson.bonavides escreveu:

Pessoal tenho uma aplicação JSF que possui um servlet que só é chamado caso eu faça o login, ou seja, caso haja uma sessão iniciada. Preciso que este servlet seja chamado independente da sessão ser iniciada.

Declaração no web.xml

<servlet>
	<servlet-name>imagemServlet</servlet-name>
	<servlet-class>br.com.desenv.intranet.util.ImagemServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>imagemServlet</servlet-name>
	<url-pattern>/imagem/*</url-pattern>
</servlet-mapping>

Chamada ao Servlet:

<h:graphicImage  value="/imagem?id=#{u.imagem.id}" />

E meu Servlet:

public class ImagemServlet extends HttpServlet{
	
	private static final long serialVersionUID = 1L;
    private static final int DEFAULT_BUFFER_SIZE = 10240; // 10KB.
    
    @Autowired
    private ImagemService imagemService;
    
    @Override
    public void init(ServletConfig conf) throws ServletException {
    	super.init(conf);
    	SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
    }
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doPost(request, response);
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	
      BufferedInputStream in = null;
      BufferedOutputStream output = null;
 
      try {
         
          String imageId = request.getParameter("id");
 
          if (!StringUtil.ehBrancoOuNulo(imageId)) {
           
        	Imagem imagemTemp = new Imagem();
        	imagemTemp.setId(Long.valueOf(imageId));
            Imagem imagem = imagemService.consultar(imagemTemp);
            
            if(imagem != null){
            	
	            byte[] contentFile = imagem.getDados();
	           
	            String contentType = getServletContext().getMimeType(imagem.getNome());
	 
	            if (contentType == null) {
	                response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
	                return;
	            }
	 
	            response.reset();
	            response.setBufferSize(DEFAULT_BUFFER_SIZE);
	            response.setContentType(contentType);
	            response.setHeader("Content-Length", String.valueOf(contentFile.length));
	            response.setHeader("Content-Disposition", "inline; filename=\"" + imagem.getNome() + "\"");
	            response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
	            response.setHeader("Pragma", "no-cache");
	            response.setDateHeader("Expires", 0);
	 
	            in = new BufferedInputStream(new ByteArrayInputStream(contentFile), DEFAULT_BUFFER_SIZE);
	            output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);
	            lerArquivo(in, output);
	          } else {
	            response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
	            return;
	          }
          }
      } catch (Exception ex) {
          ex.printStackTrace();
      } finally {
          close(output);
          close(in);
      }
    }
    
    private void lerArquivo(BufferedInputStream in, BufferedOutputStream output) throws IOException {
        byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
        int length;
        while ((length = in.read(buffer)) > 0) {
            output.write(buffer, 0, length);
        }
      }
   
      private void close(Closeable resource) {
        if (resource != null) {
            try {
              resource.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
        }
      }

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>