model view controller - net - ¿Cómo desarrollar la aplicación web JSP/Servlets usando el patrón MVC?
mvc tutoriales ya (1)
Estoy desarrollando una aplicación web JSP / Servlet (sin marcos). Quiero usar el patrón MVC . Voy a diseñar mi proyecto de esta manera:
- Controlador : un servlet que lee una solicitud, extrae los valores, se comunica con los objetos del modelo y brinda información a una página JSP.
- Ver : páginas JSP.
- Modelo : clases de Java / Java Beans ... etc.
El problema: Index.jsp
es el punto de partida (página predeterminada) en mi sitio web. Entonces, Index.jsp
convierte en el controlador para analizar la solicitud. Por ejemplo, la siguiente solicitud:
index.jsp?section=article&id=10
se analiza en index.jsp de la siguiente manera:
<div class="midcol">
<!-- Which section? -->
<%String fileName = request.getParameter("section");
if (fileName == null) {
fileName = "WEB-INF/jspf/frontpage.jsp";
} else {
fileName = "WEB-INF/jspf/" + fileName + ".jsp";
}
%>
<jsp:include page=''<%= fileName%>'' />
</div>
Aquí, no puedo obligar al servlet a ser un controlador, porque el index.jsp
es el controlador aquí, ya que es el punto de partida.
¿Hay alguna solución para reenviar la solicitud de index.jsp
al servlet y luego volver a index.jsp
? O cualquier solución que logre el objetivo de MVC : ¿el servlet debería ser el controlador?
Estoy pensando en crear un servlet FrontPageController como página predeterminada en lugar de index.jsp , pero no sé si es una idea perfecta.
Deshágase de index.jsp
y simplemente deje que el servlet del controlador escuche en un url-pattern
de url-pattern
específico de interés. El controlador en sí debe reenviar la solicitud a la página de JSP de interés utilizando RequestDispatcher
.
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
Alternativamente, puede permitir que index.jsp
reenvíe o redirija a una URL que está cubierta por el servlet del controlador que a su vez muestra la página "predeterminada" (que parece ser frontpage.jsp
).
Dicho esto, en un enfoque correcto de MVC, no deberías tener scriptlets en los archivos JSP. Siempre que necesite escribir algún código Java sin procesar dentro de un archivo JSP que no pueda ser reemplazado razonablemente por taglibs ( JSTL y demás) o EL, entonces el código Java particular pertenece de alguna manera en una clase Java real, como un Servlet, Filtro, Javabean, etcétera.
Con respecto al enfoque MVC de cosecha propia, puede encontrar esta respuesta y este artículo útil también.