Как разработать JSP / Servlets Web App, используя шаблон MVC? - PullRequest
9 голосов
/ 04 апреля 2010

Я занимаюсь разработкой веб-приложения JSP / Servlet (без фреймворков). Я хочу использовать шаблон MVC . Я собираюсь разработать свой проект так:

  1. Контроллер : сервлет, который читает запрос, извлекает значения, связывается с объектами модели и передает информацию на страницу JSP.
  2. Просмотр : JSP Pages.
  3. Модель : Java-классы / Java Beans .. и т. Д.

Проблема: Index.jsp является отправной точкой (страница по умолчанию) на моем веб-сайте. Таким образом, Index.jsp становится контроллером для анализа запроса. Например, следующий запрос:

index.jsp?section=article&id=10

анализируется в index.jsp следующим образом:

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

Здесь я не могу заставить сервлет быть контроллером, потому что index.jsp - это контроллер здесь, поскольку он является отправной точкой.

Есть ли решение переслать запрос от index.jsp сервлету, а затем вернуться к index.jsp? Или любое решение, которое достигает цели MVC - сервлет должен быть контроллером?

Я думаю о создании сервлета FrontPageController в качестве страницы по умолчанию вместо index.jsp , но я не знаю, является ли это идеальной идеей?

1 Ответ

12 голосов
/ 05 апреля 2010

Избавьтесь от index.jsp и просто позвольте сервлету контроллера прослушивать определенный url-pattern интерес. Сам контроллер должен переслать запрос на интересующую страницу JSP, используя RequestDispatcher.

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

В качестве альтернативы вы можете разрешить index.jsp пересылку или перенаправление на URL-адрес, охватываемый сервлетом контроллера, который, в свою очередь, отображает страницу «по умолчанию» (которая выглядит как frontpage.jsp).

Тем не менее, при правильном подходе MVC, вы должны иметь no scriptlets в файлах JSP. Всякий раз, когда вам нужно написать какой-нибудь необработанный код Java внутри файла JSP, который не может быть разумно заменен тегами ( JSTL и т. Д.) Или EL, то конкретный код Java каким-либо образом принадлежит реальной Java класс, как сервлет, фильтр, Javabean и так далее.

Что касается доморощенного подхода MVC, вы можете найти этот ответ и эту статью также полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...