Desacoplamento  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
igor_
Thread.start()

Membro desde: 09/01/2005 14:17:15
Mensagens: 32
Offline

Estou tentando fazer a coisa da maneira correta para ter facilidades futuras, estou criando uma Servlet que recebe a requisição e instancia um novo servlet chamando o metodo execute().
-Os servlets implementam uma interface com o metodo execute.

Só que eu tenho de passsar o Obejto HttpServletRequest e HttpServletResponse.



Queria abstrais isso e não depender de passar o request e o response para os outros servlets que são instanciados. porque hoje em todos os Servlets tenho.



como eu posso fazer isso ?

Ja tentei criar um metodo que me retorne o Response, pois preciso do getWriter(), mas não estou indo bem.

Toda dica é válida muito válida mesmo. Obrigado.

cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Que tal usar um framework web tipo WebWork, Struts, Mentawai ou tantos outros? Vc podia pelo menos dar uma olhada neles e ver como eles resolvem esse problema (dica, dica: o Struts nao resolve, nao se preocupe em olhar prele )
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
igor_
Thread.start()

Membro desde: 09/01/2005 14:17:15
Mensagens: 32
Offline

Não pretendo usar nenhum Framework mas andei dando uma olhada num Mentawai , só que não entendi muito bem ainda, pois ainda não cheguei em um nivel tão avançado. algo mais básico para mim entender o funcionamento seria o idéal.

Grato!
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Ok, Igor, você está indo pelo caminh certo então (presumindo que você efetivamente sabe programar bem em java antes de se aventurar por Servlets).

1 - Por que você rpecisa isntanciar outro Servlet, por que não uma classe Java normal, um POJO?

(um POJO é uma classe Java que não implementa nenhuma interface ou estende nenhuma classe que foi obrigado, pore xemplo um Servlet é obrigado a estender HttpServlet)

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
igor_
Thread.start()

Membro desde: 09/01/2005 14:17:15
Mensagens: 32
Offline

oi pcalcado tudo bem...

Deixa eu entender, então eu continuaria tendo meu controlador(que ´um servlet no caso) e esse instanciaria uma class POJO(que não depende de ninguem ), Mas como eu poderia tratar as requisições com esse POJO?
Request, Reponse essa coisa toda ?

Tipo até mesmo usar o velocity ou freeemarker com esse POJO ?
poxa se conseguir isso é fascinante, porque o meu problema é o forte aclopamento com os Objetos Response e Request.

pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Uhmm..

O que você quer fazer é um Controlador que receba a requisição e passe apra alguém responsável por tratá-la? Bom, isso é 99% do que um framework MVC faz

Para não acoplar aos objetos response/request ou qualquer oturo do Servlet, o que você deve fazer é simplesmente não deixar que esses objetos saiam dos seus servlets (ou actions, se voce usar um MVC qualquer).

Como assim?

Imagina que eu tenho:


E recupero estes valores num servlet:


O que você deve fazer é trabalhar com objetos. Por exemplo, poderíamos ter uma classe assim:



Então, seu Servlet cria uma isntãncia dessa classe usando os atributos passados:



Agora, a sua "ClasseQueFazAlgumaCoisa" não depende de nada mais que do objeto Usuario


Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
igor_
Thread.start()

Membro desde: 09/01/2005 14:17:15
Mensagens: 32
Offline

Essa solução é muito boa e ate mesmo eu ja conhecia ela, mas se eu precisar tratar mais de um Objeto além de usuario, vou entrar em outro problema encher meu Servlet de if/else.

Eu quero meu servlet, somente para passar a requisição para alguém responsavel... por tratar esse objeto, deixar esse controlador bem pobre mesmo so instanciando os reponsaveis por cada objeto, hoje eu faço isso mas tenho de passar o req e res para os mesmos...

eu quero que eles continuem tratanto os Req e Resp mas eu passando pra eles de uma maneira mais bonita . sem repetir tanto codigo como eu faço hoje em toda classe ter de Reescrever o metodo execute passando os Req e Resp por esse metodo.







pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Oi,

Quando você for usar só Servlets, não é legal colcoar todo o processamento num Servlet só, exatamente pelo problema que você mencionou. Você deveria ter Servlets diferentes para requisições diferentes, logo não ia cair neste problema.

O que você precisa é de um Front Controller. Se está pensando em usar isso numa aplicação real, novamente considere um framework. Se não, você pdoe dar uma ldia nos fontes dos frameworks (veja a do mentawai que é mais simples) para ver como eles implementam isso.

Basicamnete, você precisa descobrir qual a UIR acessada e qual classe correspondeo àquela URI, isntanciar essa classe e passar para ela os parâmetros de request e response. Sim, você vai continuar preso a eles a nesta classe (a menos que use alguma técnica de Adapter), mas isso não é ruim,e stas classes foram criadas para processar equests HTTP, é normal que elas tenham dependência com a API de HTTP.

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team