Могу ли я создавать сервлеты во время выполнения? - PullRequest
2 голосов
/ 09 июня 2011

У меня есть сайт с несколькими сервлетами.Каждая страница, такая как index, about, FAQ, contact us и т. Д., Имеет связанный с ними сервлет.Я также планирую сделать возможным добавление дополнительных страниц с помощью кнопки create new page, чтобы при нажатии на нее новой странице был назначен новый сервлет.

Можно ли создавать сервлеты во время выполнения?Я предполагаю, что это не возможно (или, по крайней мере, очень сложно).

... Если нет, есть ли какие-либо обходные пути?

Я использую GlassFish, еслиэто имеет значение.

Ответы [ 3 ]

4 голосов
/ 09 июня 2011

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

Затем закодируйте ваш сервлет для динамического отображения его меню страниц и содержимого каждой отдельной страницы на основе содержимого вашей базы данных.

В этом примере ваш сервлет может воспроизводитьроль Front Side Controller для обработки точек принятия решения о том, какое представление было запрошено, и отправка его рендеринга (может потребоваться отдельный диспетчер).Ваш JSP может быть очень общим по своему характеру, т. Е. Содержать меню и содержимое страницы, которые он отображает на основе данных, которые были установлены в соответствующей области (например, запрос) сервлетом.

1 голос
/ 09 июня 2011

JSP используются для динамического контента. Используйте их

0 голосов
/ 09 июня 2011

Какую конкретную функцию вы реализуете, что потребует от вас создания нового сервлета на страницу?Как вы думаете об этом (динамическая генерация кода Java и компиляция на лету? Генерация байтового кода?)?Или вы думаете о сопоставлении новых URL-адресов с существующим сервлетом?В любом случае, для меня это не имеет особого смысла.

Мне кажется, что вам нужна CMS?Здесь есть несколько хороших дискуссий о CMS на основе Java здесь

...