Как правильно вызывать значения из bean-компонента на странице jsp? - PullRequest
0 голосов
/ 15 декабря 2011

Я работаю над проектом Java MVC.В настоящее время у меня есть login.jsp, profile.jsp, ``CheckLogin сервлет, User.java класс бинов и UserDAO класс дао (бины, jsp и все остальные тоже должны быть добавлены).То, что я сейчас делаю здесь, всякий раз, когда пользователь успешно вошел в систему, перенаправляется на страницу профиля, которая показывает все детали пользователя.Мой вопрос здесь:

Лучше ли установить объект типа User для конкретного userID в объекте session, который преобладает в целом session, и получить все значения непосредственно как ${sessionScope.user.property} везде?

или

Лучше всего установить userID в session объекте, который преобладает в целом session и извлеките значения на всех страницах, используя следующие строки кода: <jsp:useBean id="userDAO" scope="page" type="com.project.dao.UserDAO" /> <c:set var="user" value="<%= userDAO.getUser(%>${sessionScope.userID}<%) %>" /> ${user.property}

Надеюсь, я вас понял в своем вопросе.Пожалуйста, предложите мне.

1 Ответ

0 голосов
/ 15 декабря 2011

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

Теперь сохранение пользователя в сеансе или загрузка его при каждом запросе (от контроллера) - это вопрос производительности и устаревших данных.

Если пользователь содержит только данные, которые не изменятся в течение всего сеанса (или могут измениться, но только из этого сеанса, что позволяет обновлять данные при необходимости), сохраните их в сеансе.Это его цель: хранить данные с областью действия сеанса.

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

...