Фронтальный контроллер Java [дубликат]

6
задан BalusC 13 January 2010 в 22:39
поделиться

2 ответа

Для начала создать сервлете , который слушает на определенном URL-шаблоне , например. / Страницы / * . Реализуйте метод Service () , чтобы найти действие, связанное с методом запроса ( GOW , POST , и т. Д.) и PathInfo (часть URL после УРЛ-шаблон ).

Основной пример:

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();
}

Action интерфейс должен представлять единицу работы. Вы можете реализовать его для выполнения необходимой бизнес-логики:

public interface Action {
  void execute(View view);
}

ActionFactory должен поддерживать действия, реализующие классы в родах карта <Строка, действие> , где Клавиша клавиша представляет собой менее или более комбинацию метода запроса и PathInfo. Затем вы можете получить действие следующим образом:

public static Action getAction(HttpServletRequest request) {
  return actions.get(request.getMethod() + request.getPathInfo());
}

View должен представлять собой запрос на определенный контекст, который может работать действие . В навигация () [) вы можете переслать запрос на JSP для отображения:

public void navigate() {
  String path = "/WEB-INF" + request.getPathInfo() + ".jsp";
  request.getRequestDispatcher(path).forward(request, response);
}

, которое должно вас запустить (обратите внимание, что я оставил все очевидные проверки, такие как нулевые указатели, чтобы сделать примеры менее загроможденными, Это зависит от вас сейчас).

Однако есть больше, чтобы принять участие во всей истории, таком как проверка, конвертация, обработка событий, сопоставления входных значений, локализация, инъекция зависимости, Etcetera. Это все со всей довольно работой. Более достойные рамки MVC принимают большую часть этого вообще, например, Sun JSF , Apache Struts , Spring MVC , полосы , Etcetera. Если вы никогда не делали ни одного из них, то я настоятельно рекомендую сделать это, прежде чем доменять, иначе вы получите отходы времени.

15
ответ дан 8 December 2019 в 14:43
поделиться

Паутина полна зрелых java веб-фреймворков. Я не вижу причин для создания нового за двумя исключениями: 1. У вас есть очень нестандартное окружение/поток, и вам нужно что-то очень, очень специфическое для ваших нужд. 2. Вы просто хотите пройти через упражнение по созданию фреймворка, чтобы узнать об особенностях разработки httpservlet.

JSR 154 определяет спецификации сервлета. Найдите его здесь: http://jcp.org/en/jsr/detail?id=154

Весна - один из популярных в настоящее время фреймворков и тот, который работает на меня. Struts был одним из первых очень популярных фреймворков, который начал снижать популярность. Хороший список фреймворков вместе с обсуждением можно найти по адресу http://java-source.net/open-source/web-frameworks

1
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: