#java #jsp
#java #jsp
Вопрос:
Вот структура кода:
jsp code
<%
java code
%>
jsp code
Итак, как java-код работает в jsp? Могу ли я реализовать изменения без перестройки?
Ответ №1:
Ответ зависит от того, что вы подразумеваете под «перестроить». Очевидно, что для запуска чего-либо в JVM это должно быть скомпилировано. Однако контейнер JSP делает это за вас автоматически: он видит, что файл изменился, и перекомпилирует его.
На самом деле, это немного больше, чем просто перекомпиляция: сначала он переводит JSP в чистый Java-код, который реализует Servlet
API, затем он компилирует этот Java-код. Статический текст в JSP (например: <html>
превращается в println()
вызовы. Ссылки на JSTL и другие теги преобразуются в Java-код, который создает экземпляр и вызывает обработчик тегов. Скриплеты вставляются дословно.
Вы не говорите, какой контейнер JSP вы используете, но большинство из них позволят вам изучить созданный сервлет. Tomcat, например, сохраняет сгенерированный код в work
каталоге.
Ответ №2:
http://www.exampledepot.com/egs/javax.servlet.jsp/code.html
Изменения будут применены просто путем перезагрузки страницы в браузере, поскольку это JSP, что означает, что страница будет компилироваться при каждой загрузке. Если вы используете Tomcat, вы можете увидеть сгенерированные java-коды JSP в папке: TOMCAT_HOME/work/localhost
неразумно использовать java-код в коде JSP, потому что при наличии трудно определяемой синтаксической ошибки, а если она есть, то вся страница вообще не сможет быть загружена. В отличие от PHP, который будет загружаться до тех пор, пока не возникнет синтаксическая ошибка.
Комментарии:
1. Первое утверждение на самом деле неверно. Обычный servletcontainer в рабочем состоянии этого не сделает. Совпадением будет то, что Tomcat делает это по умолчанию. Но для этого требуется дорогостоящее сканирование файловой системы локального диска.
Ответ №3:
<%
и %>
не являются комментариями. Они сигнализируют о начале скриптлета, то есть java-кода. Если вы используете Tomcat, любые изменения в файлах jsp отмечаются и перестраиваются без необходимости делать что-либо еще.
Комментарии:
1. Кхм, как сказал Аноним, не только Tomcat. Контейнер сервлета.