拓展阅读

Spring Web MVC-00-重学 mvc

mvc-01-Model-View-Controller 概览

web mvc-03-JFinal

web mvc-04-Apache Wicket

web mvc-05-JSF JavaServer Faces

web mvc-06-play framework intro

web mvc-07-Vaadin

web mvc-08-Grails

开源

The jdbc pool for java.(java 手写 jdbc 数据库连接池实现)

The simple mybatis.(手写简易版 mybatis)

Vaadin Flow 快速入门

需求

添加代码

运行应用程序

Vaadin Flow 可以帮助您快速构建纯 Java 的 Web 应用程序,无需编写任何 HTML 或 JavaScript。本指南演示了如何使用 Vaadin Flow 构建一个小型但完全功能的 ToDo 应用程序。

需求

首先,您需要 JDK 17 或更高版本(例如 Eclipse Temurin JDK)。接下来,您需要下载快速入门项目。您可以通过点击这里的按钮进行下载:

https://start.vaadin.com/dl?preset=flow-quickstart-tutorial

完成下载后,请将下载的ZIP文件解压到本地文件夹中。然后将项目导入到一个集成开发环境(IDE)中。

添加代码

接下来,您将添加代码。

打开位于 src/main/java/com/example/application/views/main/ 目录下的 MainView.java 文件。

用以下代码替换该文件中的代码:

package com.example.application.views.main;

import com.vaadin.flow.component.Key;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.checkbox.Checkbox;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.Route;

@Route("") 
public class MainView extends VerticalLayout { 

  public MainView() {
    VerticalLayout todosList = new VerticalLayout(); 
    TextField taskField = new TextField(); 
    Button addButton = new Button("Add"); 
    addButton.addClickListener(click -> { 
      Checkbox checkbox = new Checkbox(taskField.getValue());
      todosList.add(checkbox);
    });
    addButton.addClickShortcut(Key.ENTER); 

    add( 
      new H1("Vaadin Todo"),
      todosList,
      new HorizontalLayout(
        taskField,
        addButton
      )
    );
  }
}

@Route 注解使得该视图对终端用户可访问,在这种情况下,使用了空的 "" 路由。

由于 MainView 类扩展了 VerticalLayout,因此添加到其中的组件按垂直顺序排列。

todosList 是一个垂直布局,显示任务列表以及复选框。

taskField 是一个文本输入字段,用于输入新任务的描述。

addButton 是一个用于添加新任务的按钮。

在按钮点击的监听器中,首先创建一个新的复选框,其标签为来自 taskField 的值。然后将复选框添加到 todosList 中。

addButton 组件添加一个快捷键,当按下 Enter 键时触发。

调用 VerticalLayout 上的 add() 方法以垂直方式显示这些组件。请注意,taskFieldaddButton 位于一个 HorizontalLayout 中,这使它们并排显示。

运行应用程序

到目前为止,您所做的可能看起来并不多,但已足以运行应用程序。

在您的 IDE 中运行它,启动位于 src/main/java/org/vaadin/example 目录下的 Application.java。

或者,您可以在命令行中运行该项目,输入以下命令:

  • 在 macOS 或 Linux 系统上输入 ./mvnw
  • 在 Windows 系统上输入 mvnw

然后,在浏览器中打开 localhost:8080。您应该会看到以下内容:

view

chat

详细介绍一下 mvc 框架 Vaadin

Vaadin 是一个基于 Java 语言的开源 Web 应用程序框架,它采用了MVC(Model-View-Controller)的架构模式。

Vaadin 的主要目标是简化 Web 开发,使开发者能够专注于业务逻辑而不用过多关注前端技术。

