Ваша интуиция правильная. Вы не должны подключаться из JSP напрямую к базе данных, если это возможно. Большинство программ состоят из нескольких слоев. Например:
У вас есть DAO (объект доступа к данным), который несет одну ответственность: получение данных из базы данных. Неважно, что происходит с этими данными, но оно извлекает его.
Тогда у вас есть слой услуг, который делает бизнес-логику, расчеты и т.д. Это не заботится, где данные приходит, он только предполагает, что данные есть (но это от дао)
Тогда вы иметь слой пользовательского интерфейса, который подготавливает информацию, которая будет использоваться в JSP, делает преобразования, которые JSP не может сделать, отфильтровывать информацию, которая не требуется, и т. д. И еще раз, он ничего не знает о том, откуда поступают данные, это просто получает его из служебного уровня.
Я предлагаю вам создать приложение таким образом. Это также облегчает тестирование, потому что вам нужно только протестировать БД и не заботиться об пользовательском интерфейсе, или проверить только пользовательский интерфейс и не заботиться о БД. Большинство серьезных приложений структурированы таким образом, хотя в них участвуют еще больше слоев.
Обратите внимание, что для создания уровня DAO не требуется создавать системы, такие как JPA или Hibernate или Spring Data могут генерировать большую часть данных.
Большое спасибо за ваш комментарий. Это объясняло мне много. Я собираюсь создать свой сайт таким образом. Мои только два вопроса: сначала о обработке исключений подключения к базе данных. Должны ли методы DAO выдавать исключения (чтобы их можно было обрабатывать с бизнес-уровня) или ловить их? И второй вопрос: хороша ли практика ведения бизнес-логики в сервлете, а затем перенаправить ее на правильную страницу JSP? –
Ну, я удалил свой пост, так или иначе, для новичка его хороший вызов, чтобы начать изучать Spring/DAO/Hibernate. Этот метод подходит для «больших» сайтов с высоким обменом данными. Удачи –
Вы не должны беспокоиться о исключениях DAO. Если ваша база данных недоступна или недоступна, вероятно, ваше приложение больше ничего не сделает, и тип исключения не имеет особого значения. Вы можете поймать исключение, чтобы иметь возможность показывать сообщение «Веб-сайт вниз» для пользователя, но кроме этого вы мало что можете сделать. –