Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pattern для Web приложения 
:(
    Опции темы
v2v
Дата 16.1.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



Итак, допустим, есть веб приложение (сайт) доступ на который возможен только для зарегистрированных пользователей. Сайт предоставляет для просмотра какой то набор данных плюс позволяет редактировать (удалять, добавлять) новые данные. допустим всё это будет на jsp страничках с использованием jstl. получается 4 - 5 страничек (не так уж много для начала).
но вопрос как это всё лучше всего организовать (какой шаблон использовать) ??

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

про фреймворки не писать/я их использовать не буду! 
j2ee core + patterns only!




--------------------
PM   Вверх
batigoal
Дата 17.1.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



В первую очередь - MVC.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
SuperFly
Дата 17.1.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 19.11.2007

Репутация: нет
Всего: нет



Цитата(v2v @  16.1.2008,  23:21 Найти цитируемый пост)
про фреймворки не писать/я их использовать не буду! 

Хех, в полку прибыло ^_^ а я уж думал это антинаучно. Слава богу Stampede человек авторитетный, в своем туториале обходился без всякого рода клея, может вам его почитать?
На самом деле там использовались JPA в качестве Model, Velocity в качестве View, а в качестве Controller свой FrontController и обработчики сценариев Worker'ы, всё.
PM   Вверх
v2v
Дата 17.1.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



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

Цитата(batigoal @  17.1.2008,  09:40 Найти цитируемый пост)
В первую очередь - MVC. 

как мне связать jsp - view и данные.
вариант проверки и записиывание в аттрибуты сессии нужных данных в контроллере,  а затем на страничке просто считывание нужных аттрибутов?


--------------------
PM   Вверх
batigoal
Дата 17.1.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



В страничке можно использовать бины. Например, бин - список людей (MembersList). Ну а в выводе, соответственно, итерировать по этому списку и выводить данные о пользователях.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
v2v
Дата 17.1.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



ну собственно я про это и спрашиваю.
как мне передать бины на страничк? 
из странички вызывать контроллер, который получает memberList !?
или в контролере создавать атрибут memberList и далее вызывать нужную страничку, которая работает с атрибутами!?

вопрос поставлю по другому какую книгу почитать по сабжу.(так что бы её можно было найти напр. тут pdfchm.com)


--------------------
PM   Вверх
batigoal
Дата 17.1.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(v2v @  17.1.2008,  14:45 Найти цитируемый пост)
как мне передать бины на страничк? 

Смотря на какую страничку. У JSP это директива useBean, у JSF - не знаю.

Цитата(v2v @  17.1.2008,  14:45 Найти цитируемый пост)
вопрос поставлю по другому какую книгу почитать по сабжу

Можно почитать туториал по J2EE, но эта книга не очень-то заморачивается вопросом написания "правильных" веб-приложений.

Это сообщение отредактировал(а) batigoal - 17.1.2008, 16:26


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
v2v
Дата 17.1.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



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

(опять таки интересуют вопросы правильного построения без использования фреймворков)

Это сообщение отредактировал(а) v2v - 17.1.2008, 23:41


--------------------
PM   Вверх
batigoal
Дата 17.1.2008, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



От скриптлетов действительно нужно избавиться. Это всё можно сделать тегами.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
v2v
Дата 17.1.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



Цитата(batigoal @  17.1.2008,  23:35 Найти цитируемый пост)
От скриптлетов действительно нужно избавиться. Это всё можно сделать тегами. 

предыдущий пост я заменил... читать его 


--------------------
PM   Вверх
olegrolik
Дата 17.1.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



Цитата(v2v @ 17.1.2008,  13:45)
вопрос поставлю по другому какую книгу почитать по сабжу.(так что бы её можно было найти напр. тут pdfchm.com)


Присоединяюсь. Сам хотел создать подобный топик. Тоже хочу сделать движок для сайта. 
Читал тему "JSP - с чего начать". Не нравится JPA и Hibernate, Velocity устраивает.
Может у кого-то есть пример небольшого сайта, написанного на Java, где обязательно есть авторизация, реализованная через форму?
PM MAIL   Вверх
v2v
Дата 17.1.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



Цитата(olegrolik @  17.1.2008,  23:44 Найти цитируемый пост)

Может у кого-то есть пример небольшого сайта, написанного на Java, где обязательно есть авторизация, реализованная через форму? 

это действительно не сложно делается, сдам последний экзамен на сесии и постараюсь такй примерчик сделать с описанием.

вопрос про производительность в силе!

Это сообщение отредактировал(а) v2v - 17.1.2008, 23:55


--------------------
PM   Вверх
batigoal
Дата 18.1.2008, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(olegrolik @  18.1.2008,  00:44 Найти цитируемый пост)
Не нравится JPA и Hibernate

Почему? По-моему, это одна из лучших вещей, появившаяся в программировании за последние годы.


Цитата(v2v @  17.1.2008,  19:32 Найти цитируемый пост)
что то типо новостного сайта или форума с большими постами ), т.е. каждому пользователю формируется (почти) одинаковые данные. 
что необходимо учитывать , что-бы максимально выиграть в производительности? 

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

Еще стоит посмотреть на пулы соединений - может, пригодится.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
v2v
Дата 18.1.2008, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



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

есть какие то механизмы кеширования. подскажите куда смотреть?


--------------------
PM   Вверх
Stampede
Дата 18.1.2008, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(v2v @  17.1.2008,  08:32 Найти цитируемый пост)
что необходимо учитывать , что-бы максимально выиграть в производительности? 


А скажи, для чего тебе выигрывать в производительности?

Сгенерировать новостную страничку разумного размера при более-менее грамотной организации приложения и базы данных, да на нормальном железе - вопрос 50-200 мс. Можно, конечно, попытаться соптимизировать какие-то моменты и уложиться, скажем, в 20 мс, но возникает вопрос - зачем? На фоне неизбежной сетевой задержки выигрыш в несколько десятков миллисекунд практически не виден. Так стоит ли городить огород?

Вариант с кэшированием готовых страниц я бы вообще не рассматривал, поскольку это сразу ограничивает тебя в динамических возможнотях. Например, ты уже не сможешь показывать посетителям персонализированный контент, а это для развития сайта далеко не последняя вещь.

Если хочешь примеров - могу привести.

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


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Shaggie
Дата 18.1.2008, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 2
Всего: 72



Цитата(olegrolik @  17.1.2008,  23:44 Найти цитируемый пост)
пример небольшого сайта, написанного на Java, где обязательно есть авторизация, реализованная через форму?

Да вон у Stampede в подписи ссылочка на webjavenue.com, скачай оттуда туториал - там и Velocity, и JDBC, и авторизация через форму, только разобраться имхо непросто.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
olegrolik
Дата 18.1.2008, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



Цитата(batigoal @ 18.1.2008,  00:33)
Цитата(olegrolik @  18.1.2008,  00:44 Найти цитируемый пост)
Не нравится JPA и Hibernate

Почему? По-моему, это одна из лучших вещей, появившаяся в программировании за последние годы.


Неправильно выразился. Я просто хотел сказать, что, база данных у меня будет использоваться условно, т.е. обойтись можно и без неё. Затраты на изучение не будут стоить выхлопа smile

v2v, желаю успешной и скорейшей сдачи экзамена smile
Stampede, а примеров движков "попроще" нет?  smile  (имею ввиду тему "JSP - с чего начать?")


PM MAIL   Вверх
Kangaroo
Дата 18.1.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 14
Всего: 104



Цитата(olegrolik @  18.1.2008,  07:41 Найти цитируемый пост)
 Я просто хотел сказать, что, база данных у меня будет использоваться условно, т.е. обойтись можно и без неё. Затраты на изучение не будут стоить выхлопа

А ты больше не собираешься других проектов делать? ORM сейчас уже почти неотъемлимая часть проекта, так что рекомендую выучить  smile 


Цитата(olegrolik @  18.1.2008,  07:41 Найти цитируемый пост)
 а примеров движков "попроще" нет?

А что значит "попроще"? Чем тебя там тема не понравилась. Там вроде классно все рассказано с нуля, то есть разобраться можно без проблем..


--------------------
Lost....
PM MAIL MSN   Вверх
batigoal
Дата 18.1.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(v2v @  18.1.2008,  02:12 Найти цитируемый пост)
я не большой знаток кеширования, поэтому непонятно как оно будет выыглядеть? 

Я имел в виду такой вариант кеширования, как загрузку данных из БД в память (при первом запросе либо при инициализации приложения) вместо залезания каждый раз в БД при запросе клиента. Например, на главной странице у тебя есть 10 последних постов/новостей. Тогда имеет смысл держать 10 экземпляров класса Post (или там Article) в памяти постоянно, и получится некоторая экономия на загрузке данных. 
(Разумеется, держать в памяти абсолютно все записи скорее всего будет невыгодно).

У нас подобный кеш модели данных организован на основе WeakReference, но это, наверное, для тебя будет слишком "тяжелым" решением.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
olegrolik
Дата 18.1.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



Kangaroo, в ближайший месяц не собираюсь. Попроще -  значит без ORM.
Мы тут обсуждаем мои предпочтения или отписываемся по теме? smile 
PM MAIL   Вверх
v2v
Дата 24.1.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 9
Всего: 56



Едем дальше в постороении нормального веб приложения.

Работа с бд.
тоже, наверное, есть какие то шаблоны. что посоветуете?

пока придумал следующее: написать класс, который  состоит из методов:
Код

executeSelect () 
executeUpdate ()
executeDelete ()
executeInsert ()

каждый из методов, в качестве параметра получает sql строку и выполняет соответствующее действие 
в базе ...
Единственный вопрос , что должен возвращать executeSelect() ? List каких то объектов (например List<Users>), 
но тогда для каждой таблици надо писать свою реализацию executeSelect() .. не подходит.

Что посоветуете.
благодарю.


--------------------
PM   Вверх
Ornitos
Дата 31.1.2008, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.10.2007
Где: Непал

Репутация: 1
Всего: 3



Цитата(v2v @  24.1.2008,  19:44 Найти цитируемый пост)
Единственный вопрос , что должен возвращать executeSelect() ? List каких то объектов (например List<Users>), 
но тогда для каждой таблици надо писать свою реализацию executeSelect() .. не подходит.


Можно сделать метод генериком. В качестве аргумента передавать объект Class<T>. По класу выбирать подходящую таблицу.


Цитата(v2v @  24.1.2008,  19:44 Найти цитируемый пост)
Работа с бд.
тоже, наверное, есть какие то шаблоны. что посоветуете?


Существует целый ряд шаблонов. Поскольку требования твои мне не ведомы, читай и выбирай паттерн сам.
Active record
Table Data Gateway
RowDataGateway
Data Mapper
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1131 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.