以下是对 Vaadin MVC 框架的详细介绍:

  1. MVC 架构模式:
    • Model(模型): 模型是应用程序的数据和业务逻辑。在 Vaadin 中,模型通常由 Java 对象表示,负责存储和管理应用程序的数据。
    • View(视图): 视图是用户界面的表示,负责展示数据并与用户进行交互。在 Vaadin 中,视图通常是由 UI 组件(如按钮、表格等)组成。
    • Controller(控制器): 控制器负责处理用户输入、更新模型数据以及控制视图的状态。在 Vaadin 中,控制器通常由事件监听器和其他处理器组成,用于响应用户的操作。
  2. Vaadin 框架的特点:
    • 纯 Java 开发: Vaadin 允许开发者使用纯 Java 语言进行开发,无需编写HTML、CSS 或 JavaScript。这使得开发者可以专注于后端业务逻辑,而无需深入了解前端技术。
    • 组件化开发: Vaadin 提供了丰富的 UI 组件,开发者可以通过组合这些组件来构建复杂的用户界面。
    • 客户端-服务器通信: Vaadin 使用 Ajax 技术,通过服务器和客户端之间的异步通信来更新用户界面,从而实现更流畅的用户体验。
    • 可扩展性: Vaadin 提供了丰富的扩展机制,开发者可以通过自定义组件、主题等方式来扩展框架的功能。
  3. Vaadin MVC 框架的基本组件:
    • UI(用户界面): 在 Vaadin 中,UI 是应用程序的主要用户界面。每个 UI 都有一个对应的控制器,负责处理用户输入和控制界面状态。
    • View(视图): 视图由 UI 组件组成,如按钮、文本框等。开发者可以通过 Java 代码动态创建和管理这些组件。
    • Navigator(导航器): 导航器用于管理用户在应用程序中的导航,可以根据用户操作切换不同的视图。
    • Model(模型): 模型由 Java 对象表示,负责存储和管理应用程序的数据。开发者可以定义自己的模型类,并在控制器中对其进行操作。
  4. Vaadin MVC 框架的工作流程:
    • 用户与 UI 交互,触发事件。
    • 事件由控制器处理,可能包括更新模型、切换视图等操作。
    • 模型的改变会触发相应的更新通知。
    • 视图根据模型的改变进行更新,从而实现界面的动态变化。

总体来说,Vaadin MVC 框架通过将前端和后端的交互封装在框架内部,使得开发者可以更轻松地创建富客户端的 Web 应用程序,同时享受 Java 开发的便利性。

给一个 Vaadin 的入门例子

Vaadin 的入门例子通常涉及创建一个简单的 Web 应用程序,其中包含一些基本的 UI 组件和用户交互。

以下是一个使用 Vaadin 的入门例子,其中创建了一个简单的登录界面:

  1. 创建一个新的 Vaadin 项目:
    • 使用 Maven 或 Gradle 创建一个新的 Vaadin 项目。你可以使用 Vaadin 官方提供的 Vaadin Starter(https://start.vaadin.com/)工具来生成基本的项目结构。
  2. 定义一个简单的登录界面:
    • 在项目中创建一个新的 Java 类,例如 LoginView,用于表示登录界面。
    // LoginView.java
    import com.vaadin.flow.component.button.Button;
    import com.vaadin.flow.component.notification.Notification;
    import com.vaadin.flow.component.orderedlayout.VerticalLayout;
    import com.vaadin.flow.component.textfield.PasswordField;
    import com.vaadin.flow.component.textfield.TextField;
    import com.vaadin.flow.router.Route;
    
    @Route("login")
    public class LoginView extends VerticalLayout {
    
        public LoginView() {
            // 创建登录界面的 UI 组件
            TextField usernameField = new TextField("Username");
            PasswordField passwordField = new PasswordField("Password");
            Button loginButton = new Button("Login", event -> onLoginButtonClick(usernameField.getValue(), passwordField.getValue()));
    
            // 将组件添加到垂直布局中
            add(usernameField, passwordField, loginButton);
        }
    
        private void onLoginButtonClick(String username, String password) {
            // 处理登录按钮点击事件
            if ("admin".equals(username) && "password".equals(password)) {
                Notification.show("Login successful!");
            } else {
                Notification.show("Login failed. Please check your username and password.");
            }
        }
    }
    
  3. 运行应用程序:
    • 启动应用程序,并访问 http://localhost:8080/login(具体地址根据你的端口和上下文路径而定)。

这个简单的例子中,我们创建了一个基本的登录界面,包含用户名输入框、密码输入框和登录按钮。当用户点击登录按钮时,我们通过事件处理器检查用户名和密码是否匹配,然后显示相应的通知。

这只是一个 Vaadin 的入门示例,Vaadin 提供了许多其他功能和组件,可以用于创建更复杂的 Web 应用程序。

通过查阅 Vaadin 的官方文档和示例代码,你可以深入了解更多功能和最佳实践。

Vaadin 的最佳实践

Vaadin 是一个强大的Web应用程序框架,以下是一些使用 Vaadin 的最佳实践:

  1. 充分利用数据绑定:
    • Vaadin 提供了强大的数据绑定机制,允许将 UI 组件与后端数据模型关联起来。通过充分利用数据绑定,可以简化数据的传输和更新,提高开发效率。
  2. 遵循组件化的开发原则:
    • 利用 Vaadin 的组件化开发,将界面划分为独立的、可重用的组件。这样可以降低代码的复杂性,提高代码的可维护性。
  3. 使用 Vaadin Grid 来展示大量数据:
    • 如果应用程序需要展示大量数据,使用 Vaadin Grid 是一个不错的选择。Vaadin Grid 提供了强大的表格功能,支持分页、排序、过滤等功能,能够处理大规模数据集。
  4. 合理使用 Vaadin 主题:
    • Vaadin 提供了主题功能,可以通过定制主题来改变应用程序的外观。合理使用主题可以使应用程序看起来更加专业和吸引人。
  5. 实施合理的导航:
    • 使用 Vaadin 的导航功能,实现应用程序内部的页面导航。这有助于更好地组织代码,并使用户在应用程序中进行导航变得更加容易。
  6. 考虑移动设备兼容性:
    • Vaadin 提供了响应式设计,可以使应用程序适应不同的设备。在开发过程中,要考虑到移动设备的兼容性,并确保应用程序在不同屏幕大小上都能正常运行。
  7. 优化性能:
    • 对于大型应用程序,要注意性能优化。使用 Vaadin 的懒加载机制、缓存数据等技术,以确保应用程序的响应速度和性能表现良好。
  8. 测试驱动开发:
    • 使用测试驱动开发(TDD)的方法,编写单元测试和集成测试,确保应用程序的稳定性和可靠性。
  9. 使用 Vaadin 插件和扩展:
    • Vaadin 社区提供了许多有用的插件和扩展,可以提高开发效率。例如,使用 Vaadin Designer 可以通过可视化界面设计来加速开发。
  10. 定期更新 Vaadin 版本:
    • 定期更新 Vaadin 版本以获取最新的功能、性能优化和安全更新。这有助于保持应用程序的稳定性和安全性。

最佳实践的选择可能取决于具体的项目需求和团队经验,因此在实际应用中需要根据情况做出适当的调整。

同时,查阅 Vaadin 的官方文档和社区资源,以获取最新的最佳实践和开发建议。

Vaadin 的优缺点

Vaadin 是一个强大的Java Web 应用程序框架,但它也有一些优点和缺点,具体取决于项目的需求和开发者的背景。

以下是 Vaadin 的一些优缺点:

优点:

  1. 纯 Java 开发: Vaadin 允许开发者使用纯 Java 进行开发,无需编写HTML、CSS 或 JavaScript。这对于后端 Java 开发者来说是一个重大优势,因为他们可以专注于业务逻辑而无需深入了解前端技术。

  2. 组件化开发: Vaadin 提供了丰富的UI组件,开发者可以通过组合这些组件来构建复杂的用户界面。这种组件化开发有助于提高代码的可重用性和可维护性。

  3. 数据绑定: Vaadin 提供了强大的数据绑定机制,可以将 UI 组件与后端数据模型关联起来。这简化了数据的传输和更新,提高了开发效率。

  4. AJAX 支持: Vaadin 使用 Ajax 技术,通过服务器和客户端之间的异步通信来更新用户界面。这使得应用程序能够实现更流畅的用户体验,而不需要手动编写大量的 JavaScript 代码。

  5. 强大的表格组件: Vaadin 的表格组件(Grid)非常强大,支持分页、排序、过滤等功能,适用于展示大规模数据集的情况。

  6. 响应式设计: Vaadin 支持响应式设计,使得应用程序能够适应不同大小和类型的设备,包括桌面、平板和手机。

  7. 社区支持和文档丰富: Vaadin 有一个活跃的社区,提供了丰富的文档、教程和示例代码,对于学习和解决问题非常有帮助。

缺点:

  1. 学习曲线: 对于新手来说,Vaadin 的学习曲线可能相对较高,特别是对于那些没有经验的开发者。熟悉 Vaadin 的开发者可能需要一些时间来适应其独特的开发模式。

  2. 前端灵活性受限: 虽然 Vaadin 提供了丰富的 UI 组件,但前端灵活性相对受限,特别是对于那些希望更多地定制和控制前端的开发者而言。

  3. 可能产生较大的 JavaScript 资源: 由于 Vaadin 使用了大量的 JavaScript 代码,应用程序可能会包含较大的 JavaScript 文件,对于一些注重性能的场景可能需要额外的优化。

  4. 依赖于 Java 后端: Vaadin 是一个基于 Java 的框架,这意味着开发者必须熟悉 Java,并且应用程序的后端是基于 Java 运行的。

总的来说,Vaadin 是一个强大的框架,特别适合那些希望通过纯 Java 进行 Web 开发的开发者。

然而,对于一些注重前端灵活性和轻量级框架的项目,开发者可能需要权衡 Vaadin 的优缺点。

Vaadin 的学习资料,包含网址

学习 Vaadin 的最好方式是查阅官方文档和参与 Vaadin 社区。

以下是一些 Vaadin 的学习资料和相关网址:

  1. Vaadin 官方文档:
    • Vaadin 官方文档:包含了详细的框架说明、组件文档、API 参考等,是入门和深入学习的主要参考资料。
  2. Vaadin Starter:
    • Vaadin Starter:官方提供的一个用于创建 Vaadin 项目的在线工具。可以选择不同的配置和模板,快速生成项目结构。
  3. Vaadin 示例和 Demo:
    • Vaadin 示例:官方提供的示例页面,展示了各种 Vaadin 组件的使用方式。
    • Vaadin Demo:官方演示站点,展示了各种 Vaadin 框架的功能和组件。
  4. Vaadin 官方论坛:
    • Vaadin 论坛:Vaadin 官方的交流论坛,可以在这里提问、寻找解决方案,与其他 Vaadin 开发者交流经验。
  5. Vaadin GitHub 仓库:
    • Vaadin GitHub:Vaadin 的 GitHub 仓库,包含了框架的源代码、示例项目等。你可以在这里找到更多的资源和参与贡献。
  6. Vaadin 教程:
    • Vaadin 教程:官方提供的教程页面,包含了从入门到高级的各种教程资源。
  7. Vaadin 干货分享:
    • Vaadin 干货分享:Vaadin 官方提供的一系列学习资源,包括文章、视频等。
  8. Vaadin 广播和活动:
    • Vaadin 广播:Vaadin 官方的一些在线直播和培训活动,提供进一步学习的机会。

请注意,由于互联网内容可能随时间而变化,建议访问 Vaadin 官方网站以获取最新的学习资源和链接。

参考资料

https://vaadin.com/docs/latest/guide/quick-start