Как создать динамическую веб-страницу в одном веб-приложении?
Я подумал о том, чтобы еще раз сформулировать этот вопрос, чтобы прояснить его. Большое спасибо за комментарии. Я разрабатываю веб-приложение, в котором я использую виджеты.
Возьмите реальный сценарий использования, предположим, что пользователь USER-A входит в мое веб-приложение, и он использует некоторые виджеты, например, виджеты A,B и C. Он размещает виджет A в центре, WIDGET-B - в верхнем правом углу, а WIDGET-C - в левой части страницы.
USER_B входит в мою систему и использует некоторые виджеты и размещает виджеты в разных положениях, так как виджеты сделаны перетаскиваемыми и изменяющими размеры. Когда пользователь публикует страницу, виджет должен появляться точно в той же позиции, точно в той же позиции, где он / она размещены.
Мы используем Jquery HTML5 в качестве внешнего интерфейса, а сервлет и мой SQL - в конце.
2 ответа
Забудьте о пользователях, просто подумайте о получении любого динамического контента. У вас есть произвольный URL
http://mysite.com/some/path/or/other
или, возможно, с некоторыми параметрами
http://mysite.com/some/path/or/other?thing=somevalue
Когда браузер нажмет на этот URL, будет запущен ваш код, и вы получите доступ к URL. В зависимости от того, какие инструменты вы используете, вы можете даже разбить части URL на несколько полезных переменных, если нет, то вы можете извлечь интересующие вас биты.
String interestingBit; // somehow gets set to "other"
String thing; // somehow gets set "somevalue"
Теперь вы можете написать код для извлечения данных из файла или базы данных,
databaseRetrieve( interstingBit, thing);
еще раз хорошие рамки могут сделать все это действительно легко. Тогда это просто вопрос представления данных. Таким образом, работа с пользовательским контентом может следовать этому подходу. Вам приходится иметь дело с другими вопросами, такими как принятие решения о том, как структурировать хранилище контента и управление безопасностью, но, насколько я понимаю, вы задавали вопрос о толковании URL-адреса.
Отредактировано в ответе на уточненный вопрос:
Похоже, вы разрабатываете функцию "персонализации", которая часто предоставляется продуктами и инфраструктурами "Portal". Ключевым моментом является то, что у вас есть индивидуальный набор предпочтений, которые определяют, какой контент отображается и где он отображается. Таких продуктов много, я работаю на IBM, поэтому знаю о WebSphere Portal и Lotus Mashups, если не считать двух.
Итак, для реализации этого вам нужно:
- Чтобы составить компоновку и макет страницы на основе данных, извлекаемых динамически, скажем, из базы данных. Для этого вам необходимо выяснить, что следует хранить в базе данных (например, список имен виджетов, их размеры и положение, а также, возможно, их стили и конфигурация.) И как визуализировать страницу из этой информации. Я не знаю JQuery, но вам, возможно, придется создать немного кода, чтобы сделать это, не очень сложно, но немного поработать.
- Как выбрать конкретный экземпляр из базы данных на основе идентификатора пользователя и выбранной страницы. Обычно пользователь запрашивает http://mysite.com/sport а ваше приложение знает идентификатор пользователя из информации аутентификации, установленной ранее в сеансе и передаваемой с помощью файлов cookie. В случае Java EE это просто доступно в API сервлета.
- Как записать изменения пользователя во что-то, что вы можете сохранить в своем хранилище.
Вау, вам нужно взглянуть на ваш вопрос и, возможно, немного уточнить его. Здесь есть много вещей в действии, сначала вы говорите о личных пространствах пользователей, это очень распространенная практика, вам нужно изучить запросы маршрутизации (например, я бы посмотрел учебник по rails for zombies, чтобы увидеть, как это сделать в ROR), Вам также нужно определить, что вы используете для разработки: PHP, Java, ASP и т. Д.... в вашем вопросе недостаточно деталей, из-за которых невозможно дать правильный или полезный ответ.
Наконец, вам нужно показать нам, что вы сделали до сих пор, потому что это совершенно невозможно увидеть по вашему вопросу. Покажите нам некоторый код, дайте нам больше спецификаций относительно того, что вы сделали, как и какие инструменты вы используете.
Кажется, вы начинаете с этого, поэтому вы можете начать с рассмотрения шаблона проектирования MVC и веб-фреймворков, которые помогут вам реализовать это. Маршрутизация - это термин, используемый для определения того, как запросы отображаются в вашем приложении.
Редактировать:
Для ваших виджетов это просто вопрос сохранения позиций для каждого пользователя и каждого виджета каким-либо эффективным способом, затем загрузки его при входе в систему и использования ваших библиотек для переустановки позиций на элементах. Вы должны решить, где его хранить, но наиболее логичный подход - на стороне сервера (используйте таблицу БД или атрибут для виджета, чтобы сохранить это). При входе в систему получите значения и верните их в библиотеку (ответ ajax или установка переменных js и т. Д. Есть много способов).