Я использую JSTL для извлечения значений из моей базы данных и отображения их на моей странице jsp с использованием аналогичного кода, как показано ниже.
<sql:setDataSource
var="myDS"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"
user="root" password="secret"
/>
<sql:query var="list_users" dataSource="${myDS}">
SELECT * FROM users;
</sql:query>
<c:forEach var="user" items="${listUsers.rows}">
<c:out value="${user.name}" />
<c:out value="${user.email}" />
<c:out value="${user.profession}" />
</c:forEach>
Мой руководитель группы посоветовал мне, чтобы не было правильной практики отправлять запросы непосредственно на страницу jsp. Поскольку в этом коде есть имя базы данных, имя пользователя и пароль, я не уверен, реализует ли этот код надлежащую безопасность. Я хотел бы знать ваши мысли по этому вопросу, и если есть какая-либо альтернатива, чтобы сделать это, используя JSTL.
Поскольку JSTL выполняется на стороне сервера, нет дыры в безопасности, потому что запрос не может быть замечен клиентами приложения. Существуют и другие проблемы с этим подходом:
Переместите весь код базы данных в соответствующие классы уровня доступа к данным. И используйте <sql>
для JSTL только для учебных целей, а не для приложений реального мира.
Больше информации:
Вы действительно должны делать свой запрос в своем классе java, а не в jsp, как советует ваш руководитель.
На стороне безопасности это не имеет особого значения, весь код доступен на сервере, jsp или java. Тег sql не должен выводить эту информацию на сгенерированную страницу.
Но на самом деле вопрос касается правильного использования технологий:
jsp используется как шаблон, он должен принимать данные и показывать их конечному пользователю. Некоторая базовая операция может быть выполнена путем циклизации жизненного цикла в списке данных или формировании данных, но это должно быть только для представления, которое вы хотите сделать
java-контроллер используется для восстановления данных и настройки представления по мере необходимости, как для использования jsp, а какие данные для отправки в jsp