Escolar Documentos
Profissional Documentos
Cultura Documentos
Conteúdo
Quinta Parte – Criando um Servlet Filter, configurando, rodando e criando a saída da área
administrativa ............................................................................................................... 25
A configuração..................................................................................................................... 28
www.integrator.com.br 1
Utilizando Visual Web Pack para criar uma área administrativa
Referências .............................................................................................................................. 35
www.integrator.com.br 2
Utilizando Visual Web Pack para criar uma área administrativa
Ao longo destes artigos, vocês irão aprender a utilizar o Visual Web Pack (VWP), atualmente
um pacote separado do NetBeans na versão 5.5.1, para desenvolver uma área administrativa,
passo a passo, com login e senha de acesso com banco de dados, criar a navegação por entre
as páginas visualmente e na utilização de um recurso muito importante da API Servlet,
chamada de Filtros.
Para a melhor compreensão do leitor, vamos utilizar a versão traduzida em nosso idioma
(Português do Brasil), tanto do NetBeans como do VWP, apoiando a tradução do programa.
Antes de começar
Será fundamental que vocês tenham conhecimento de Java, uma vez que o NetBeans
desenvolve com o Visual Web Pack aplicações nesta linguagem. Outro detalhe importante será
no conhecimento de Java para o desenvolvimento de aplicações Web, principalmente no
framework JavaServer Faces, que será fundamental para a melhor compreensão deste artigo.
Também será desejável um conhecimento do NetBeans IDE, uma vez que este artigo requer
uma certa familiaridade com o programa. Alguns tutoriais e vídeos são disponibilizados no
endereço oficial da IDE:
http://www.netbeans.org
http://www.netbeans.info/downloads/index.php
Além do NetBeans, será necessária a instalação do Visual Web Pack, também traduzido em
nosso idioma, que pode ser acessado no endereço:
http://www.netbeans.org/products/visualweb/
Além dos itens citados, teremos que utilizar o MySQL como banco de dados, que além de ser
excelente, é multiplataforma, podendo ter sua versão Community Server sendo baixada no
endereço:
http://www.mysql.com/downloads
www.integrator.com.br 3
Utilizando Visual Web Pack para criar uma área administrativa
A versão que estamos usando neste artigo é a Connector/J 5.0 que pode ser baixada no
endereço:
http://dev.mysql.com/downloads/connector/j/5.0.html
Caso precisem de mais detalhes, ao final dos artigos, sobre o NetBeans, no desenvolvimento
de aplicações Web, há também o livro de minha autoria, Desenvolvendo Aplicações Web com
NetBeans IDE 5.5, com apoio do DFJUG, que pode ser encontrado aqui na Linha de Código, no
seguinte endereço:
http://www.linhadecodigo.com.br/livros.asp?id=919&sub=9
Figura 1
www.integrator.com.br 4
Utilizando Visual Web Pack para criar uma área administrativa
Figura 2
O servidor neste caso poderá ser a sua escolha. No caso deste artigo, o container Servlet
Tomcat 5.5.17, incluso na instalação da IDE fora utilizado. Para completar esta tarefa inicial,
clique no botão Finalizar.
www.integrator.com.br 5
Utilizando Visual Web Pack para criar uma área administrativa
Figura 3
Para iniciarmos, vamos criar uma grade que irá compor os componentes visuais para a entrada
de login e senha. Na lateral direita de seu editor, arrastem da janela Paleta, no grupo Layout, o
componente Painel de grade.
Figura 4
www.integrator.com.br 6
Utilizando Visual Web Pack para criar uma área administrativa
Aumentem sua largura para o tamanho desejado. Este componente é responsável por gerar a
tag JavaServer Faces <h:panelGrid >, ao qual possui por padrão apenas uma coluna.
Figura 5
Voltando a janela Paleta arrastem do grupo Básico o componente Rótulo sobre o componente
Painel de grade adicionado em seu Design.
Figura 6
O VWP abrirá uma caixa de texto com a palavra rótulo selecionada. Alterem-na para
“Usuário:” e pressionem ENTER para confirmar.
Figura 7
Voltem para a janela Paleta e arrastem desta vez, sobre o Painel de grade, o componente
Campo de texto.
www.integrator.com.br 7
Utilizando Visual Web Pack para criar uma área administrativa
Figura 8
Figura 9
Com este campo selecionado, vamos voltar à janela Propriedades e alterar a propriedade id,
em Geral, para usuario e marcar a opção required, no grupo Dados.
Figura 10
Quase ao fim do grupo Básico, da janela Paleta, nós encontramos o componente Mensagem.
Assim como os demais componentes usados, vamos arrastá-lo para o Painel de grade.
www.integrator.com.br 8
Utilizando Visual Web Pack para criar uma área administrativa
Figura 11
Figura 12
Fazendo o mesmo processo, nós iremos adicionar mais três componentes: Rótulo, Campo de
senha e Mensagem.
No Rótulo desta vez, digitaremos “Senha:”. Iremos alterar no Campo de senha a propriedade
id para senha e marcar required.
Figura 13
www.integrator.com.br 9
Utilizando Visual Web Pack para criar uma área administrativa
Figura 14
Observem que a grade agora alterou alinhando o rótulo à caixa de texto e mensagem.
Figura 15
Pressionando as teclas Ctrl+Shift, iremos arrastar partindo do rótulo “Usuário:” para a caixa de
texto usuario. Nosso cursor indicará a ligação (bind). O mesmo será feito com o rótulo
“Senha:” e sua respectiva caixa de texto.
Figura 16
Assim como os rótulos, iremos ligar cada caixa de texto a sua respectiva mensagem.
Pressionando as mesmas teclas Ctrl+Shift, arrastem da caixa de texto usuario para o
componente de mensagem ao seu lado. Façam o mesmo com o campo senha.
Para finalizar o design, precisaremos do botão de envio. Voltem à janela Paleta e arrastem o
componente Botão. Digitem “Logar” e pressionem ENTER.
www.integrator.com.br 10
Utilizando Visual Web Pack para criar uma área administrativa
Figura 17
Para finalizar, vamos adicionar uma área de mensagens, para exibir informações ao usuário
quando houver problema na hora de logar. Na janela Paleta arrastem para baixo do botão
Logar o componente Grupo de mensagens.
Figura 18
Na caixa de diálogo Novo Diretório digitem admin no campo Nome da Pasta. Cliquem no
botão Finalizar para concluir.
www.integrator.com.br 11
Utilizando Visual Web Pack para criar uma área administrativa
Figura 19
Voltando a janela Projetos, sobre o diretório admin, clicaremos novamente com o direito do
mouse. No menu de contexto, em Novo, desta vez vamos selecionar o item Página. Se
quiserem, basta deixar o nome sugerido e confirmem no botão Finalizar.
Neste caso, basta colocar um Texto estático e digitar um texto. Para aumentarmos o tamanho
da fonte e outros detalhes relacionados à formatação, temos que ir a janela Propriedades e
clicar no botão [...] em style.
Figura 20
www.integrator.com.br 12
Utilizando Visual Web Pack para criar uma área administrativa
Além do texto estático, vamos adicionar também um link que irá abrir uma segunda página. Na
janela Painel, vamos arrastar o componente Hyperlink.
Figura 21
Podemos digitar o texto que melhor convier neste link. A formatação também é opcional.
Figura 22
Agora que temos a primeira página, vamos criar uma segunda página. Neste caso, teremos
dois links. Um para voltar à primeira página da área administrativa e o segundo para efetuar
logout.
No link “Logout” alterem a propriedade id para logout. Isso ajudará a nos orientar na hora de
criar a navegação por entre as páginas.
www.integrator.com.br 13
Utilizando Visual Web Pack para criar uma área administrativa
Figura 23
Caso não tenham visto a primeira parte do artigo, recomendo lê-la antes de prosseguir.
No Design de qualquer uma das páginas criadas, cliquem com o direito do mouse. Ao surgir o
menu de contexto, clique no último item chamado de Navegação de página.
Inicialmente teremos apenas as páginas que criamos, sem ligação entre elas, como mostra a
Figura 24 a seguir.
Figura 24
www.integrator.com.br 14
Utilizando Visual Web Pack para criar uma área administrativa
Cliquem sobre a página Page1.jsp (a página de login). A página será ampliada, exibindo seus
componentes. Arrastem do componente button1 para a página admin/Page1.jsp. Observem
que uma linha surgiu, indicando que estas páginas contêm uma ligação. Quem conhece
JavaServer Faces, sabe que estamos configurando as regras de navegação em um XML, que no
caso do Visual Web Pack, está em um arquivo separado do faces-config.xml, chamado de
navigation.xml (que pode ser visto expandindo WEB-INF em Páginas da Web na janela
Projetos).
Figura 25
Figura 26
Da página admin/Page2.jsp, temos dois links. O link que demos o nome de logout será usado
para chamar a página Page1.jsp. O outro link, iremos chamar a página admin/Page1.jsp.
Cada elemento de navegação possui uma string, que é automaticamente adicionada. Perceba
que temos case1, case2 e por ai vai, dependendo do número de casos que possuímos na
construção de uma navegação. Evidentemente que isso pode confundir um desenvolvedor
iniciante, além de ser muito desorganizado, tendo todos o mesmo nome. Por isso, entre as
páginas Page1.jsp e admin/Page1.jsp cliquem na linha de navegação. Observem que na janela
www.integrator.com.br 15
Utilizando Visual Web Pack para criar uma área administrativa
Propriedades temos uma propriedade chamada Resultado, ao qual está escrito case1. Alterem
para logado.
Figura 27
mysql –u root –p
Assim que estivermos logado ao terminal do mysql, vamos criar o banco de dados, através do
comando:
www.integrator.com.br 16
Utilizando Visual Web Pack para criar uma área administrativa
Este comando dará plenos poderes administrativos ao usuário chamado “linhadecodigo” com
a senha “1234”.
Para que este usuário seja confirmado, teremos que usar a seguinte seqüência:
FLUSH PRIVILEGES;
Figura 28
Na caixa de diálogo Novo Driver JDBC, cliquem no botão Adicionar. Selecionem o arquivo .jar
baixado do driver JDBC do MySQL e confirmem.
www.integrator.com.br 17
Utilizando Visual Web Pack para criar uma área administrativa
Figura 29
Com o driver Connector/J adicionado ao NetBeans, podemos nos conectar ao banco de dados
e criar a tabela necessária para efetuar o login e senha.
Ainda na janela Execução, clique com o direito do mouse sobre Banco de Dados. No menu de
contexto selecionem Nova Conexão.
Figura 30
www.integrator.com.br 18
Utilizando Visual Web Pack para criar uma área administrativa
Figura 31
Marquem a opção Lembrar senha durante esta sessão e confirmem. Observem que a caixa de
diálogo mudará o foco para a guia Avançado, contendo um pequeno texto na parte inferior
dizendo: Conexão estabelecida.
Expandindo a conexão criada, na janela Execução, em Tabelas, clique com o direito do mouse
e selecione Executar Comando.
Figura 32
www.integrator.com.br 19
Utilizando Visual Web Pack para criar uma área administrativa
Na janela Comando SQL 1, digite o comando SQL mostrado na Figura a seguir e depois clique
no botão Executar SQL.
Figura 33
Observem na barra de status do NetBeans que o texto Expressões SQL executadas com
sucesso surgirá, indicando que a tabela foi criada.
Caso a tabela não apareça na janela Execução, em Tabelas cliquem com o direito do mouse e
selecionem no menu de contexto o item Atualizar.
Figura 34
Fazendo da mesma forma que usamos para criar a tabela, vamos adicionar um usuário e uma
senha. Em Executar Comando digite a SQL mostrada a seguir:
www.integrator.com.br 20
Utilizando Visual Web Pack para criar uma área administrativa
Figura 35
Caso desejem ver os dados inseridos na tabela, cliquem novamente com o direito do mouse
sobre a tabela usuários, na janela Execução e selecionem Visualizar Dados.
Uma query SELECT será executada, exibindo na parte inferior da janela os resultados
encontrados.
Figura 36
1 - Com a página Page1.jsp aberta, arraste da janela Execução a tabela usuarios para o Design.
www.integrator.com.br 21
Utilizando Visual Web Pack para criar uma área administrativa
Figura 37
Agora que a classe SessionBean1 possui acesso ao banco de dados e a tabela usuarios, iremos
alterá-la para que um usuário possa ser selecionado. Em usuariosRowSet, na janela Esboço,
vamos dar um duplo clique.
Ao surgir a janela Query Editor, no segundo quadro, na estrutura da tabela usuarios, clique
com o direito do mouse sobre a linha da coluna login e selecione no menu de contexto o item
Adicionar critérios de consulta.
Figura 38
www.integrator.com.br 22
Utilizando Visual Web Pack para criar uma área administrativa
Figura 39
Observe que um critério será adicionado, onde o parâmetro de entrada é representado pelo
sinal de interrogação “?”. Deixaremos as explicações técnicas quanto ao que está ocorrendo
para outra oportunidade. O importante é que agora temos a query como precisamos para
verificar o login e a senha.
Figura 40
IMPORTANTE: Quando estivermos utilizando o Visual Web Pack com o Apache Tomcat
embutido, adicione o driver JDBC do seu banco de dados, no caso do MySQL no seguinte local
da instalação do NetBeans:
$LOCAL_INSTALADO/netbeans-5.5/enterprise3/apache-tomcat-5.5.17/common/lib
www.integrator.com.br 23
Utilizando Visual Web Pack para criar uma área administrativa
Observem que o Visual Web Pack já adiciona um método público de retorno String, contendo
inclusive a string “logado” colocada na navegação.
Vamos adicionar o código mostrado a seguir para que ao clicar no botão, o usuário e a senha
sejam verificados pelo banco de dados, retornando ou não o acesso a área administrativa.
try {
//captura o login passado pelo campo usuario
getSessionBean1().getUsuariosRowSet().
setObject(1,usuario.getText());
return "";
}
Este código funciona perfeitamente, e em um teste você pode “logar” no sistema. O problema
maior está nas áreas administrativas, que exigem uma segurança maior. Quando você está
www.integrator.com.br 24
Utilizando Visual Web Pack para criar uma área administrativa
Criando o Filtro
Na etapa anterior, vimos que já podemos entrar na área administrativa, uma vez que o botão
Logar agora possui o código necessário para verificar o usuário e a senha. Mas infelizmente,
também estamos sabendo que não há segurança alguma nas áreas administrativas, o que
acarretará em uma possível invasão.
Para evitar isso, devemos criar uma sessão gerenciada. A especificação da API Servlet possui
uma forma de gerenciar esta situação através da API Servlet Filter. É a melhor maneira de
redirecionar um usuário quando a sessão está expirada. Claro que isso também evita a entrada
direta pelo endereço no navegador.
No código utilizado pelo botão Logar, na etapa anterior, nos criamos uma sessão chamada de
“logado”, que possui o login do usuário como valor.
É através deste atributo de sessão que vamos nos basear para verificar se há ou não um
usuário logado no sistema administrativo.
Para criar um filtro, cliquem com o botão direito do mouse sobre o projeto. Selecionem no
menu de contexto o item Novo e cliquem em Arquivo/Pasta.
Na caixa de diálogo Novo Arquivo, selecione em Categorias o item Visual Web e Filtro em
Tipos de Arquivo. Cliquem no botão Próximo.
www.integrator.com.br 25
Utilizando Visual Web Pack para criar uma área administrativa
Figura 41
Figura 42
www.integrator.com.br 26
Utilizando Visual Web Pack para criar uma área administrativa
Figura 43
Figura 44
O NetBeans criará uma classe, mapeada inclusive por seu deployment descriptor (web.xml),
chamada de FiltroAdministrativo. Altere no trecho a seguir o código:
www.integrator.com.br 27
Utilizando Visual Web Pack para criar uma área administrativa
...
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
}else{
chain.doFilter(request, response);
}
}
...
O Filtro Servlet faz todos seus processos no método de doFilter, por esta razão fora nele que
nós adicionamos o código para que seja verificada a sessão chamada de ”logado”.
Caso a sessão não exista, ela retorna um valor null. Ocorrendo isso, o método sendRedirect é
chamado e a página de login e senha (Page1.jsp) é mostrada.
A configuração
Após criar o Filtro Servlet, será necessário configurarmos o tempo que a sessão permanecerá e
em que local será criada.
www.integrator.com.br 28
Utilizando Visual Web Pack para criar uma área administrativa
Figura 45
Na caixa de diálogo Editar Parâmetro do Contexto, altere para client no campo Valor do
Parâmetro e confirme no botão OK.
Figura 46
Quando o estado da sessão é salvo no lado cliente, o JavaServer Faces cria um campo oculto
na página, transmitindo assim a sessão de um lado para o outro.
www.integrator.com.br 29
Utilizando Visual Web Pack para criar uma área administrativa
Rodando a aplicação
Execute a aplicação através do botão Executar o Projeto Principal ou pelo atalho F6.
Observe que se tentarmos entrar com um login e senha inválidos, haverá uma mensagem de
erro. O mesmo ocorre caso não seja preenchido nada em um dos dois campos ou nos dois ao
mesmo tempo.
Figura 47
Quando logar, você tem livre acesso a área administrativa. Inclusive pela barra de endereços.
www.integrator.com.br 30
Utilizando Visual Web Pack para criar uma área administrativa
Figura 48
//expira a sessão
session.invalidate();
return "logout";
Com o método invalidade, sua sessão acaba e faz com que o usuário tenha que se logar
novamente.
Voltando a Page1.jsp, na entrada de login e senha, clique no terceiro botão, Java, na parte
superior.
www.integrator.com.br 31
Utilizando Visual Web Pack para criar uma área administrativa
Salve e rode novamente a aplicação. Se tentarmos entrar em uma área protegida do sistema,
uma mensagem surgirá, avisando do problema.
Figura 49
www.integrator.com.br 32
Utilizando Visual Web Pack para criar uma área administrativa
Figura 50
...
if(senha.getText().equals((String)
usuariosDataProvider.getValue("usuarios.password"))){
www.integrator.com.br 33
Utilizando Visual Web Pack para criar uma área administrativa
www.integrator.com.br 34
Utilizando Visual Web Pack para criar uma área administrativa
Referências
Em inglês e Português
http://www.netbeans.org/kb/55/vwp-index_pt_BR.html?1
www.integrator.com.br 35