Estoy pensando en implementar Front Controller en mi aplicación J2EE. ¿Podría sugerir lo mismo con algunos enlaces (con ejemplos de código fuente) & cualesquiera estándares a seguir?Java Front Controller
Saludos
Estoy pensando en implementar Front Controller en mi aplicación J2EE. ¿Podría sugerir lo mismo con algunos enlaces (con ejemplos de código fuente) & cualesquiera estándares a seguir?Java Front Controller
Saludos
Para empezar, cree un Servlet
que escucha en un determinado url-pattern
, por ejemplo, /pages/*
. Implemente el método service()
para buscar la acción asociada con el método de solicitud (GET
, POST
, etc.) y pathinfo (la parte de la URL después del servlet url-pattern
).
Ejemplo básico:
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
View view = new View(request, response);
Action action = ActionFactory.getAction(request);
action.execute(view);
view.navigate();
}
La interfaz Action
debería representar una unidad de trabajo. Puede ponerlo en práctica para hacer la lógica de negocio necesaria:
public interface Action {
void execute(View view);
}
El ActionFactory
deben mantener las clases que implementan Action
en una especie de Map<String, Action>
donde la clave String
representa más o menos una combinación del método de la petición y pathinfo. A continuación, podría tener una Action
de la siguiente manera:
public static Action getAction(HttpServletRequest request) {
return actions.get(request.getMethod() + request.getPathInfo());
}
El View
debe representar al ámbito de petición contexto en el que la Action
puede trabajar con ellos. En el navigate()
hacer llegar la solicitud a un JSP para la exhibición:
public void navigate() {
String path = "/WEB-INF" + request.getPathInfo() + ".jsp";
request.getRequestDispatcher(path).forward(request, response);
}
que servirán para iniciar (en cuenta que yo fui de todos los cheques obvios como punteros nulos de distancia para hacer que los ejemplos más despejado, eso depende de usted ahora).
Sin embargo, hay que tener más en cuenta en toda la historia, como la validación, conversión, manejo de eventos, mapeos de valores de entrada, localización, inyección de dependencia, etcétera. Eso es todo con todo un trabajo. Los frameworks MVC más decentes toman la mayor parte de esto en cuenta, como Sun JSF, Apache Struts, Spring MVC, Stripes, etcétera. Si nunca has hecho ninguno de ellos, te recomiendo encarecidamente que lo hagas antes de que crezca uno, de lo contrario terminarías perdiendo el tiempo.
Cuando leo esta documentación sobre Spring MVC, siempre habla de que el motor Servlet será Tomcat. ¿Es diferente si mi servlet es Glassfish? ¿Glassfish lee el contenido de web.xml? –
@Harry: Spring es un poco anti-Sun. – BalusC
ohhh Dios, noticias tristes –
La web está llena de marcos Java Web maduros. No puedo ver un motivo para crear uno nuevo con dos excepciones: 1. Tiene un entorno/flujo muy no estándar y necesita algo muy, muy específico para sus necesidades. 2. Simplemente desea pasar por el ejercicio de crear un marco para aprender sobre los pormenores del desarrollo de httpservlet.
JSR 154 define las especificaciones del servlet. Encuéntrelo aquí: http://jcp.org/en/jsr/detail?id=154
La primavera es uno de los marcos populares actuales y el que funciona para mí. Struts fue uno de los primeros marcos muy populares que comenzó a declinar en popularidad. Encontrar una buena lista de marcos, junto con la discusión en http://java-source.net/open-source/web-frameworks
¿Qué tal el marco Spring MVC? http://www.springsource.org/ –
J2EE es reemplazado por Java EE desde hace más de 3 años. Mantente actualizado. – BalusC
Sí, lo sé, pero generalmente voy con eso ... de todos modos gracias. – user237865