#java #javascript #jsp
#java #javascript #jsp
Вопрос:
Я внедряю игру в JSP и сервлеты. Игра должна поддерживать несколько игроков. Очевидно, что каждый идентификатор игрока генерируется на стороне сервера. Но где мне сохранить его на стороне клиента, чтобы я мог получить его позже (изнутри сервлета), когда клиент вызовет сервлет?
Ответ №1:
Сеансы обрабатываются автоматически сервлетной платформой, и вы извлекаете сеанс, вызывая request.getSession()
сервлет.
Сеанс доступен разными способами, как только вы начинаете использовать фреймворк, как только вы перерастаете сервлеты (это происходит быстро) и зависит от фреймворка.
Комментарии:
1. Могу ли я сохранить хэш-карту <ClientID, HttpSession> и проверить, какой игрок общается со мной? Как мне это правильно протестировать?
2. Я не думаю, что вы действительно понимаете, что такое сессия. Если вы вводите идентификатор клиента в сеанс, вы уже знаете идентификатор клиента, потому что он находится в сеансе.
3. Будут ли 2 разные вкладки в одном браузере иметь разные сеансы?
4. @MichaelS Нет (раньше это зависело от браузера, все еще может быть, но я сомневаюсь в этом). Если вам нужно различать вкладки, вам придется реализовать некоторую форму области «диалога», как это делает Seam, и сохранять уникальный токен для каждого запроса, в том числе для ссылок.
5. Я понимаю. Большое спасибо, я углублюсь в это!
Ответ №2:
Зависит от того, как долго вы хотите, чтобы клиент запоминал идентификатор игрока.
- Во время сеанса: сеанс — хорошее место
- Во время его последующих посещений: (постоянный) файл cookie — хорошее место
Сессия: request.getSession()
Cookie: request.getCookies()
и response.addCookie(cookie)
Ответ №3:
Идентификаторы сеанса обычно хранятся в файле cookie.
Я был бы поражен, если бы в JSP не было библиотеки сеансов, которая позаботилась бы обо всем этом за вас.