Pular para o conteúdo principal

Modelo, visão, controlador (MVC)

Abordaremos hoje uma arquitetura amplamente utilizada, criada pelo cientista da computação Trygve Mikkjel Heyerdahl Reenskaug em 1979 de modo a desacoplar dados e lógica de negócio da visualização do usuário, formando assim a seguinte divisão:

  • Modelo: Representa os dados e as regras de manipulação desses dados;

  • Visão: É a representação gráfica do modelo, dependendo das alterações ocorridas no modelo as mesmas devem ser replicadas para a visão;

  • Controlador: Responsável pela interpretação das interações efetuadas pelo usuário na visão de modo a torna-las ações a serem executadas pelo modelo;
Implementação MVC
(Implementação MVC)
O Framework Struts
Esse Framework (free e open-source) implementa a arquitetura MVC, especificamente para o desenvolvimento de aplicações em Java. Foi criado por Craig R. McClanahan e doado para a ASF (Apache Software Fundation) em 2000.
A arquitetura MVC na prática
Iremos a seguir desenvolver uma aplicação Java utilizando a arquitetura MVC por meio do Framework Struts. Para o exemplo utilizaremos a última versão 6.7 (até a data atual) do NetBeans. O exemplo é um resumo baseado na documentação de exemplo da página do NetBeans, para ver o original acesse aqui.
Visão Geral
Basicamente teremos classes Action representando o modelo, classes ActionForm representado o controlador e as páginas JSP fazendo o papel de visão. Utilizando o Struts teremos a facilidade da organização do framework executando automaticamente entradas no descritor de deployment no web.xml e mapeando as solicitações dos objetos Action no arquivo struts-config.xml.
visão_geral_modelo_mvc
(Visão geral da aplicação)
Criando a aplicação
A criação da aplicação é simples, devemos criar uma página web normalmente acessando Arquivo->Novo Projeto->Java Web-> Aplicação Web.
aplicacao web netbeans
Depois definir nome e localização do projeto.
configurando aplicacao web netbeans
O servidor de aplicações, no caso usaremos o GlassFish mesmo.
configurando glassfish netbeans
Por último e não menos importante a escolha do framework Struts.
configurando struts netbeans
Criando as visões
Para nosso exemplo criaremos duas páginas JSP, uma de logon e outra de sucesso.
A criação da página é normal, Arquivo->Novo Arquivo->Web->JSP, apenas altere o nome para logon.jsp e seu conteúdo deve ser como o da imagem abaixo:
mvc visao jsp netbeans
Repita o mesmo processo (de preferencia defina o diretório dela como sendo a pasta WEB-INF, dessa maneira ela não poderá ser acessada diretamente) para a página de sucesso, apenas alterando seu nome para sucesso.jsp, contendo o código abaixo:
mvc visao2 jsp netbeans
Criando o controlador
O Bean ActionForm é capaz de manter os dados entre as solicitações, no nosso caso as informações poderão ser  exibidas na tela de sucesso se tudo estiver correto ou na própria tela de logon informando um possível erro. Para criar vamos até Arquivo->Novo Arquivo->Struts->Bean ActionForm do Struts, a próxima tela é a de configuração e deve ficar de acordo com a imagem:
controlador mvc actionform netbeans
Nessa classe temos dois campos já com seus Getters e Setters, manteremos o campo nome, excluiremos o campo numero e adicionaremos o campo email e error, apos as declarações posicione o cursor do mouse sobre eles, pressione Alt+Insert e escolha Getter e Setter. Feito isso nossa única alteração nessa classe será no método setError , que deverá ficar como o código a seguir:
public void setError() {
    this.error =
        "<span style='color:red'>Indique valores válidos para os dois campos !</span>";
}
Criando o modelo
A classe Action é o nosso modelo, é aqui que esta a logica comercial, quando os dados do formulário são recebidos o método execute os processa e determina para qual exibição eles devem ser encaminhados. Mais uma vez Arquivo->Novo Arquivo->Struts->Ação do Struts, devemos definir as configurações de Nome e Local de acordo a imagem a seguir:
modelo mvc action netbeans
E a tela de parâmetro deve ficar assim:
modelo2 mvc action netbeans
Agora na classe precisamos entrar com uma definição de fracasso, já que a de sucesso já vem como padrão, e depois configurar nossa regra que ira disparar erro  caso o nome ou o email estejam nulos ou se o email não possuir um “@”.
modelo3 mvc action netbeans
Condições de encaminhamento
Para que as regras desenvolvidas no método execute de nossa classe Action funcione, precisaremos criar entradas forward, associando os resultados obtidos em nossa lógica de negócio as páginas JSP criadas. Para isso devemos abrir o arquivo struts-config.xml e clicar com o botão direito do mouse em qualquer parte da entrada action de LogonForm como mostra a imagem abaixo:
encaminhamento forward netbeans
Quando o menu surgir apos o clique com o botão direito escolha struts e em seguida adicionar encaminhamento, configure de acordo com a imagem abaixo:
encaminhamento2 forward netbeans
Agora  é necessário definir o encaminhamento para falha, o processo é o mesmo, devemos alterar apenas o nome e a página, conforme a figura a seguir:
encaminhamento3 forward netbeans
Finalizando a aplicação
É necessário definir a tela de boas vindas, e nesse exemplo também adicionaremos uma pequena folha de estilos (CSS) que esta junto do projeto final disponível para download. Para a configuração da tela de boas vindas abra o arquivo web.xml selecione a aba Páginas e digite o nome da página de logon.
boas vindas netbeans
Baixando o projeto basta copiar o arquivo stylesheet.css e colar direto dentro do NetBeans em Páginas da Web, feito isso adicione o código abaixo dentro da tag <head> dos arquivos JSP.
Espero que o artigo tenha ficado simples e de fácil compreensão, a versão completa do exemplo pode ser baixada aqui. Recomendo que os links citados na fonte sejam visitados para agregar mais conhecimento e ate, porque não, descobrir novas possibilidades. Mais uma vez me coloco a disposição para esclarecer duvidas, um grade abraço e ate a próxima.
Fonte
Introdução ao framework da Web do Struts

