Как обрабатывать несколько клиентов в JSP?

#java #javascript #jsp

#java #javascript #jsp

Вопрос:

Я внедряю игру в JSP и сервлеты. Игра должна поддерживать несколько игроков. Очевидно, что каждый идентификатор игрока генерируется на стороне сервера. Но где мне сохранить его на стороне клиента, чтобы я мог получить его позже (изнутри сервлета), когда клиент вызовет сервлет?

Ответ №1:

Сеансы обрабатываются автоматически сервлетной платформой, и вы извлекаете сеанс, вызывая request.getSession() сервлет.

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

Комментарии:

1. Могу ли я сохранить хэш-карту <ClientID, HttpSession> и проверить, какой игрок общается со мной? Как мне это правильно протестировать?

2. Я не думаю, что вы действительно понимаете, что такое сессия. Если вы вводите идентификатор клиента в сеанс, вы уже знаете идентификатор клиента, потому что он находится в сеансе.

3. Будут ли 2 разные вкладки в одном браузере иметь разные сеансы?

4. @MichaelS Нет (раньше это зависело от браузера, все еще может быть, но я сомневаюсь в этом). Если вам нужно различать вкладки, вам придется реализовать некоторую форму области «диалога», как это делает Seam, и сохранять уникальный токен для каждого запроса, в том числе для ссылок.

5. Я понимаю. Большое спасибо, я углублюсь в это!

Ответ №2:

Зависит от того, как долго вы хотите, чтобы клиент запоминал идентификатор игрока.

  1. Во время сеанса: сеанс — хорошее место
  2. Во время его последующих посещений: (постоянный) файл cookie — хорошее место

Сессия: request.getSession()

Cookie: request.getCookies() и response.addCookie(cookie)

Ответ №3:

Идентификаторы сеанса обычно хранятся в файле cookie.

Я был бы поражен, если бы в JSP не было библиотеки сеансов, которая позаботилась бы обо всем этом за вас.