| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 17:55:20
|
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.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 18:06:53
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
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 )
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 21:01:27
|
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!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 21:06:36
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 21:12:51
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 21:21:17
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 21:34:03
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2005 21:45:03
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
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 |
|
|
 |
|
|