Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Чат
Список форумов
 ->  Основы веб-программирования на Java


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
al1975 : 189
Новичок

СообщениеЯнв 28, 2012 12:51 
Ответить с цитатой
Хочу потренироваться и сделать простенький чат с помощью jsp(сервлетов).И вот думаю: где хранить список присутствующих в чате пользователей и последних(например) 20 сообщений..Можно использовать базу - тут всё понятно.А вот если использовать коллекции(например ArrayList),которые будут в javaBean...Но как сделать ,что б все клиенты обращались к единственному экземпляру коллекции?Объявить коллекцию static - это наверно "не то"...
К началу Посмотреть профиль Отправить личное сообщение
shoo : 115
Новичок

СообщениеЯнв 28, 2012 13:11 
Ответить с цитатой
Можно попробовать использовать JNDI. Работать точно будет, но вот целесообразно ли использовать JNDI для этого, я не знаю.

http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html
К началу Посмотреть профиль Отправить личное сообщение
al1975 : 189
Новичок

СообщениеЯнв 28, 2012 13:28 
Ответить с цитатой
Использование JNDI и обычной базы (например mysql) - это из одной оперы.Меня интересует : как создать коллекцию(в контейнере jsp),что б она была в одном экземпляре - что б все пользователи могли её единственную использовать..?
К началу Посмотреть профиль Отправить личное сообщение
shoo : 115
Новичок

СообщениеЯнв 28, 2012 14:08 
Ответить с цитатой
Ну а ServletContext?
К началу Посмотреть профиль Отправить личное сообщение
al1975 : 189
Новичок

СообщениеЯнв 28, 2012 14:33 
Ответить с цитатой
Надо,что б в контейнере jsp был javaBean,в котором будет коллекция,которая должна быть в единственном экземляре и что б к ней могли обращаться клиенты...Как это сделать?
К началу Посмотреть профиль Отправить личное сообщение
shoo : 115
Новичок

СообщениеЯнв 28, 2012 14:56 
Ответить с цитатой
Код:

<%= getServletContext().getAttribute("value") %>
К началу Посмотреть профиль Отправить личное сообщение
al1975 : 189
Новичок

СообщениеЯнв 28, 2012 15:01 
Ответить с цитатой
Это где это значение value храниться и как оно было туда вставлено?
К началу Посмотреть профиль Отправить личное сообщение
shoo : 115
Новичок

СообщениеЯнв 28, 2012 15:08 
Ответить с цитатой
al1975 писал(а):
Это где это значение value храниться и как оно было туда вставлено?

Хранится где-то контейнером сервлетов, соответственно существует для каждого сервлета пока не перезапустится контейнер. Вставлено было.. ну например, вот так:
Код:

<% getServletContext().setAttribute("value", "LOL, i'm using ServletContext!) %>

Естественно всё это нужно синхронизировать, так как у вас многие пользователи будут работать с одним объектом.

P.S. Кстати, могу дать ссылку на хорошую поисковую систему.
К началу Посмотреть профиль Отправить личное сообщение
al1975 : 189
Новичок

СообщениеЯнв 28, 2012 15:12 
Ответить с цитатой
Ну вот если выбирать между : использаванием базы и например servletcontext - что лучше?Я больше склоняюсь к базе - всё-таки так надёжней - будет сбой - база всё равно будет хранить значения,а в другом варианте при сбое вся инфа сотрёться...Как считаешь?
К началу Посмотреть профиль Отправить личное сообщение
shoo : 115
Новичок

СообщениеЯнв 28, 2012 15:23 
Ответить с цитатой
Ну, если ты хочешь сохранять значения всё, что ведётся в чате, то да, лучше использовать базу. Тогда, единственное, что должно выполнять твоё приложение для этого, это переводить простенький SQL запрос в представление для браузера:
Код:

SELECT * FROM `messages` ORDER BY `id` DESC LIMIT 10

Ну, а остальное всё делается средствами JavaScript.

В общем, ты не тот инструмент выбрал для разработки чата.
К началу Посмотреть профиль Отправить личное сообщение
al1975 : 189
Новичок

СообщениеЯнв 28, 2012 15:28 
Ответить с цитатой
Вот интересно:в существующих чатах наверно всё-таки через базу делаеться? Кто подскажет?
К началу Посмотреть профиль Отправить личное сообщение
Pahan : 745
Постоянный посетитель
Откуда: Минск

СообщениеЯнв 28, 2012 22:50 
Ответить с цитатой
Не вижу смысла базу в этом случае использовать, какая с этого выгода?! Лишний геморой, и потеря скорости.
Ну максимум для хранения истории, да и то надо ли оно.

Ну и как уже сказано, http для чата худший вариант.
К началу Посмотреть профиль Отправить личное сообщение
al1975 : 189
Новичок

СообщениеЯнв 31, 2012 21:31 
Ответить с цитатой
У меня ещё такой вопрос:
Вот один клиент зашёл на сайт,вызвав jsp-страницу в которой есть такой код:
Код:

getServletContext().setAttribute("name","value");

Потом заходит другой клиет.Сможет ли он с помощью нижеприведённого кода считать именно это значение "value"(строку)
Код:
getServletContext().getAttribute("name");

Как я понял getServletContext() - это доступ к хранилищу контейнера и "value" должно вытягиватся по ключу "name" любым клиентом и значение должно быть именно "value".....или я чего-то не понимаю...
К началу Посмотреть профиль Отправить личное сообщение
Pahan : 745
Постоянный посетитель
Откуда: Минск

СообщениеФев 01, 2012 7:17 
Ответить с цитатой
Так и есть.
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Основы веб-программирования на Java


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru