Прошло некоторое время с тех пор, как я работал с JSP и сервлетом. Теперь я нахожу материал, который JSP устарел и не должен использоваться. Это так? Зачем? Что мы должны использовать вместо шаблонов, если мы начнем новый проект с Spring Framework и хотим отображать веб-страницы или аналогичные результаты?Подходит ли JSP, и если да, то как?
ответ
Весна (, а также Struts, Apache Wicket и другие рамки) основана на сервлете. Когда вы используете Spring для Интернета, вы используете сервлет как базовую технологию.
JSP действительно немного устаревший. И в этом есть некоторые неудобства. Например, JSP - настоящая головная боль для веб-дизайнеров. Дизайнер не может просто открыть JSP-файл, внести некоторые изменения и проверить результат в браузере, потому что JSP-файл содержит теги, которые недействительны для HTML. Единственный способ увидеть, как будет выглядеть страница браузера в браузере, - это развернуть приложение и позволить серверу его отображать.
Еще одно неудобство в JSP, что вы не можете экрнализировать общий макет в выделенный файл. Все, что вы можете сделать, это импорт одной страницы в другую с помощью <jsp:include>
. И если у вас есть сотни файлов, вы должны повторить то же самое <jsp:include>
во всех них для копирования общих частей.
Есть шаблонные двигатели, которые более подходят для больших проектов, когда у вас есть сотни сложных динамических страниц. Один из популярных - Thymeleaf.
Шаблоны Thymeleaf содержат только действительный HTML. Это означает, что дизайнеры и программисты могут работать параллельно. Также он имеет хорошую систему компоновки. Кроме того, Thymeleaf имеет гораздо более читаемый и элегантный синтаксис, в отличие от JSP. В качестве примера кода для генерации простой таблицы в Thymeleaf:
<html>
....
<table>
<tr>
<th>Name</th>
<th>Price</th>
<th>In stock</th>
</tr>
<tr th:each="prod : ${prods}">
<td th:text="${prod.name}">Onions</td>
<td th:text="${prod.price}">2.41</td>
<td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>
</table>
....
</html>
Существует много других дополнительных функций, таких как наплавленные в поддержке интернационализации, передачах параметры фрагментов и так далее.
Подробнее о сравнении Themeleaf и JSP вы найдете here и here.
Какой материал? Добавьте предложение или ссылку. – Raedwald