mvc-01-Model-View-Controller 概览
web mvc-05-JSF JavaServer Faces
web mvc-06-play framework intro
在安装 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 上,您需要在“我的电脑/高级/环境变量”中配置这些环境变量。
启动使用 Grails 的第一步是安装发行版。
在 *nix 系统上,使用 SDKMAN 是安装 Grails 的最佳方式,该工具大大简化了安装和管理多个 Grails 版本的过程。
使用 SDKMAN 安装
要使用 SDKMAN 安装最新版本的 Grails,请在终端上运行以下命令:
sdk install grails
您还可以指定一个版本
sdk install grails 6.1.1
有关 SDKMAN 使用的更多信息,可以参阅 SDKMAN 文档。
要创建一个 Grails 应用程序,首先需要熟悉使用 grails 命令,该命令的使用方式如下:
grails <<命令名称>>
运行 create-app
命令创建应用程序:
grails create-app myapp
这将在当前目录内创建一个包含项目的新目录。在控制台中导航至此目录:
cd myapp
改进此文档
步骤 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 浏览器中访问:
现在,需要了解欢迎页面是由以下 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
通过此配置,应用程序将在以下位置可用:
或者,当使用 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 可访问的不同页面。