Artigo no estilo: Curso

De que se trata o artigo:

No terceiro artigo da série daremos sequência ao estudo sobre o VRaptor 3 durante o desenvolvimento de uma aplicação web. Veremos aqui como implementar o controle de acesso através do login e permissões e como melhorar a interação do usuário com o sistema, deixando-o mais dinâmico e seguro.

Em que situação o tema útil:

Este tema é útil a todo desenvolvedor interessado em ter mais uma excelente opção Java para desenvolvimento web em sua caixa de ferramentas.

Resumo DevMan:

Neste artigo vamos aprender como desenvolver a funcionalidade de envio e recebimento de arquivos entre o usuário e a aplicação. Também será mostrado como tornar a aplicação mais segura mantendo um controle de login e permissão a determinadas áreas do sistema.

Na segunda parte deste minicurso, vimos como deixar o sistema desacoplado utilizando interfaces e como reaproveitar funcionalidades com classes Genéricas. Além disso, aprendemos como é possível facilitar o desenvolvimento da parte visual do sistema utilizando templates e a biblioteca visual jQuery UI.

Qualquer sistema que preze por seus dados e pela integridade da informação necessita de um controle rígido de segurança. No entanto, é comum encontrarmos aplicações web que não possuem um bom controle de acesso ou que apresentam falhas que possibilitam o uso indevido por pessoas mal intencionadas. Diante deste fato surgiram diversos mecanismos de segurança, e com a evolução das tecnologias se torna cada vez mais fácil implementar este controle.

Este será um dos objetivos desta terceira parte da série: demonstrar como implementar um controle de acesso e permissão às ações do sistema. O controle será feito baseando-se no privilégio de cada um dos usuários, que por sua vez poderão ter mais ou menos direito de acesso às funcionalidades de acordo com suas tarefas dentro da organização. A partir disso, iremos possibilitar uma maior interação entre o usuário e a aplicação, deixando-o livre para enviar as capas dos filmes, fotos dos artistas e a do seu perfil, tudo com ajuda do VRaptor.

Como fazer download e upload de arquivos

O VRaptor, através de alguns componentes, facilita bastante a manipulação de arquivos em formato stream. Sem nenhum componente para nos auxiliar nesta tarefa, o trabalho fica um tanto quanto desgastante, e foi pensando nisso que estes componentes foram criados. Com eles não temos a necessidade de movimentar cada byte do arquivo, já que esta tarefa é feita automaticamente através de simples métodos. Assim, tirando proveito destes recursos, será criado um formulário para fazer o upload das capas dos filmes para o servidor, bem como a opção de apresentação destas imagens.

Fazendo upload da capa de um filme

Para iniciarmos a codificação da funcionalidade de upload de imagens, devemos adicionar na entidade Filme um atributo do tipo String (neste caso, imagem) que será responsável por manter o nome do arquivo. Em seguida é necessário criar um formulário com um campo de envio de arquivos, de acordo com a Listagem 1.

Listagem 1. exibir.jsp: formulário de envio da imagem do filme.

<form action="${pageContext.request.contextPath}/filme/${filme.id}/imagem"
      enctype="multipart/form-data" method="post">
    <input type="file" name="file"/>
    <input type="submit" value="enviar"/>
  </form>

Neste formulário, estamos fazendo um POST do arquivo escolhido incluindo o ID do filme na URI. Observe que o formulário deve estar configurado como enctype=“multipart/form-data” para suportar o envio de arquivos anexados, que em nosso caso será uma imagem. Após a configuração da view, devemos configurar o método que receberá esta imagem, como pode ser observado na Listagem 2.

Listagem 2. FilmeController.java: método que recebe a imagem do filme em formato stream.

@Post("/filme/{filme.id}/imagem")
  public void uploadImage(UploadedFile file, Filme filme) {
    try {
      repository.uploadImage(file, filme);
    } catch (Exception e) {
      result.include("error", e.getMessage());
    }
   
    result.redirectTo(this).exibir(filme);
  }

No método uploadImage() é recebido como argumento a classe UploadedFile, que faz parte do VRaptor. Esta classe abstrai a manipulação do arquivo enviado facilitando seu transporte entre diferentes localidades. Após receber esta imagem, algumas validações são feitas na camada de negócios para garantir que o arquivo enviado possui a extensão adequada. Passando por esse teste, o nome da imagem é setado usando o ID do filme mais a extensão recuperada. A decisão de utilizar o ID como nome da imagem foi feita pelo fato deste nunca se repetir, sendo assim, cada imagem possuirá um nome único. Além disso, também é feita a verificação da existência do caminho no qual a imagem deverá ser enviada. Se o mesmo não existir, então será criado. Veja toda a lógica na Listagem 3.

Listagem 3. FilmeBusiness.java: método que valida e faz a cópia da imagem para o servidor em formato stream.

...

Quer ler esse conteúdo completo? Tenha acesso completo