2010-04-04 34 views
8

Zajmuję się tworzeniem aplikacji WWW JSP/Servlet (bez frameworka). Chcę użyć wzoru MVC. Mam zamiar zaprojektować mój projekt tak:Jak opracować aplikację internetową JSP/Servlets przy użyciu wzoru MVC?

  1. Controller: aplet, który odczytuje wniosek, wyciągi wartości, komunikuje się z modelowych obiektów i daje informacje do strony JSP.
  2. Wyświetl: Strony JSP.
  3. model: Klasy Java/Java Beans .. itp

Problem:Index.jsp jest punktem wyjścia (strona domyślna) na mojej stronie internetowej. Tak więc Index.jsp staje się kontrolerem do analizowania żądania. Na przykład, następujący wniosek:

index.jsp?section=article&id=10 

jest analizowany w index.jsp w następujący sposób:

<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> 

Tutaj nie mogę zmusić aplet być kontrolerem, bo index.jsp jest kontrolerem tutaj, ponieważ jest to punkt wyjścia.

Czy istnieje jakieś rozwiązanie, aby przesłać żądanie z index.jsp do serwletu, a następnie wrócić do index.jsp? Lub jakiekolwiek rozwiązanie, które osiąga cel MVC - serwlet powinien być kontrolerem?

myślę popełnienia aplet FrontPageController jako domyślnej strony zamiast index.jsp, ale nie wiem, czy jest to doskonały pomysł?

Odpowiedz

11

Pozbądź się index.jsp i pozwól serwletowi kontrolera nasłuchiwać na konkretnym interesującym url-pattern. Sam kontroler powinien przesłać żądanie na interesującą stronę JSP przy użyciu RequestDispatcher.

request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 

Alternatywnie można pozwolić index.jsp przodu lub przekierowanie do adresu URL, który jest objęty serwletu kontrolera, który z kolei pokazuje „domyślny” stronę (co wydaje się być frontpage.jsp).

Powiedział, że w prawidłowym podejściu MVC, trzeba mieć żadnychscriptlets w plikach JSP. Kiedykolwiek musisz napisać jakiś surowy kod Java w pliku JSP, którego nie można zastąpić rozsądnie taglibs (JSTL itd.) Lub EL, to konkretny kod Java należy w dowolny sposób do prawdziwej klasy Java, takiej jak Servlet, Filtruj, Javabean, etcetera.

Co się tyczy rodzimego podejścia do MVC, przydatne mogą być również this answer i this article.

+0

Dzięki @BalusC. Czy miałeś na myśli w pierwszym akapicie, że pierwsza strona w mojej witrynie powinna być serwletem takim jak:/default-servlet? Czy powinienem zrobić coś, aby "domyślny serwlet" był domyślną stroną, gdy ktoś odwiedza moją stronę i wpisuje tylko domenę xyz.com/? – Abdullah

+1

Jeśli chcesz mieć prawdziwy "plik powitalny", możesz zachować indeks.jsp', ale zamiast tego pozwól mu przesłać dalej lub przekierować do wybranej domyślnej strony. "Plik powitalny" niestety nie może być serwletem. Punkt ten powinien być przynajmniej jasny: logika kontrolera napisana na stronie JSP nie należy do strony JSP. Należy do serwletu. – BalusC

Powiązane problemy