JSP - это технология просмотра Java , работающая на сервере, которая позволяет вам писать текст шаблона на клиентских языках (таких как HTML, CSS, JavaScript и т. Д.). JSP поддерживает taglibs , которые поддерживаются фрагментами кода Java, которые позволяют вам динамически управлять потоком страниц или выводом. Хорошо известный тег taglib - JSTL . JSP также поддерживает язык выражений , который можно использовать для доступа к внутренним данным (через атрибуты, доступные в области страницы, запроса, сеанса и приложения), в основном в сочетании с метками тегов.
Когда JSP запрашивается в первый раз или когда веб-приложение запускается, контейнер сервлета скомпилирует его в класс, расширяющий HttpServlet
, и будет использовать его в течение срока службы веб-приложения. Вы можете найти сгенерированный исходный код в рабочем каталоге сервера. Например, Tomcat , это каталог /work
. По запросу JSP контейнер сервлета выполнит скомпилированный класс JSP и отправит сгенерированный вывод (обычно просто HTML / CSS / JS) через веб-сервер по сети на сторону клиента, которая, в свою очередь, отобразит его в веб-браузере.
Сервлет - это Интерфейс прикладного программирования Java (API) , работающий на сервере, который перехватывает запросы, сделанные клиентом, и генерирует / отправляет ответ. Хорошо известным примером является HttpServlet
, который предоставляет методы для перехвата HTTP запросов с использованием популярных HTTP-методов , таких как GET
и POST
. Вы можете настроить HttpServlet
s для прослушивания определенного шаблона HTTP-URL, который настраивается в web.xml
, или в последнее время с Java EE 6 , с аннотацией @WebServlet
.
Когда сервлет запрашивается впервые или во время запуска веб-приложения, контейнер сервлета создаст его экземпляр и сохранит в памяти в течение срока службы веб-приложения. Один и тот же экземпляр будет повторно использоваться для каждого входящего запроса, URL-адрес которого соответствует шаблону URL-адреса сервлета. Вы можете получить доступ к данным запроса с помощью HttpServletRequest
и обработать ответ с помощью HttpServletResponse
. Оба объекта доступны как аргументы метода внутри любого из переопределенных методов HttpServlet
, таких как doGet()
и doPost()
.
JSF - это основанная на компонентах инфраструктура MVC , которая построена поверх API сервлета и предоставляет компоненты через теги, которые можно использовать в JSP или любой другой технологии представления на основе Java, например как Facelets . Facelets гораздо больше подходит для JSF, чем JSP. В частности, он предоставляет отличные возможности шаблонизации , такие как составные компоненты , в то время как JSP в основном предлагает <jsp:include>
для шаблонизации в JSF, так что вы вынуждены создайте пользовательские компоненты с необработанным Java-кодом (который немного непрозрачен и требует много работы), когда вы хотите заменить повторяющуюся группу компонентов одним компонентом. Начиная с JSF 2.0, JSP устарела как технология просмотра в пользу Facelets.
Примечание : сама JSP НЕ устарела, устарела только комбинация JSF с JSP.
Примечание : JSP обладает большими возможностями шаблонизации с помощью Taglibs, особенно вариант ( Tag File ). Шаблон JSP в сочетании с JSF - вот чего не хватает.
Будучи инфраструктурой MVC ( Model-View-Controller ), JSF предоставляет FacesServlet
в качестве единственного запроса-ответа Controller . Он берет на себя всю стандартную и утомительную работу по запросам / ответам HTTP, такую как сбор пользовательского ввода, проверка / преобразование его, помещение их в объекты модели, вызов действий и рендеринг ответа. Таким образом, вы получите в основном страницу JSP или Facelets (XHTML) для View и класс JavaBean как Model . Компоненты JSF используются для привязки представления к модели (как это делает ваш веб-элемент управления ASP.NET), а FacesServlet
использует дерево компонентов JSF для выполнения всей работы.
Похожие вопросы