【发布时间】:2016-12-24 01:30:18
【问题描述】:
我已经有一段时间没有使用 JSP 和 servlet 了。现在我发现一些 JSP 已经过时并且不应该使用的材料。是这样吗?为什么?如果我们使用 Spring Framework 开始一个新项目并希望呈现网页或类似的输出,我们应该使用什么来代替模板?
【问题讨论】:
-
哪种材料?添加报价或链接。
标签: spring jsp templates deprecated
我已经有一段时间没有使用 JSP 和 servlet 了。现在我发现一些 JSP 已经过时并且不应该使用的材料。是这样吗?为什么?如果我们使用 Spring Framework 开始一个新项目并希望呈现网页或类似的输出,我们应该使用什么来代替模板?
【问题讨论】:
标签: spring jsp templates deprecated
Spring(以及 Struts、Apache Wicket 和其他框架)基于 servlet。当您使用 Spring for web 时,您使用的是 servlet 作为底层技术。
JSP 确实有点过时了。并且有一些不便之处。例如,JSP 对网页设计师来说是一个真正令人头疼的问题。设计人员不能只打开 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>
还有许多其他附加功能,例如对国际化的内置支持、将参数传递给片段等等。
【讨论】: