Сколько данных может/должно, Вы храните в пользовательском объекте сессии?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

8
задан Andy Rose 16 September 2008 в 14:48
поделиться

5 ответов

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

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

Объем информации сессии, которую необходимо хранить, варьируется дико в зависимости от приложения, числа ожидаемых пользователей, спецификация сервера и т.д. Дать более точный ответ запросило бы больше информации :)

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

3
ответ дан 5 December 2019 в 23:17
поделиться

Вы могли также иметь 1 страницу ASP со всей формой HTML, и скрыть части ее до пользовательской заливки и "отправляете" видимую часть...

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

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

у Вас затем будут все данные на одной странице.

2
ответ дан 5 December 2019 в 23:17
поделиться

Если Вы используете традиционную модель HTTP (т.е. не используйте runat = "сервер"), можно отправить данные на другую страницу ASP и поместить отправленные данные в скрытые элементы формы, можно сделать это для однако многих страниц, Вам нужно таким образом предотвращение, помещающее что-либо в переменную сеанса.

0
ответ дан 5 December 2019 в 23:17
поделиться

Так как это проблематично с точки зрения производительности для хранения больших объемов данных в объекте сеанса пользователя, ASP.NET обеспечивает некоторые другие обходные решения сверху того, что упоминается в сообщениях выше. Поставщик Профиля ASP.NET позволяет Вам сохранять сопутствующую информацию сессии в базе данных. Можно также использовать Сервер Состояния сеанса, который использует отдельный сервер, чтобы хранить всю информацию Сессии. Обе из этих ситуаций принимают во внимание, необходимо ли использовать кластеры или подсистемы балансировки нагрузки, серверы могут все еще распознать информацию о сессии через различные серверы. Если Вы храните информацию в объекте Сеанса HTTP, Вы сталкиваетесь с проблемой, что один пользователь должен всегда переходить к тому же серверу для той сессии.

0
ответ дан 5 December 2019 в 23:17
поделиться

Сессия, состояние просмотра, база данных. Все они медленные, но выполнят свою работу.

Скрытые поля формы - это ответ, который мне нравится больше всего.

Есть и другие способы сохранить состояние. Файлы cookie, всплывающее окно, набор фреймов или окна iframe.

0
ответ дан 5 December 2019 в 23:17
поделиться
Другие вопросы по тегам:

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