Front Controller, dúvida para implementação

2 respostas
wagnerfrancisco

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!

2 Respostas

jjose

oxe
bote mvc nisso

wagnerfrancisco

jjose:
oxe
bote mvc nisso

Mas é MVC… só que usa Front Controller…

Criado 11 de fevereiro de 2008
Ultima resposta 11 de fev. de 2008
Respostas 2
Participantes 2