拓展阅读

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)

入门例子

2.1 安装要求

在安装 Grails 之前,您需要安装一个带有下表中最低版本的 Java 开发工具包(JDK)。

下载适用于您操作系统的相应 JDK,运行安装程序,然后设置一个名为 JAVA_HOME 的环境变量,该变量指向此安装的位置。

Grails 版本 JDK 版本(最低) 6 11

5 8

为了自动化 Grails 的安装,我们推荐使用 SDKMAN,该工具大大简化了安装和管理多个 Grails 版本的过程。

在某些平台上(例如 macOS),Java 安装会被自动检测。然而,在许多情况下,您可能希望手动配置 Java 的位置。例如,如果您使用的是 bash 或 Bourne Shell 的其他变体:

export JAVA_HOME=/Library/Java/Home
export PATH="$PATH:$JAVA_HOME/bin"

在 Windows 上,您需要在“我的电脑/高级/环境变量”中配置这些环境变量。

2.2 下载和安装

启动使用 Grails 的第一步是安装发行版。

在 *nix 系统上,使用 SDKMAN 是安装 Grails 的最佳方式,该工具大大简化了安装和管理多个 Grails 版本的过程。

使用 SDKMAN 安装

要使用 SDKMAN 安装最新版本的 Grails,请在终端上运行以下命令:

sdk install grails

您还可以指定一个版本

sdk install grails 6.1.1

有关 SDKMAN 使用的更多信息,可以参阅 SDKMAN 文档。

2.3 创建应用程序

要创建一个 Grails 应用程序,首先需要熟悉使用 grails 命令,该命令的使用方式如下:

grails <<命令名称>>

运行 create-app 命令创建应用程序:

grails create-app myapp

这将在当前目录内创建一个包含项目的新目录。在控制台中导航至此目录:

cd myapp

2.4 使用 Grails 创建简单的 Web 应用程序

改进此文档 步骤 1:创建一个新项目 打开你的命令提示符或终端。

导航到你想创建 Grails 项目的目录:

$ cd 你的项目目录

使用以下命令创建一个新的 Grails 项目:

$ grails create-app myapp --servlet=tomcat

使用 --servlet 选项并设置值为 “tomcat” 指定 Grails 应用程序应配置为使用嵌入式的 Tomcat Servlet 容器作为其运行时环境,允许你在开发和测试过程中将应用程序作为独立可执行文件运行。

步骤 2:访问项目目录 切换到刚刚创建的 “myapp” 目录:

$ cd myapp

步骤 3:启动 Grails 交互式控制台 通过运行 “grails” 命令启动 Grails 交互式控制台:

$ grails

步骤 4:创建一个控制器 在 Grails 交互式控制台中,你可以使用自动补全来创建一个控制器。输入以下命令创建一个名为 “greeting” 的控制器:

grails> create-controller greeting

此命令将在 grails-app/controllers/myapp 目录下生成一个名为 “GreetingController.groovy” 的新控制器文件。你可能会想知道为什么会有额外的 “myapp” 目录。这个结构符合 Java 开发中通常使用的约定,其中类被组织成包。Grails 自动将应用程序名称包含在包结构中。如果你没有指定包,Grails 默认使用应用程序名称。

有关创建控制器的更详细信息,你可以参考 create-controller 页面上的文档。

步骤 5:编辑控制器 在文本编辑器中打开 “grails-app/controllers/myapp” 目录中的 “GreetingController.groovy” 文件。

将以下代码添加到 “GreetingController.groovy” 文件中:

package myapp

class GreetingController {

    def index() {
        render "Hello, Congratulations for your first Grails application!"
    }
}

这个动作只是一个方法。在这种情况下,它调用 Grails 提供的一个特殊方法来渲染页面。

步骤 6:运行应用程序 现在,Grails 框架依赖于 Gradle 任务来运行应用程序。要启动应用程序,请使用以下 Gradle bootRun 命令:

$ ./gradlew bootRun

默认情况下,你的应用程序将在端口 8080 上托管。你可以在 web 浏览器中访问:

http://localhost:8080/

现在,需要了解欢迎页面是由以下 URL 映射确定的:

class UrlMappings {
    static mappings = {
        "/$controller/$action?/$id?(.$format)?"{
            constraints {
                // apply constraints here
            }
        }

        "/"(view:"/index")
        "500"(view:'/error')
        "404"(view:'/notFound')
    }
}

这个映射指定根 URL (“/”) 应该显示 “index.gsp” 视图,该视图位于 “grails-app/views/index.gsp”。这个 “index.gsp” 文件用作欢迎或首页。映射中的其他条目处理 HTTP 状态码为 500 和 404 的错误页面。

Grails 基于控制器和动作名称的 URL 约定

Grails 遵循一种 URL 约定,依赖于控制器和它们的动作的名称。这种约定简化了在 Web 应用程序中创建和访问各种页面或功能的过程。

在提供的代码示例中:

package myapp

class GreetingController {

    def index() {
        render "Hello, Congratulations for your first Grails application!"
    }
}

GreetingController 类表示 Grails 中的一个控制器。

在控制器内部,定义了一个名为 index 的动作作为方法。在 Grails 中,动作本质上是控制器内处理特定任务或响应用户请求的方法。

现在,让我们了解 Grails URL 约定是如何基于此控制器和动作工作的:

URL 中的控制器名称:

控制器名称,例如 “GreetingController”,在 URL 中使用。但是,约定会将控制器名称的首字母大写并删除 “Controller” 后缀。因此,在 URL 中 “GreetingController” 变为 “greeting”。

URL 中的动作名称:

默认情况下,如果在 URL 中不指定动作,Grails 将假定 “index” 动作。因此,在此示例中,访问 URL /greeting

有关默认动作的更多详细信息,请参阅用户指南的控制器和动作部分的末尾。

可选:设置上下文路径 如果要为应用程序设置上下文路径,请在 “grails-app/conf/application.yml” 文件中创建一个配置属性:

server:
    servlet:
        context-path: /myapp

通过此配置,应用程序将在以下位置可用:

http://localhost:8080/myapp/

或者,当使用 Gradle 运行 Grails 应用程序时,还可以从命令行设置上下文路径。以下是如何做到这一点:

./gradlew bootRun -Dgrails.server.servlet.context-path=/your-context-path

将 /your-context-path 替换为 Grails 应用程序所需的上下文路径。该命令通过 -Dgrails.server.servlet.context-path 系统属性直接设置上下文路径。

例如,如果你希望应用程序位于 “http://localhost:8080/myapp”,可以使用以下命令:

./gradlew bootRun -Dgrails.server.servlet.context-path=/myapp

这使你能够在不修改应用程序配置文件的情况下配置上下文路径,这是在使用 Gradle 运行 Grails 应用程序时的一种灵活和方便的选项。

可选:更改服务器端口 如果端口 8080 已被占用,可以使用 grails.server.port 系统属性在不同端口上启动服务器:

$ ./gradlew bootRun --Dgrails.server.port=9090

将 “9090” 替换为你首选的端口。

对于 Windows 用户的注意事项

如果遇到与 Java 进程或文件名长度有关的错误,请使用 –stacktrace 标志或将 grails { pathingJar = true } 添加到你的 “build.gradle” 文件。

结论

现在,当你在 web 浏览器中访问时,你的 Grails 应用程序将显示 “Hello, Congratulations on your first Grails application!” 消息。

记住,你可以创建多个控制器和动作,以使用 Grails 构建更复杂的 Web 应用程序。每个动作对应于基于控制器和动作名称的唯一 URL 可访问的不同页面。

chat

详细介绍一下 Grails

Grails 是一款基于 Groovy 语言和 Spring 框架的开源 Web 应用程序框架,它采用了MVC(Model-View-Controller)架构。

Grails 旨在简化开发流程、提高生产力,并利用强大的 Groovy 语法和 Spring 生态系统的功能。

以下是 Grails 框架的核心组件和一般工作流程:

  1. Groovy 语言: Grails 使用 Groovy 作为主要编程语言,Groovy 是一种基于 Java 的动态语言,它结合了 Java 的强大性能和灵活性。

  2. Grails MVC 架构: Grails 遵循经典的 MVC 模式,将应用程序划分为模型(Model)、视图(View)、和控制器(Controller)三个主要组件,以促使代码的模块化和可维护性。

    • Model(模型): 模型表示应用程序的数据和业务逻辑。Grails 使用 GORM(Grails Object-Relational Mapping)来简化与数据库的交互,支持多种数据库。开发者可以轻松定义领域模型,它们对应数据库中的表。

    • View(视图): 视图负责用户界面的呈现,通常是通过使用 Groovy Server Pages(GSP)来生成动态 HTML 页面。GSP 允许在页面中嵌入 Groovy 代码,使得页面构建更加灵活。

    • Controller(控制器): 控制器处理用户请求,协调模型和视图之间的交互。控制器通常包含动作(Actions),这些动作处理来自用户的请求并决定响应什么数据或视图。

  3. 插件系统: Grails 支持插件系统,允许开发者使用和共享预建的功能模块。这使得开发者可以更轻松地集成第三方库、工具和功能,提高了开发的灵活性和速度。

  4. 整合 Spring 框架: Grails 构建在 Spring 框架之上,继承了 Spring 的许多功能。这包括依赖注入、面向切面编程(AOP)等。Spring Boot也被整合,为应用程序提供了自动配置和快速启动的功能。

  5. 敏捷开发: Grails 提供了一些特性,如代码生成、动态查找、自动更新等,旨在提高开发者的生产力,支持敏捷开发方法。

Grails 是一个适用于构建 Web 应用程序的全栈框架,它的目标是通过简化开发流程、提供强大的功能和工具,以及与 Java 生态系统的深度整合,使开发者能够更轻松地构建高质量的应用程序。

给一个 mvc grails 的入门例子

当你开始学习 Grails 时,一个简单的入门例子可以帮助你了解框架的基本概念。

下面是一个创建基本的任务管理应用的简单例子:

  1. 安装 Grails: 首先,确保你已经安装了 Groovy 和 Grails。你可以从 Grails 官方网站 下载最新版本。

  2. 创建新应用: 打开终端,并在希望创建应用的目录中运行以下命令:

    grails create-app TaskManager
    

    这将创建一个名为 TaskManager 的新 Grails 应用。

  3. 定义领域模型: 编辑 grails-app/domain/Task.groovy 文件,定义一个简单的任务模型:

    package taskmanager
    
    class Task {
        String title
        String description
    
        static constraints = {
            title(blank: false)
        }
    }
    

    在这个例子中,我们创建了一个 Task 领域类,它有一个标题和一个描述,并定义了一个约束,确保标题不为空。

  4. 生成控制器和视图: 运行以下命令来生成控制器和视图:

    grails generate-all taskmanager.Task
    

    这将自动生成一个控制器、视图和其他必要的文件,以便进行任务的 CRUD 操作。

  5. 运行应用: 在应用目录中运行以下命令启动应用:

    grails run-app
    

    应用将启动并运行在默认端口(通常是 http://localhost:8080/TaskManager)。

  6. 访问应用: 打开浏览器,访问应用的首页,通常是 http://localhost:8080/TaskManager。你将看到一个简单的任务管理界面,可以添加、编辑、删除任务。

这是一个非常基本的 Grails 应用入门例子。你可以通过修改领域类、控制器和视图,以及了解 Grails 的更多功能,逐步深入学习和开发。

Grails 文档和社区资源是学习更多内容的好资源。

mvc Grails 的优缺点

Grails 是一个基于 Groovy 和 Spring 框架的 Web 应用程序框架,采用了 MVC(Model-View-Controller)架构。

下面是 Grails 框架的一些优点和缺点:

优点:

  1. 开发效率高: Grails 使用 Groovy 语言,其语法简洁、动态性强,可以减少开发者的代码量。同时,Grails 提供了许多代码生成器和插件,有助于加速开发过程。

  2. 整合 Spring: Grails 构建在 Spring 框架之上,继承了 Spring 的强大功能,如依赖注入、面向切面编程等。这使得 Grails 应用程序能够充分利用 Spring 生态系统提供的丰富特性。

  3. GORM: Grails 的对象关系映射(GORM)工具简化了与数据库的交互。通过简单的领域类定义,开发者可以轻松地执行 CRUD 操作,而无需编写复杂的 SQL 语句。

  4. 敏捷开发: Grails 提供了一系列的敏捷开发工具和特性,如代码热更新、自动刷新等,有助于快速迭代开发和测试。

  5. 插件系统: Grails 支持插件系统,开发者可以轻松集成和使用第三方插件,以扩展应用程序的功能。

  6. 约定优于配置: Grails 遵循 “约定优于配置” 的原则,通过一些默认规则,减少了配置的复杂性,提高了开发效率。

缺点:

  1. 学习曲线: 对于初学者来说,学习 Groovy 语言和 Grails 框架可能需要一些时间。相对于传统的 Java 开发,Groovy 的动态特性和语法可能需要适应。

  2. 性能: 尽管 Grails 集成了强大的 Spring 框架,但相对于一些轻量级的框架,它可能在性能上稍显逊色。这取决于应用程序的规模和需求,对于一些高性能要求的场景,可能需要做一些优化。

  3. 社区相对小: 相对于一些主流的 Java 框架,Grails 的社区规模较小。这可能导致在寻找支持和解决问题时,相比较流行框架来说,资源相对较少。

  4. 灵活性和自由度受限: Grails 的约定优于配置的原则可能会在某些情况下受到限制。一些开发者可能希望更多的自由度来配置和定制,而 Grails 的默认规则可能无法满足所有需求。

总体而言,Grails 是一个强大而灵活的框架,适用于中小型 Web 应用程序的快速开发。

选择 Grails 还是取决于项目的具体需求、团队的经验和技术栈的偏好。

给出 Grails 的学习资料,包含网址

以下是一些学习 Grails 的常用资料和网址:

  1. 官方文档:
    • Grails 官方文档: Grails 官方文档是学习和掌握 Grails 框架的重要资源,包含了详细的指南、教程和 API 文档。
  2. 在线教程和博客:
    • Grails Guides: 官方提供的一系列 Grails 指南,覆盖了各种主题,适合新手和有经验的开发者。
    • Grails 中文文档: 由社区维护的 Grails 中文文档,包含了很多教程和示例。
    • Grails Blog: JetBrains 维护的 Grails Blog,提供了一些有关 Grails 开发的文章和教程。
  3. 书籍:
    • 《Grails 3: A Practical Guide to Application Development》 by Colin Harrington: 介绍 Grails 3 的实际开发指南。
    • 《Programming Grails》 by Burt Beckwith: 针对 Grails 2 的书籍,虽然是较老版本,但仍然包含有用的信息。
  4. 视频教程:
  5. 社区和论坛:
    • Grails 官方论坛: Grails 官方论坛是一个问答社区,你可以在这里提问、寻求帮助,也可以分享经验。
    • Stack Overflow: Stack Overflow 上有很多关于 Grails 的问题和答案,是一个常用的求助和学习平台。
  6. GitHub 仓库:
    • Grails GitHub Repository: Grails 的官方 GitHub 仓库,你可以查看源代码、提交 issues,以及参与开发。

请注意,由于技术领域的不断发展,某些资源可能已经更新或者过时。

建议首先查看官方文档和最新的社区资源,以获取最准确和最新的信息。

参考资料

chat