Comentários

  1. Oi Du,
    Sou eu novamente, desculpe mais uma vez invadir sua área de comentários, mas tenho que te dizer que existe outro selo pra vc.
    Desculpa aí, mas não posso fazer desfeita dos selos que recebo e preciso repassa-los, como gosto do seu blog vc "tem" que aguentar a minha chatice. Vc aguenta? Tomara q sim. (rs)
    Por favor retire seu selo lá no HISTOBLOG, ok!?
    Obrigado Du
    Bom fim de semana!

    ResponderExcluir
  2. Olá Eduardo,

    Não pensei que pudesse, em tão pouco tempo, retribuir-lhe a homenagem que me prestou.

    Indiquei o Programero para o Prêmio Blog Dorado!

    Tá tudo explicadinho lá no meu Mundo... http://omundobythais.blogspot.com/2009/07/premio-blog-dorado.html

    Pega lá o selo....é seu!

    Sucesso

    Thaís Gomes

    ResponderExcluir
  3. Oi Thaís e Susi, fico muito feliz e honrado com as homenagens, muito obrigado e desculpe-me pela demora na resposta, postarei ambos assim que possível...

    ResponderExcluir

Postar um comentário

Obrigado por Participar do programero, fique a vontade para agradecer, retificar, perguntar ou sugerir.

Mais visitadas

Funções de data Oracle

  Com o Oracle é possível obter uma série de resultados a partir de uma ou mais datas, como por exemplo verificar o último dia do mês ou verificar a quantidade de meses entre duas datas, então vamos a alguns exemplos:   Data atual do sistema: SYSDATE Remover meses de uma data: ADD_MONTHS(SYSDATE, -1) Adicionar meses de uma data: ADD_MONTHS(SYSDATE, +1) Buscar o último dia do mês: LAST_DAY(SYSDATE) Primeiro dia do mês: TRUNC(SYSDATE, ‘MONTH’) Quantidade de meses entre duas datas: MONTHS_BETWEEN(SYSDATE, ‘27/07/1982’) Primeiro dia do ano: TRUNC(SYSDATE, ‘YEAR’) Dias da semana: DECODE( TO_NUMBER( TO_CHAR          (SYSDATE, ‘D’) ) ,1, ‘domingo’ ,2, ‘segunda-feira’ ,3, ‘terça-feira’ ,4, ‘quarta-feira’ ,5, ‘quinta-feira’ ,6, ‘sexta-feira’ ,7,’sábado’ )

Manipular arquivos com PL/SQL (Oracle)

O bom e velho arquivo, é impressionante como lidamos com seus vários tipos durante todos os dias, bom hoje vamos mostrar um jeito simples de se escrever e ler arquivos apenas com a codificação nativa do Oracle. A primeira coisa a fazer é criar um diretório válido configurado no Oracle, e permissões de acesso a esse diretório para o usuário de banco onde faremos o exemplo, sendo assim suponhamos que nosso usuário de banco se chame programero, e nosso diretório real esteja em c:\programero, então logado como SYSTEM devemos executar os seguintes comandos: 1: -- cria diretorio 2: create or replace directory DIR_PROGRAMERO as ' C:\PROGRAMERO '; 3: -- concede permissão de escrita e leitura para nosso usuário 4: grant read , write on directory DIR_PROGRAMERO to PROGRAMERO; Para escrever, basicamente precisamos apenas saber onde esse arquivo ficará, no nosso caso no diretório criado acima, segue o código de escrita: 1: declare 2: -- nosso handler 3: v_a

Funções de Data e Hora (Delphi)

É muito comum nos depararmos no dia a dia com a necessidade de manipular datas e horas, seja para um calculo de permanência, dias de atraso enfim, é praticamente escapar de alguma situação que necessite desse tipo de controle. Assim como a necessidade e se utilizar algum recurso para manipular as datas e horas de alguma maneira e freqüente, as duvidas de como o faze-lo também é, basta um breve olhar em qualquer fórum especializado e lá está, alguma duvida relacionada, por isso decidi falar um pouco sobre uma unit muito poderosa chamada DateUtils para a manipulação de data e hora, com um grande numero de métodos e classes que facilitam a vida de qualquer um. Alguns exemplos: CompareDate(constA, B: TDateTime): TValueRelationship; Compara apenas a data de dois valores (do tipo TDateTime) retornando: LessThanValue O primeiro valor é menor que o segundo EqualsValue Os valores são iguais GreaterThanValue O primeiro valor é maior que o segundo CompareDateTime(const A, B: TD