как я могу сделать сессии в Java, если кто-то отключает куки в моем браузере?

Мне нравится знать, отключает ли кто-то куки в моем браузере затем, cookie не работают на мой браузер затем, как я могу сделать сессии в Java. Я пишу сервлеты для серверного программирования. Затем, как мои сессии работают? Как это распознает пользователя? Поскольку идентификатор JSESSION хранится в cookie...

7
задан BalusC 14 January 2010 в 16:40
поделиться

8 ответов

Насколько проходит Treen Traversal, я думаю, что рекурсия - это фантастическая посадка. (Структура каталога - это дерево)

, если вы знаете, что структура каталогов не невероятно огромна, вам не нужно беспокоиться о переполнении стека.

Рекурсивные решения для навигации деревьев практически более элегантны, чем итеративные решения

-121--4196183-

См. HTTPSERVLESTRESPOCTSOND ENCODEURL () и encodedirecturl () .

Эти функции будут переписаны свои URL-адреса соответствующим образом, чтобы включить информацию о сеансе, если браузер не поддерживает cookies. В зависимости от того, что вы используете Java Web Framework, эти функции могут быть вызваны автоматически (до тех пор, пока вы используете методы структуры для записи URL).

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

12
ответ дан 6 December 2019 в 07:26
поделиться

Необходимо добавить , jsessionid ко всему URL вовлек в webapplication, которые, как предполагается, вызываются клиент . Это включает URL перенаправления и ссылки на странице JSP.

В случае URL перенаправления, необходимо использовать HttpServletResponse#encodeRedirectURL () сначала:

response.sendRedirect(response.encodeRedirectURL("page.jsp"));

В случае ссылок на странице JSP, в основном необходимо передать их URL до HttpServletResponse#encodeURL () сначала. Можно сделать это со справкой JSTL (просто отбрасывание jstl-1.2.jar в /WEB-INF ) тэг , это негласно передаст URL через вышеупомянутый метод:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
    <a href="<c:url value="page1.jsp" />">link1</a>
    <a href="<c:url value="page2.jsp" />">link2</a>
    ...
    <form action="<c:url value="servlet" />" method="post">
        ...
    </form>
5
ответ дан 6 December 2019 в 07:26
поделиться

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

Возможно, вам потребуется изменить изображение, чтобы исключить искажение, это не должно быть слишком жестким и зависеть от фокусного расстояния объектива камеры.

Не пытайтесь сопоставить изображение со сферой, это намного сложнее.

-121--3747476-

Java StartVM, jvisualvm , входит в состав JDK. Патологическая программа Swing исследуется здесь .

-121--1008383-

Если файлы cookie отключены, вы все равно можете поддерживать сеансы, отправляя значение JSESSIONID в качестве параметра запроса, например:

http://www.mywebsite.com/somePage?JSESSIONID=389729387392

Помните, что если безопасность является основной проблемой, то вы можете не захотеть использовать этот подход, так как он помещает идентификатор сеанса прямо в URL.

2
ответ дан 6 December 2019 в 07:26
поделиться

Если файлы cookie отключены, большинство поставщиков сеансов добавляют параметр URL под названием JSESSINEID для обслуживания состояния сеанса

1
ответ дан 6 December 2019 в 07:26
поделиться

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

Три из них связаны, но не сильно.

Количество проверенных строк является самым большим из этих затрат и наименее простым в управлении. Строки должны соответствовать алгоритму соединения. Это, к тому же, наименее актуально.

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

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

SQL-запрос с одной таблицей имеет значение O ( n ). Это количество строк. Это также O ( p ) на основе количества страниц.

При использовании нескольких таблиц исследуемые строки имеют значение O (n m ...). Это алгоритм вложенных циклов. Однако в зависимости от кардинальности отношения результирующий набор может быть равен O ( n ), поскольку все отношения являются 1:1. Но каждая таблица должна быть проверена на соответствие строкам.

Хэш-соединение заменяет O (n * регистрации (n)) индекс + чтение таблицы на O (n) прямые хэш-запросы. По-прежнему необходимо обрабатывать строки O ( n ), но некоторые операции чтения индекса обходятся.

Объединение заменяет O (n m) вложенных циклов операцией сортировки O (регистрация (n + m) (n + m)).

При использовании индексов физическая стоимость может быть уменьшена до O (регистрация (n) m), если таблица просто проверяется на существование. Если требуются строки, то индекс ускоряет доступ к строкам, но все соответствующие строки должны быть обработаны. O (n m), так как это размер результирующего набора, независимо от индексов.

Страницы, рассмотренные для этой работы , могут быть меньше в зависимости от селективности индекса.

точка индекса не в том, чтобы так сильно сократить количество проверяемых строк. Это для снижения стоимости физического ввода-вывода при выборке строк.

-121--1302511-

Это называется топологической сортировкой .

Каноническое применение топологическая сортировка (топологическая order) находится в планировании последовательности задания или задачи; топологическая сортировка алгоритмы были впервые изучены в начало 1960-х годов в контексте PERT методика планирования в проекте управление (Ярнагин 1960). Задания представлены вершинами, и там является ребром от x до y, если задание x должно быть завершенным до выполнения задания y запущено (например, при стирке одежда, стиральная машина должна закончить, прежде чем положить одежду сухой). Затем,топологическая сортировка дает порядок выполнения заданий.

-121--4746570-

Другие ответы великолепны; Мне не нужно повторять это. Но у меня есть некоторые дополнительные комментарии.

Не помещайте данные сеанса (весь сеанс) в файл cookie, а только идентификатор сеанса, возможно хэшированный. Для людей пути слишком легко редактировать содержимое файла cookie. Оставьте данные сеанса на сервере; возможно, в базе данных, если у вас много одновременных пользователей или сеансы работают очень долго.

Если даже сам идентификатор сеанса очень ценен, его можно даже поместить в параметр POST, тем самым предотвращая его появление в самом URL.

1
ответ дан 6 December 2019 в 07:26
поделиться

Как упоминали другие, контейнер для сервлетов, например, tomcat, автоматически прибегает к помещению JSESSIONID в url, если браузер не разрешает cookies. Он настраивается в tomcat, как вы можете увидеть в этом ответе .

Мой совет - просто попробуйте. Воспользуйтесь вашим веб-приложением в том виде, в котором оно есть сейчас, без изменений, запустите его в браузере с отключенными cookies и посмотрите, что произойдет.

1
ответ дан 6 December 2019 в 07:26
поделиться

Посмотрите на стандартные теги для JSP-страниц, в частности на тег .

http://onjava.com/pub/a/pub/a/onjava/2002/05/08/jstl.html?page=2

Я считаю, что он также обрабатывает атрибут jsession-id, если куки-файлы недоступны.

0
ответ дан 6 December 2019 в 07:26
поделиться

Для справки, хорошо знать, что html5 вводит sessionStorage как часть Web Storage . Есть хорошая статья на 24ways.org, представляющая ее: Breaking Out The Edges of The Browser.

Support:

  • Latest: Internet Explorer, Firefox, Safari (настольный и мобильный/iPhone)
  • Частично: Google Chrome (поддерживается только localStorage)
  • Не поддерживается: Opera (по состоянию на 10.10)

HTML5 (включая дополнения следующего поколения, которые еще находятся в разработке)

2
ответ дан 6 December 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: