2016-12-24 4 views
0

Прошло некоторое время с тех пор, как я работал с JSP и сервлетом. Теперь я нахожу материал, который JSP устарел и не должен использоваться. Это так? Зачем? Что мы должны использовать вместо шаблонов, если мы начнем новый проект с Spring Framework и хотим отображать веб-страницы или аналогичные результаты?Подходит ли JSP, и если да, то как?

+0

Какой материал? Добавьте предложение или ссылку. – Raedwald

ответ

1

Весна (, а также 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.