Если требуется, чтобы жизненным циклом объектов управлял контейнер надо использовать директиву
<jsp:useBean id="bean's name" scope="bean's scope" typeSpec/>
детали тут
Однако, никто не мешает в
скриплете внутри jsp страницы создать нужные объекты и вывести значения их атрибутов/методов в поток вывода сервлета(jsp страницы), хотя в общем случае так делать не желательно.
В данном случае я бы рекомендовал создать отдельный класс для доступа к Вашим объектам, скажем UserDAO, который бы получал данные из БД и создавал экземпляры Вашего класса User. В самом тривиальном случае UserDAO будет содержать единственный методо, скажем, list, который возвращает список всех объектов для которых есть соответствующие записи в БД, что-то типа
/**
*
* @return Список объектов User данные для которых имеются в БД
*/
public List<User> list()
{
List<User> result = new ArrayList<User>();
try // <-- вообще так делать не очень хорошо, но тут я просто избавил себя от лишней писанины
{
/*
* Структуру Вашей БД я не знаю, поэтому
* тупо выбираю значения колонок id и nickname
* из таблицы tbl_user.
* Если у Вас все организовано иначе, вставте свой SQL запрос.
*/
PreparedStatement statement = connection.prepareStatement(
"select id, nickname from tbl_user");
ResultSet r_set = statement.executeQuery();
/*
* Бежим по результирующей выборке и инициализируем объекты типа User,
* попутно добавляя их в список.
*/
while (r_set.next())
{
// предполагается, что у User имеется соответствующий конструктор
User p = new User(r_set.getString("id"), r_set.getString("nickname"));
result.add(p);
}
} catch (Exception e)
{
e.printStackTrace();
}
return result;
}
И дальше использовать UserDAO как бин (смотри директиву jsp:useBean) на нужных страницах, а в скриплете в нужном месте страницы вызвать у бина объявленный выше метод list и на основе его значения, например, в цикле построить табличку или еще что-нибудь полезное сделать.
Хороший пример, как вообще делать приложения на jsp + serlet можно посмотреть
здесь