Dúvida com FrontController?

[quote=kina][quote=Rafael Steil][quote=kina]Outra pergunta…
Seria válido eu dizer que o meu FrontController é um Filter?
Não teria alguma problema com isso?[/quote]

Nao, nao da para chamar de Filter. Embora ambos tenham algumas propriedades parecidas - o que, alias, aconcente com muitos patterns -, eles ainda sao para propositos bem distintos

Rafael[/quote]
E usar a classe Filter como FrontController?
Há algum problema?[/quote]

Kina, acredito que não!
Me corrijam se eu estiver errado!

Até onde sei de filtros, quando um servlet receber uma requisição, o filtro seria executado antes do servlet ser executado, e quando o servlet terminasse de ser executado, daí o filtro executaria novamente um pós processamento…

Resumindo:
:arrow: Filtro faz um pré-processamento
:arrow: Servlet entra em ação!
:arrow: Filtro faz um pós processamento

Seria interessante vc usar filtro para verificar se o usuário que está acessando é um usuário válido, criar log… Ou usará filtro sempre que quiser adicionar um pré e pós processamento em um Servlet!

Abraços!
Thiago

[quote=kina]
E usar a classe Filter como FrontController?
Há algum problema?[/quote]

Bom, nao eh responsabilidade do Filter esse tipo de decisao. Ele serve mais para coisas como as que o Thiago citou.

Rafael

Boa tarde pessoal.

Esta discução foi muito produtiva. Com ela consegui esclarecer várias dúvidas deste pattern, e aproveitei para incluir ele numa aplicação de testes que desenvolvi, para me aprofundar em alguns conceitos de Java para Web.

Modifiquei toda a minha aplicação, mais fiquei com uma dúvida. Irei explicar abaixo qual o objetivo da aplicação e como realizei a divisão, para que vocês consigam enchergar melhor o meu problema.

A aplicação de testes que estou desenvolvendo se baseia num pequeno caso de usos referente a clínicas médicas, aonde pode se realizar as seguintes operações:
Pesquisar Clínicas
Inserir telefones da clínica
Remover Telefones da clínica
Localizar município aonde a clínica está instalada
Atualizar dados da clínica

Pois bem, baseando-me na discução realizada neste forum, criei uma arquitetura no meu projeto, aonde existe a classe ClinicaControler, que é uma Servlet e é o Front Controller da aplicação. Este Front Controller instancia a classe RequestHelper, que realiza duas funções em seu contrutor: Encapsular o request na classe HttpRequestData (que implementa a interface RequestData), e executa o método create da classe CommandFactory (passando os atributos URI de requisição da página e o objeto HttpRequestData).
Este atributo irá me retornar o command referente a solicitação realizada. Nesta classe eu capturo na requisição o mapeamento, que coloquei terminando com “.do” para facilitar a declaração no web.xml, e verifico em um if qual classe devo instanciar (Não sei se esta seria a melhor forma de implementar esta Factory. Caso exista um jeito melhor, por favor me avisem).

Beleza. Então já tenho o meu command instanciado. Agora executo o método execute, que irá processar a tarefe que o Command instanciado implementa. É neste ponto que tenho um problema.

Vou dar um exemplo:

Os comandos “Adicionar Telefone” e “Remover Telefone”, como o nome sugere, adicionam ou removem os telefones. Estes telefones se encontram numa collections da VO Telefone, que se encontra na sessão (o restante dos dados da clínica se encotnram no escopo da requisição. O caso dos telefones é a única excessão). Pois bem, depois de ter adicionado ou removido um telefone da lista, devo chamar retornar a minha página. O problema é que a página precisa receber um objeto VO da classe Clínica, populado, para preencher novamente a página. Por causa disso preciso preencher esta classe tanto no command AdicionarTelefone quanto no RemoverTelefone. Isto gera uma duplicação de código.

Gostaria de saber como poderia fazer para resolver esta incoveniência no meu modelo.

Espero que tenham entendido o meu problema. :slight_smile:

Eu sei que a discução aqui é velha, mas tenho uma duvida relacionada ao RequestData que é mencionado aqui
eu devo passar o request e response e ficar acoplado a web ou abstrair para um RequestData como mencionado ai ?
dei uma olhada por cima, se for usar HttpSession existe um problema para encapsular e controlar os dados…

[quote=Thiago Senna]Uns tutoriais interessante!

http://www.argonavis.com.br/cursos/java/j550/j550_13.pdf
http://www.argonavis.com.br/cursos/java/j931/J931_02.pdf

Abraços!
Thiago[/quote]

Link quebrado =(

Queria ver as apresentações… :frowning: