|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
al1975 : 188 Новичок
|
Янв 28, 2012 12:51 |
|
|
| Хочу потренироваться и сделать простенький чат с помощью jsp(сервлетов).И вот думаю: где хранить список присутствующих в чате пользователей и последних(например) 20 сообщений..Можно использовать базу - тут всё понятно.А вот если использовать коллекции(например ArrayList),которые будут в javaBean...Но как сделать ,что б все клиенты обращались к единственному экземпляру коллекции?Объявить коллекцию static - это наверно "не то"... |
|
|
|
 |
shoo : 115 Новичок
|
Янв 28, 2012 13:11 |
|
|
|
|
|
|
 |
al1975 : 188 Новичок
|
Янв 28, 2012 13:28 |
|
|
| Использование JNDI и обычной базы (например mysql) - это из одной оперы.Меня интересует : как создать коллекцию(в контейнере jsp),что б она была в одном экземпляре - что б все пользователи могли её единственную использовать..? |
|
|
|
 |
shoo : 115 Новичок
|
Янв 28, 2012 14:08 |
|
|
|
|
|
|
 |
al1975 : 188 Новичок
|
Янв 28, 2012 14:33 |
|
|
| Надо,что б в контейнере jsp был javaBean,в котором будет коллекция,которая должна быть в единственном экземляре и что б к ней могли обращаться клиенты...Как это сделать? |
|
|
|
 |
shoo : 115 Новичок
|
Янв 28, 2012 14:56 |
|
|
| Код: |
<%= getServletContext().getAttribute("value") %>
|
|
|
|
|
 |
al1975 : 188 Новичок
|
Янв 28, 2012 15:01 |
|
|
| Это где это значение value храниться и как оно было туда вставлено? |
|
|
|
 |
shoo : 115 Новичок
|
Янв 28, 2012 15:08 |
|
|
| al1975 писал(а): |
| Это где это значение value храниться и как оно было туда вставлено? |
Хранится где-то контейнером сервлетов, соответственно существует для каждого сервлета пока не перезапустится контейнер. Вставлено было.. ну например, вот так:
| Код: |
<% getServletContext().setAttribute("value", "LOL, i'm using ServletContext!) %>
|
Естественно всё это нужно синхронизировать, так как у вас многие пользователи будут работать с одним объектом.
P.S. Кстати, могу дать ссылку на хорошую поисковую систему. |
|
|
|
 |
al1975 : 188 Новичок
|
Янв 28, 2012 15:12 |
|
|
| Ну вот если выбирать между : использаванием базы и например servletcontext - что лучше?Я больше склоняюсь к базе - всё-таки так надёжней - будет сбой - база всё равно будет хранить значения,а в другом варианте при сбое вся инфа сотрёться...Как считаешь? |
|
|
|
 |
shoo : 115 Новичок
|
Янв 28, 2012 15:23 |
|
|
Ну, если ты хочешь сохранять значения всё, что ведётся в чате, то да, лучше использовать базу. Тогда, единственное, что должно выполнять твоё приложение для этого, это переводить простенький SQL запрос в представление для браузера:
| Код: |
SELECT * FROM `messages` ORDER BY `id` DESC LIMIT 10
|
Ну, а остальное всё делается средствами JavaScript.
В общем, ты не тот инструмент выбрал для разработки чата. |
|
|
|
 |
al1975 : 188 Новичок
|
Янв 28, 2012 15:28 |
|
|
| Вот интересно:в существующих чатах наверно всё-таки через базу делаеться? Кто подскажет? |
|
|
|
 |
Pahan : 745 Постоянный посетитель Откуда: Минск
|
Янв 28, 2012 22:50 |
|
|
Не вижу смысла базу в этом случае использовать, какая с этого выгода?! Лишний геморой, и потеря скорости.
Ну максимум для хранения истории, да и то надо ли оно.
Ну и как уже сказано, http для чата худший вариант. |
|
|
|
 |
al1975 : 188 Новичок
|
Янв 31, 2012 21:31 |
|
|
У меня ещё такой вопрос:
Вот один клиент зашёл на сайт,вызвав jsp-страницу в которой есть такой код:
| Код: |
getServletContext().setAttribute("name","value"); |
Потом заходит другой клиет.Сможет ли он с помощью нижеприведённого кода считать именно это значение "value"(строку)
| Код: |
| getServletContext().getAttribute("name"); |
Как я понял getServletContext() - это доступ к хранилищу контейнера и "value" должно вытягиватся по ключу "name" любым клиентом и значение должно быть именно "value".....или я чего-то не понимаю... |
|
|
|
 |
Pahan : 745 Постоянный посетитель Откуда: Минск
|
Фев 01, 2012 7:17 |
|
|
|
|
|
|
 |
|
|
|