Чим відрізняється JSF, Servlet від JSP?


826

У мене є питання. Це:

  1. Як JSP і Servlet пов'язані один з одним?
  2. JSP якийсь сервлет?
  3. Як JSP та JSF пов'язані один з одним?
  4. Чи є JSF якийсь JSP на основі попереднього збирання на зразок ASP.NET-MVC?

3
У JSF 2.0+ xml не потрібен.
Дівієш Канзарія

Відповіді:


1229

JSP (сторінки JavaServer)

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

Коли JSP запитується вперше або коли веб-додаток запускається, контейнер сервлетів збирає його в клас, що розширює, HttpServletі використовуватиме його протягом життя веб-програми. Ви можете знайти згенерований вихідний код у робочій справі сервера. Наприклад, Tomcat , це /workкаталог. На запит JSP контейнер сервлетів виконає скомпільований клас JSP і відправить згенерований висновок (як правило, лише HTML / CSS / JS) через веб-сервер через мережу до клієнтської сторони, що в свою чергу відображає його у веб-браузері.

Сервлець

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

Коли сервлет вперше запитується або під час запуску веб-програми, контейнер сервлета створить його примірник і збереже його в пам'яті протягом життя веб-програми. Цей же екземпляр буде повторно використаний для кожного вхідного запиту, URL якого відповідає шаблону URL сервлета. Ви можете отримати доступ до даних запиту HttpServletRequestта обробити відповідь HttpServletResponse. Обидва об'єкти доступні як аргументи методу всередині будь-якого перекритого методу HttpServlet, такого як doGet()і doPost().

JSF (обличчя JavaServer)

JSF - це компонентний MVC, який базується на API сервлетів і забезпечує компоненти через таліби, які можна використовувати в JSP або будь-якій іншій технології базування на базі Java, такі як Facelets . Фасетки набагато більше підходять до JSF, ніж JSP. А саме він надає великі шаблонні можливості, такі як композитні компоненти , в той час як JSP пропонує лише <jsp:include>шаблони в JSF, так що ви змушені створювати власні компоненти з необробленим кодом Java (який трохи непрозорий і багато копіткої роботи), коли ви хочете замінити повторну групу компонентів на один компонент. Починаючи з JSF 2.0, JSP вважається застарілим як технологія перегляду на користь Facelets.

Примітка : Сам JSP НЕ застарілий, просто поєднання JSF з JSP застаріле.

Примітка : JSP має великі шаблонні здібності за допомогою Taglibs, особливо варіант ( Файл тегів ). Шаблони JSP у поєднанні з JSF - це те, чого не вистачає.

Як система MVC ( Model-View-Controller ), JSF є FacesServletєдиним контролером відповіді на запит . Всі стандартні та виснажливі роботи із запитом / відповідями HTTP з ваших рук, такі як збирання вводу користувачів, перевірка / перетворення їх, розміщення їх у модельних об'єктах, виклик дій та надання відповіді. Таким чином, ви отримуєте в основному сторінку JSP або Facelets (XHTML) для View і клас JavaBean як Model . Компоненти JSF використовуються для прив'язки подання з моделлю (наприклад, веб-контроль ASP.NET), а для всіх робіт FacesServletвикористовує дерево компонентів JSF .

Пов'язані питання


8
@Shashank: Не зовсім. Тільки <c:forEach>тег від JSTL. Дивіться також stackoverflow.com/tags/jstl/info
BalusC

1
Так. <mytag:doesSomething/>виглядає як користувацький тег і <jsp:attribute>, jsp тег.
Шашанк Кадне

3
Оскільки це надзвичайно популярна відповідь, я хочу додати дуже важливий біт - це файли тегів JSP, що дозволяє створювати власні теги для складання сторінки та макета без написання коду Java. Ця особливість надзвичайно корисна і вже багато років є частиною стандарту, але залишається недостатньо використаною.
джиггі

