Вопрос-ответ

What is the difference between JSF, Servlet and JSP?

В чем разница между JSF, сервлетом и JSP?

У меня есть несколько вопросов. Это :


  1. Как JSP и сервлет связаны друг с другом?

  2. Является ли JSP каким-то сервлетом?

  3. Как JSP и JSF связаны друг с другом?

  4. Является ли JSF чем-то вроде JSP на основе пользовательского интерфейса предварительной сборки, такого как ASP.NET-MVC?

Переведено автоматически
Ответ 1

JSP (страницы сервера JavaServer)

JSP - это технология Java view, работающая на серверной машине, которая позволяет вам писать текст шаблона на клиентских языках (таких как HTML, CSS, JavaScript и т.д.). JSP поддерживает taglibs, которые поддерживаются фрагментами Java-кода, которые позволяют вам управлять потоком страниц или динамически выводить их. Хорошо известным taglib является JSTL. JSP также поддерживает язык выражений, который может использоваться для доступа к внутренним данным (через атрибуты, доступные в областях страницы, запроса, сеанса и приложения), в основном в сочетании с taglibs.

Когда JSP запрашивается в первый раз или при запуске веб-приложения, контейнер сервлета компилирует его в класс extending HttpServlet и использует в течение срока службы веб-приложения. Сгенерированный исходный код можно найти в рабочем каталоге сервера. Например, в Tomcat это /work каталог. По запросу JSP контейнер сервлета выполняет скомпилированный класс JSP и отправляет сгенерированный вывод (обычно просто HTML / CSS / JS) через веб-сервер по сети на сторону клиента, который, в свою очередь, отображает его в веб-браузере.

Сервлеты

Сервлет - это интерфейс прикладного программирования Java (API), работающий на серверной машине, который перехватывает запросы, сделанные клиентом, и генерирует / отправляет ответ. Хорошо известным примером является HttpServlet который предоставляет методы для подключения к HTTP запросам с использованием популярных HTTP методов, таких как GET и POST. Вы можете настроить HttpServlets для прослушивания определенного шаблона HTTP URL, который настраивается в web.xml или совсем недавно в Java EE 6 с @WebServlet аннотацией.

При первом запросе сервлета или во время запуска веб-приложения контейнер сервлета создаст его экземпляр и сохранит в памяти в течение срока службы веб-приложения. Один и тот же экземпляр будет использоваться повторно для каждого входящего запроса, URL которого соответствует шаблону URL сервлета. Вы можете получить доступ к данным запроса с помощью HttpServletRequest и обработать ответ с помощью HttpServletResponse. Оба объекта доступны в качестве аргументов метода внутри любого из переопределенных методов HttpServlet, таких как doGet() и doPost().

JSF (грани JavaServer)

JSF - это компонентный фреймворк MVC, который построен поверх Servlet API и предоставляет компоненты через taglibs, которые можно использовать в 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 в качестве единственного контроллера запроса-ответа. Он берет на себя всю стандартную и утомительную работу с HTTP-запросами / ответами, такую как сбор пользовательских данных, их проверка / преобразование, помещение в объекты модели, вызов действий и рендеринг ответа. Таким образом, в конечном итоге вы получаете страницу JSP или Facelets (XHTML) для просмотра и класс JavaBean в качестве модели. Компоненты JSF используются для привязки представления к модели (например, как у вас ASP.NET веб-элемент управления), а FacesServlet использует дерево компонентов JSF для выполнения всей работы.

Вопросы по теме

Ответ 2

See http://www.oracle.com/technetwork/java/faq-137059.html


JSP technology is part of the Java
technology family. JSP pages are
compiled into servlets and may call
JavaBeans components (beans) or
Enterprise JavaBeans components
(enterprise beans) to perform
processing on the server. As such, JSP
technology is a key component in a
highly scalable architecture for
web-based applications.


See https://jcp.org/en/introduction/faq


A: JavaServer Faces technology is a
framework for building user interfaces
for web applications. JavaServer Faces
technology includes:


A set of APIs for: representing UI
components and managing their state,
handling events and input validation,
Defining page navigation, and
Supporting internationalization and
accessibility.


A Java Server Pages (JSP) custom tag
library for expressing a JavaServer
Faces interface within a JSP page.


JSP is a specialized kind of servlet.

JSF is a set of tags that you can use within a JSP.

Ответ 3

From Browser/Client perspective

JSP and JSF both look the same, as Per Application Requirements go, JSP is more suited for request and response based applications.

JSF is targeted for richer event-based Web applications. I see the event as much more granular than request/response.

From Server Perspective

JSP page is converted to servlet, and it has only minimal behaviour.

JSF page is converted to components tree(by specialized FacesServlet) and it follows component lifecycle defined by spec.

Ответ 4

Servlets :


The Java Servlet API enables Java developers to write server-side code
for delivering dynamic Web content. Like other proprietary Web server
APIs, the Java Servlet API offered improved performance over CGI;
however, it has some key additional advantages. Because servlets were
coded in Java, they provides an object-oriented (OO) design approach
and, more important, are able to run on any platform. Thus, the same
code was portable to any host that supported Java. Servlets greatly
contributed to the popularity of Java, as it became a widely used
technology for server-side Web application development.


JSP :


JSP is built on top of servlets and provides a simpler, page-based
solution to generating large amounts of dynamic HTML content for Web
user interfaces. JavaServer Pages enables Web developers and designers
to simply edit HTML pages with special tags for the dynamic, Java
portions. JavaServer Pages works by having a special servlet known as
a JSP container, which is installed on a Web server and handles all
JSP page view requests. The JSP container translates a requested
JSP into servlet code that is then compiled and immediately executed.
Subsequent requests to the same page simply invoke the runtime servlet
for the page. If a change is made to the JSP on the server, a request
to view it triggers another translation, compilation, and restart of
the runtime servlet.


JSF :


JavaServer Faces is a standard Java framework for building user
interfaces for Web applications. Most important, it simplifies the
development of the user interface, which is often one of the more
difficult and tedious parts of Web application development.

Although it is possible to build user interfaces by using foundational
Java Web technologies(such as Java servlets and JavaServer Pages)
without a comprehensive framework designedfor enterprise Web
application development, these core technologies can often lead to
avariety of development and maintenance problems. More important, by
the time the developers achieve a production-quality solution, the
same set of problems solved by JSF will have been solved in a
nonstandard manner. JavaServer Faces is designed to simplify the
development of user interfaces for Java Web applications in the
following ways:

• It provides a component-centric,
client-independent development approach to building Web user
interfaces, thus improving developer productivity and ease of use.

• It simplifies the access and management of application data from the
Web user interface.

• It automatically manages the user interface
state between multiple requests and multiple clients in a simple and
unobtrusive manner.

• It supplies a development framework that is
friendly to a diverse developer audience with different skill sets.

• It describes a standard set of architectural patterns for a web
application.


[ Source : Complete reference:JSF ]

java jsp servlets jakarta-ee