<%= new java.util.Date() %>
<%-- 使用JSP表达式输出日期 --%>Below is a simple message displayed using JSP.
<%-- 使用HTML注释 --%> <% String message = "Hello, JSP!"; // JSP脚本片段可以包含多行Java代码 %><%= message %>
<%-- 使用JSP表达式输出变量 --%> ``` ##### JSP与Servlet的关系 - JSP本质上是一种Servlet,它在服务器上被编译成Servlet类。 - Servlet可以作为JSP的底层支持,处理HTTP请求和生成响应。 ##### JSP的最佳实践 - **避免业务逻辑**: 尽量将业务逻辑放在后端Java类中,保持JSP页面的简洁。 - **使用表达式和脚本**: 利用JSP表达式输出数据,使用脚本片段编写控制逻辑。 - **模板和标签**: 使用标签库和自定义标签减少页面模板的重复代码。 #### 4.4.2 Thymeleaf的介绍和示例 - **定义**: Thymeleaf 是一个适用于现代Web应用的服务器端模板引擎。 - **特性**: - **自然模板**: 允许HTML标记保持完整,即使在没有数据的情况下也能在浏览器中正确显示。 - **易于前后端分离**: 前端开发者可以在不依赖后端的情况下构建和测试页面。 - **内建方言扩展**: 提供多种方言,如标准方言、Spring方言等,以满足不同场景的需求。 - **静态资源处理**: 支持直接在HTML中引用静态资源,无需额外配置。 - **与JSP的比较**: - **静态资源处理**: 在JSP中,静态资源如CSS、JavaScript和图片文件通常需要通过特殊的标签或表达式来引用。而在Thymeleaf中,可以直接像普通HTML那样引用静态资源。 - **浏览器兼容性**: Thymeleaf的一个重要特点是它能够在没有后端服务器的情况下被浏览器正常解析。这意味着开发人员可以在本地开发环境中预览页面,而无需每次刷新都请求服务器数据。相比之下,JSP页面需要服务器环境的支持才能被正确解析和渲染。 - **前后端分离**: Thymeleaf的设计允许前端开发者在没有后端数据的情况下构建和测试页面,这有助于前后端团队并行工作,提高开发效率。而JSP通常需要后端的支持才能显示动态内容。 - **示例**: 使用 Thymeleaf 表达式语言在页面中显示动态内容。 ```htmlWelcome to Thymeleaf.
``` Thymeleaf 提供了一个更现代且高效的模板解决方案,尤其适合前后端分离的开发模式。 相比于传统的 JSP 技术,Thymeleaf 在开发效率和浏览器兼容性方面具有明显的优势。 Thymeleaf也是spring mvc的默认模板引擎。 #### 4.4.3 Freemarker介绍 - **定义**: Freemarker 是一个强大的模板引擎,用于生成文本输出,特别适合生成HTML网页。它可以应用于多种应用场景,包括Web开发、邮件模板生成等。 - **特性**: - **高性能**: 由于其设计上的优化,Freemarker能够快速地处理大量的数据并生成所需的输出。 - **宏支持**: 提供了宏定义功能,使得模板可以复用代码片段,便于维护和扩展。 - **复杂的模板逻辑**: 支持复杂的条件语句、循环结构以及其他高级编程特性,使得开发者能够灵活地控制输出内容。 - **与Thymeleaf的比较**: - **模板语法**: Freemarker的模板语法更加接近于编程语言,提供了丰富的控制结构,如`#foreach`、`#if`等,这使得编写复杂的逻辑更为容易。而Thymeleaf则倾向于提供一种更为简洁和接近HTML的语法,使得模板更容易阅读和维护。 - **前后端分离**: Thymeleaf的设计更加倾向于支持前后端分离的工作流程,允许前端开发者在没有后端数据的情况下构建和测试页面。Freemarker虽然也可以在客户端渲染,但其主要还是作为服务器端模板引擎使用。 - **浏览器兼容性**: Thymeleaf的一个显著优势是在没有后端服务器的情况下,浏览器也能正确解析其模板。Freemarker通常需要服务器环境的支持才能完全发挥作用。 - **示例**: 使用Freemarker表达式语言在页面中显示动态内容。 ```freemarker${message!}
<#list users as user>