1
@johnny Facelets є найкращою технологією перегляду з часу виходу Java EE 6 у 2009 році ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). Мінімальний набір технологій для розробки веб-додатків Java не вищий, ніж у більшості інших мов, але є набагато більше варіантів та конкурентів, що бентежить для новачків. Веб-розробка в Ruby? Перший вибір очевидний.
DavidS

1
@BalusC +1 для детального пояснення. Моя улюблена відповідь.
Аніш Б.

84

Див. Http://www.oracle.com/technetwork/java/faq-137059.html

Технологія JSP є частиною сімейства технологій Java. Сторінки JSP компілюються в сервлети і можуть викликати компоненти JavaBeans (квасоля) або компоненти JavaBeans Enterprise (Enterprise квасолі) для виконання обробки на сервері. Таким чином, технологія JSP є ключовим компонентом високо масштабованої архітектури веб-додатків.

Дивіться https://jcp.org/en/introduction/faq

Відповідь: Технологія JavaServer Faces - це основа для побудови користувальницьких інтерфейсів для веб-додатків. Технологія JavaServer Faces включає:

Набір API для: представлення компонентів інтерфейсу та управління їх станом, обробки подій та перевірки вводу, визначення навігації по сторінках та підтримки інтернаціоналізації та доступності.

Спеціальна бібліотека тегів JavaServer Pages (JSP) для вираження інтерфейсу JavaServer Faces на сторінці JSP.

JSP - це спеціалізований вид сервлетів.

JSF - це набір тегів, якими можна користуватися з JSP.


6
"JSP - це спеціалізований вид сервлетів. JSF - це набір тегів, які ви можете використовувати з JSP." Це твердження найкраще описує стосунки між трьома!
lfree

34

З точки зору браузера / клієнта

І JSP, і JSF виглядають однаково. Відповідно до вимог заявки, JSP більше підходить для додатків на основі запиту.

JSF орієнтований на більш багаті події веб-додатків. Я бачу подію набагато більш детальною, ніж запит / відповідь.

З точки зору сервера

Сторінка JSP перетворюється на сервлет, і вона має лише мінімальну поведінку.

Сторінка JSF перетворюється на дерево компонентів (спеціалізованим FacesServlet) і слід за життєвим циклом компонентів, визначеним специфікацією.


23

Сервлети:

API Java Servlet дозволяє розробникам Java писати код на стороні сервера для доставки динамічного веб-контенту. Як і інші фірмові API веб-сервера, API Java Servlet пропонував покращену ефективність порівняно з CGI; однак це має деякі ключові додаткові переваги. Оскільки сервлетів були закодовані в Java, вони забезпечують об'єктно-орієнтований (OO) підхід до проектування і, що важливіше, здатні працювати на будь-якій платформі. Таким чином, той самий код був переносним для будь-якого хоста, який підтримував Java. Сервлети значно сприяли популярності Java, оскільки вона стала широко використовуваною технологією розробки веб-додатків на стороні сервера.

JSP:

JSP побудований на сервлетах і забезпечує більш просте рішення на основі сторінки для створення великої кількості динамічного вмісту HTML для веб-інтерфейсів користувача. Сторінки JavaServer дозволяють веб-розробникам та дизайнерам просто редагувати HTML-сторінки зі спеціальними тегами для динамічних частин Java. JavaServer Pages працює за допомогою спеціального сервлету, відомого як контейнер JSP, який встановлюється на веб-сервері та обробляє всі запити на перегляд сторінки JSP. Контейнер JSP перекладає запитуваний JSP в сервлет-код, який потім компілюється і негайно виконується. Подальші запити на ту саму сторінку просто викликають сервлет виконання сторінки. Якщо зміна JSP робиться на сервері, запит на перегляд викликає інший переклад, компіляцію та перезапуск сервлета виконання.

JSF:

Обличчя JavaServer - це стандартна Java-схема для побудови користувальницьких інтерфейсів для веб-додатків. Найголовніше, що це спрощує розробку інтерфейсу користувача, який часто є однією з найскладніших і виснажливих частин розробки веб-додатків.
Хоча можна створити інтерфейси користувача за допомогою основоположних технологій Java Web (наприклад, сервлетів Java та сторінок JavaServer) без всеосяжної основи, розробленої для розробки веб-додатків для підприємств, ці основні технології часто можуть призвести до виникнення проблем з розробкою та обслуговуванням. Що ще важливіше, до моменту, коли розробники досягнуть рішення щодо якості виробництва, той самий набір проблем, що вирішуються JSF, будуть вирішені нестандартно. Обличчя JavaServer призначені для спрощення розробки інтерфейсів користувача для веб-додатків Java такими способами:
• Він забезпечує орієнтований на компонент, незалежний від клієнта підхід до розробки веб-користувальницьких інтерфейсів, тим самим покращуючи продуктивність розробника та простоту використання.
• Це спрощує доступ та керування даними програм із веб-інтерфейсу користувача.
• Він автоматично управляє станом інтерфейсу користувача між декількома запитами та декількома клієнтами простим та ненав’язливим способом.
• Він постачає рамки розробки, дружні для різноманітної аудиторії розробників з різними наборами навичок.
• Він описує стандартний набір архітектурних моделей для веб-додатків.

[ Джерело: Повна довідка: JSF ]


3
Це не я, але я думаю, це тому, що ви в основному копіюєте та вставляєте відповідь із книги.
mawburn

7
@Oberon: Дякую за відповідь. Мені знадобилося певний час, щоб знайти точні слова, тому пішли на книгу. Якщо це не підходить, то ви або хтось із них може запропонувати мені зняти відповідь. Я буду радий це зробити.
Кішор Пракаш

18

Також є ситуації, коли ви можете віддавати перевагу JSP над JSF. Характер вибору технології повинен бути характером застосування.

Якщо у вас багата взаємодія з графічним інтерфейсом та багато необхідних сценаріїв Java, тоді надайте перевагу JSF. В основному, якщо ваша архітектура додатків GUI подібна до компонентно орієнтованих та навіть керованих як Swing, тоді JSF є найкращим.

Якщо додаток - це просто форма, яка подає не дуже багато взаємодії з графічним інтерфейсом, тоді JSP може зробити добре, якщо вивчення нових технологій є накладними, а також складні рамки не потрібні.


13

Сервлет - це бічний шар сервера java.

  • JSP - це сервлет з html
  • JSF - це компоненти компонентів на тегах libs
  • JSP - це перетворюється в сервлет один раз, коли сервер отримав запит.

2
JSP перетворюється в сервлет один раз, коли сервер отримав запит.
клякайте

... коли сервер отримав ПЕРШИЙ запит. Розум кешування
dbalakirev

10

це правда, що JSP перетворюється в сервлет під час виконання, а JSF - абсолютно нова річ для того, щоб зробити веб-сторінку більш читаною, оскільки JSF дозволяє записувати всі програми програмування у вигляді тегів.


6

Основна відмінність сервлетів від JSP полягає в тому, що в сервлетах ми пишемо java-код і в тому, що ми вбудовуємо HTML-код і є просто зворотний випадок з JSP. У JSP ми пишемо HTML-код і вкладаємо код Java, використовуючи теги, надані JSP.


5

Java Server Pages (JSP) - це технологія java, яка дозволяє веб-розробникам та дизайнерам швидко розробляти та легко підтримувати, багаті інформацією, динамічні веб-сторінки, що користуються існуючими бізнес-системами. Технологія JSP відокремлює інтерфейс користувача від створення контенту, що дозволяє дизайнерам змінювати загальний макет сторінки, не змінюючи основний динамічний контент.

Facelet - це перша мова, що не стосується сторінки JSP, розроблена для JSF (Java Server Faces), яка забезпечила більш просту і потужну модель програмування для розробників JSF порівняно з JSP. Він вирішує різні проблеми, що виникають у JSP для розробки веб-додатків.

