Об использовании скриптов в JSP
Я новичок в JSP. Я создал веб-приложение, используя JSP.
Я написал код Java внутри скриплетов JSP (<%.....%>
).
Для подключения к базе данных я также следовал так же.
Пример:
html code;
<%
database connectivity code;
%>
some jquery code;
<%
again database connectivity code;
%>
Но некоторые люди говорили мне, что у него есть большой недостаток: "Используя декларации сценариев, что только один человек может использовать ваш сайт одновременно без конфликтов"
Я делаю правильно? Правильно ли строить веб-приложение таким образом?
3 ответа
Это плохая идея, но это не потому, что только один человек может использовать сайт одновременно. Это плохая идея, потому что код станет трудно поддерживать. Код подключения к вашей базе данных должен быть отделен от логики вашего представления. Возможно, поместите его в сервлет (в идеале он должен быть абстрагирован в некотором постоянном слое). Сервлет получит данные из базы данных и сделает их доступными для рендеринга jsp.
Как и сервлет, JSP также переводятся в сервлет и затем компилируются, поэтому все, что вы объявляете в блоке декларации JSP, т.е. <%! ... %>
будет прямо заявлено в переведенном сервлете. Что касается сервлета, то в течение всего жизненного цикла сервера существует только один экземпляр сервлета, и только созданный поток вызывается только из сервисного метода только из этого экземпляра. Поэтому, если происходит одновременный запрос, они могут изменить один и тот же элемент данных и могут привести к неожиданному результату.
Совет, который вы получили по скриптлетам, вызывающим однопоточность для вашего сайта, верен только в том случае, если код, который вы вставили в скриптлет, приводит к тому, что JSTL, Struts и т. Д. Генерируют код Java, который выглядит так же, как код, создаваемый JSP с помощью скриплетов.
При этом использование скриптлетов считается плохой практикой, поскольку приводит к запутанному коду. Попробуйте использовать JSTL, используйте bean-компоненты и поместите в них свою Java-логику. Ваш JSP будет выглядеть намного лучше и будет проще в обслуживании.