vanesxl
@vanesxl

Когда и как компилируется JSP?

Добрый день,
начал изучать JavaEE для разработки web приложений. В IDE NetBeans создал проект Java Web. Создал JSP файл в нем перемешка html и кода на java. Потом создал сам сервлет, исходный код сервелат хранится в файле test.java.
Собрал и запустил проект, вроде все работает отлично, полез смотреть собранный проект. И там я обнаружил что сервлет скомпилировался в файл test.class что в общем то логично, а вот JSP файл остался с исходным кодом java.
Тут у меня возникли вопросы:
1 - а когда собственно компилируется JSP файл?
2 - он компилируется каждый раз при обращении к нему? (т.е. на лету)
3 - если JSP файл компилируется каждый раз при обращении, то может ли это как то влиять на производительность самого web приложения, тогда лучше использовать сервлеты?
Заранее большое спасибо!
  • Вопрос задан
  • 753 просмотра
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
JSP-файл компилируются либо при первом обращении к нему, либо при старте сервера. Это зависит от настроек сервера. Кроме того, скомпилированные class-файлы могут сохраняться не в каталоге проекта, а в кэше сервера, поэтому вы можете их не обнаружить даже после обращения к jsp-странице.

Я jsp-файлы в своих проектах комплилирую на этапе сборки. Но не для экономии доли секунды при перевом обращении, а чтобы убедиться, что в них нет ошибок.
Ответ написан
Комментировать
AlexXYZ
@AlexXYZ
O Keep Clear O
Грубо говоря, .jsp это что-то типа .php.
Вот первое же описание по поиску :)
https://ru.wikipedia.org/wiki/JSP


JSP страницы имеют расширение .jsp и размещаются там же, где и обычные Web-страницы
Поэтому при первом запросе этот процесс может вызвать небольшую задержку

сервлет и .jsp - это зеркальные близнецы, что-то типа когда один - это вывернутое наизнанку представление другого. Просто после некоторого опыта использования того и другого вы будете их применять по своему вкусу. По моему личному опыту, я не пользуюсь ни тем, ни другим, а предпочитаю рендерить страницы в html/js, а данные получать через ajax (через сервлеты, хотя теоретически можно и через jsp - им без разницы, что вы через них отдаёте).

P.S.
JavaEE - это такой миф в мире Java. Все о нём говорят. Не парьтесь. Просто изучайте работу backend-а. Когда вы достигнете определённого уровня, то сами себе ответите на вопрос, что такое JavaEE.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы