自从我使用JSP和servlet以来已有一段时间.现在,我发现一些JSP已过时且不应使用的材料.是这样吗?为什么?如果我们使用Spring Framework开始一个新项目并希望呈现网页或类似的输出,我们应该使用什么代替模板?
解决方法:
Spring(以及Struts,Apache Wicket和其他框架)都基于servlet.当您将Spring用于Web时,您将servlet作为基础技术.
JSP确实有点过时了.而且其中有一些不便之处.例如,对于网页设计师来说,JSP真是头疼. Designer不能只打开JSP文件,进行一些更改并在浏览器中检查结果,因为JSP文件包含对HTML无效的标记.查看页面在浏览器中的外观的唯一方法是部署应用程序并让服务器呈现它.
JSP中的另一个不便之处是您无法将通用布局外部化为专用文件.您所能做的就是使用< jsp:include>将一页导入到另一页中.并且如果您有数百个文件,则必须重复相同的< jsp:include>在所有这些文件中复制通用部分.
当您拥有数百个复杂的动态页面时,有一些模板引擎更适合大型项目.热门之一是Thymeleaf.
Thymeleaf的模板仅包含有效的HTML.这意味着设计人员和程序员可以并行工作.它还具有良好的布局系统.而且,与JSP相比,Thymeleaf具有更易读和优雅的语法.例如,在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.