Пользовательский веб-MVC для унаследованного проекта Java EE - PullRequest
1 голос
/ 20 января 2010

Я нахожусь в процессе создания своего собственного веб-фреймворка MVC для проекта. Этот проект имеет очень старую базу кода, где одна страница JSP напрямую отправляет форму другому JSP, а пути также жестко закодированы. Сейчас это большой проект, и установка Struts или JSF займет значительное время. Поэтому я предлагаю создать небольшую пользовательскую инфраструктуру MVC и преобразовать в нее множество существующих потоков страниц, а также побудить их разрабатывать новые приложения с использованием этих новых инфраструктур MVC.

Я хотел бы обсудить это со всеми вами, имеет ли это смысл или мы должны прямо перейти к стандартным средам MVC.

Моя идея

1. Create one front controller servlet which will have URL pattern like /*.sm
2. This servlet reads one config file and creates a map whose key is requestedURI and value is the class name of the command bean.
3. upon intercepting any action request it reads the parameter map (request.getParameterMap()). This servlet refers the already built map, understand whose command bean is to be invoked? Creates an instance of this command bean.
4. pass the parameter map to this command bean and calls execute method.
5. if any exception is found, front controller servlet forwards the request to one global error page
6. if everything is fine, it then forwards the request to the expected URI (by removong .sm and replace it with .jsp)

Как вы думаете, я здесь что-то упускаю? Я знаю, что могу сделать это более необычным, предоставив страницу ошибок для каждой страницы запроса в файле конфигурации или около того, но это можно сделать и позже.

1 Ответ

2 голосов
/ 20 января 2010

Я думаю, что в конечном итоге вы заново изобретаете колесо, которое катит ваш собственный MVC-фреймворк. Я знаю, что заманчиво сделать свой собственный, так как вам не придется привыкать к новому API, вместо этого создайте свой собственный, и вам будет проще адаптировать его к вашим конкретным случаям использования. Но так как это приложение выглядит очень долгим, вам придется учесть тот факт, что ваша собственная структура (которая теперь может быть современной) будет унаследована и через пару лет.

И тут пригодится адаптация одной из популярных платформ. Создатели новой платформы обычно хотят, чтобы другие тоже двигались, поэтому они будут (или должны) предлагать простые варианты интеграции или миграции вне рамок, которые, по их мнению, работают лучше (Spring является хорошим примером, поскольку он, например, легко интегрируется с существующими). Распределяет приложения, и вы можете постепенно перемещать ваше приложение, не помещая старое в корзину). Кроме того, большинство современных фреймворков очень универсальны (что иногда может быть проблемой, так как им требуется больше времени, чтобы войти в него) и может быть адаптировано практически ко всем случаям использования.

Поэтому я бы рекомендовал внимательно изучить существующие решения (вы также можете многому научиться на их проектных решениях и ошибках) и начинать создавать свои собственные, только если ни одно из них не соответствует вашим требованиям.

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