Ось таблиця, яка порівнює особливості скриптів та фасет:

введіть тут опис зображення Джерело


0
JSP:means HTML+Java Code:

У JSP є власний життєвий цикл jsp_init () jsp_service () jsp_destroy

Після першого запиту JSP перетворять у .java файл. Існує три типи тегів, якими ми користуємося
1.) Без сценарію

<%  %>

Тут розробник може оголосити всі ті речі, про які розробник хоче взяти дані

2.) Тег вираження

<%=  %>

Тут розробник може використовувати деякі дані щодо друку

3.) Декларація

<!% %>

Тут розробник може оголосити деякі дані, пов'язані з методом.

Servlet:

Сервлет має свій власний життєвий цикл.

init()
service()
destroy()

Після першого запиту контейнер прочитає дані з файлу web.xml, після чого буде показано привітання із заповненням.
Відтепер після виконання дії він здійснюватиме пошук за URL-адресою, і після цього процесу він сам шукатиме конкретний сервлет. буде виконуватися сервісна операція.

JSF:

У JSF є власний інтерфейс, і його життєвий цикл може виконуватися шістьма способами,

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

Для інтерфейсу ui для таблиці тут ми використовуємо сітку панелі, і для цього є різні грані.

Rich Faces
Prime Faces.

-1

JSP - це компонент View MVC (Model View Controller). Контролер приймає вхідний запит і передає його Моделі, яка може бути бобом, який робить деякий доступ до бази даних. Потім JSP форматує вихід, використовуючи HTML, CSS та JavaScript, а потім результат надсилається назад запитувачу.


-1

JSF - це передова структура, в якій її дуже просто реалізувати архітектуру на основі Model-View-Controller (MVC) для проектів. Основна перевага JSF перед JSP - це легке динамічне візуалізація компонентів у браузері на основі умов та легка інтеграція подій ajax.

Передній кінець програми JSF, тобто файли xhtml - це ті, які відображаються користувачеві через браузер. Ці файли xhtml внутрішньо викликають керовані боби, наприклад контролери, де записана фактична логіка програми.

Контролери внутрішньо викликають різні сервіси, які спілкуються з базою даних (за допомогою Hibernate або JPA API). Ось так відбувається короткий потік.

JSF також використовується в поєднанні з RichFaces, що є основою для надання насиченого вигляду та вигляду вашому веб-додатку.

JSF + RichFaces + Hibernate / JPA - це хороша технологія, яку можна навчитися точно!


-2

Jsp також має вбудований код сервлета, який не потребує зовнішньої компіляції, його можна запустити безпосередньо запустити. Зміни набудуть чинності у jsp безпосередньо у веб-переглядачі.

Сервлет потрібно компілювати (тобто у ньому буде створено конкретний клас)

Jsf - це компонент перегляду MVC Framework


-2

JSP означає JAVA SERVER PAGE ........ jsp не є сервлетом. Jsp використовує код і тег HTML як сам по собі, вам не потрібно робити HTML і сервлет окремо. Jsp грають чудову роль у веб-додатку. Сервлет - клас java, який грає роль для того, щоб перетворити вашу HTML-сторінку з статичної на динамічну.


2
JSP дійсно перетворені в компоненти сервлетів. "JSP переводяться в сервлети під час виконання". Джерело: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev

-2

Сервлети - це програми Java-сервера на стороні сервера, які виконуються всередині веб-контейнера. Основна мета сервлета - обробка запитів, отриманих від клієнта.

Сторінки сервера Java використовуються для створення динамічних веб-сторінок. Jsp були введені для написання Java-коду html-коду в один файл, що було непросто зробити в сервлет-програмі. І файл jsp перетворюється на сервлет java при його перекладі.

Обличчя Java Server - це веб-структура MVC, яка спрощує розробку інтерфейсу користувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.