JavaScript 世界提供了有用且有趣的 Web 框架,这是毫无疑问的。对于 Java 开发人员,有一个有趣的替代方案——开源Vaadin框架。有了它,您可以仅使用 Java 编程语言轻松地为 Web实现图形用户界面(GUI)。无需编写一行 HTML 或 JavaScript。一张图片胜过千言万语:
Vaadin 如何工作?
在上一个屏幕截图中,您可以在左侧看到一个 Java 类。此代码在服务器上运行,例如 Apache Tomcat、Eclipse Jetty 或任何其他 servlet 容器。
您可以使用框架提供的 API 来创建用户界面 (UI)组件,例如文本字段、组合框、数据网格、日期选择器、上传字段等。您可以组合这些组件来构建视图(也称为页面或 UI),使用布局垂直、水平放置 UI 组件,或使用 CSS 以任何自定义方式放置 UI 组件。
在前面的示例中,我们创建了 aTextField并且 aButton都添加到了 a 中VerticalLayout。视图准备就绪后,您可以使用@Route注释通过 URL 公开它。在这个例子中,我们在将其提供的http://本地主机:8080 /你好用@Route("hello")。
Vaadin 应用程序是一个 Java Web 应用程序。该框架提供了一个为您处理 HTTP 请求和响应的Servlet实现 ( VaadinServlet)。该 servlet 扫描标有@Route注释的 Java 类以在浏览器中显示正确的视图。第一次请求 Vaadin 应用程序时,Vaadin 使用一个轻量级 JavaScript 文件作为客户端引擎进行响应。该引擎负责处理浏览器中的事件并以 JSON 消息的形式将它们发送到服务器。该VaadinServlet处理的请求和JSON响应同样返回给客户端引擎。引擎然后根据此消息更新页面中需要更新的元素(如果有)。
如果客户端-服务器通信是对话,它看起来像这样:
(用户单击浏览器中的按钮)
客户端引擎:嘿 VaadinServlet,用户单击了 ID 为 5 的按钮。
VaadinServlet:当然。让我检查一下那个按钮上是否有任何点击侦听器......是的,有一个,让我们执行侦听器......完成。好的客户端引擎,似乎侦听器想要添加带有“感谢点击”文本的通知。
客户端引擎:我将使用浏览器中的 DOM 将通知添加到页面。
那么上面这个对话当然是一种简化,但是你需要去明白了这个面的相关原理。
在幕后,Vaadin 使用 HTTP 会话来存储组件树。这包含 UI 的状态。诸如哪些组件构成视图以及它们的状态是什么(启用/禁用、标题、值等)。这提供了一个值得一提的安全层。由于 UI 逻辑驻留在服务器中,因此不会暴露给攻击者。验证在服务器上执行。例如,如果 aButton被禁用(使用setEnabled(false)),这不仅仅是浏览器中的装饰功能——服务器不会在添加到未启用按钮的点击侦听器中运行任何逻辑,从而防止攻击者使用开发人员工具浏览器更改启用状态或调用VaadinServlet以模拟单击事件。
Vaadin 可以免费使用吗?
是的。Vaadin 是在Apache License 2.0下发布的开源框架。您无需购买任何东西即可使用它构建成熟的 Web 应用程序。
有一些商业组件可以提高生产力,但它们是可选的。例如,有一个可视化设计器和一个 CRUD 组件可以帮助您更快地构建视图。您可以在订阅前免费试用这些组件。
Vaadin 是 JSP 和 JSF 的替代品吗?
是的。它可以用作 JSP、JSF 甚至 JavaScript 框架(如 Angular)的替代品。许多 Vaadin 客户已成功从这些技术迁移到 Vaadin。
Vaadin 是否支持 Spring 和 Jakarta EE?
是的。Vaadin 与Spring和Jakarta EE(以前称为 Java EE)有官方集成。当您使用Spring Initializr创建新的 Spring Boot 项目时,您可以将 Vaadin 添加为依赖项。对于 Jakarta EE,您可以下载一个使用 Jakarta EE的简单Hello, World示例。在撰写本文时,仅支持 Jakarta EE 版本 8。