Olá, estudando alguns padrões de projeto, cheguei nesse texto:
http://www.tatanka.com.br/palestras/cj2005-Web+MVC+IoC+Reflection/
Pelo que entendi, a comunicação é bem simples, de maneira tradicional:
requisição do cliente -> Controller escolhe uma ação a partir da requisição -> ação é tomada -> resposta é dada através de uma página JSP.
Ele não fala, mas parece ser o pattern Front Controller sendo aplicado. Achei todo código muito bem feito, me ajudou muito! Gostaria de utilizá-lo pra fazer comunicação com outros tipos de cliente, não browsers, descartando assim as páginas JSP. Especificamente gostaria de executar com dispositivos móveis e clientes desktop.
A dúvida é simples, eu vou criar várias servlets pra mandarem as respostas. Só que eu preciso que elas tenham referências de alguns objetos (parte model) que foram instanciados nas Actions (os comandos). Gostaria de uma sugestão elegante e condizente com o código pra fazer isso. Existe algum pattern pra resolver isso?
Pra entender melhor, parte do código Controller:
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
String pagina = request.getParameter("pagina");
Map<Class,Object> context = new HashMap<Class,Object>();
context.put(HttpServletRequest.class, request);
context.put(HttpServletResponse.class, response);
Action action = criaAction(pagina, context); //nessa action vou instanciar objetos
setterInjection(request, action);
action.execute();
MagicRequest magicRequest = new MagicRequest(request, action);
String view = properties.getProperty(pagina + ".view");
request.getRequestDispatcher(view).forward(magicRequest, response); //preciso exibí-los na resposta, mas como?
} catch (Exception e) {
throw new ServletException(e);
}
}
Obrigado!