java web mvc-08-Grails 入门介绍

拓展阅读

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 myappclass 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 myappclass 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 可访问的不同页面。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity通用渲染管线升级URP、HDRP

Unity通用渲染管线升级URP、HDRP 一、Build-in Pipline升级到 URP 一、Build-in Pipline升级到 URP 安装URP包 升级所有材质&#xff08;升级完成后材质会变成紫红色&#xff0c;Shader丢失&#xff0c;此为正常现象&#xff09; 创建 UniversalRenderPipelineAsset 配置文…

深入Kafka broker

一、协议设计 颗粒度, PRODUCE和FETCH中支持topic,partion等层级的颗粒度;测试友好, 基于session_id和epoch确定一条拉取链路的fetch session;全量增量结合, FetchRequest中的全量拉取和增量拉取;基本结构: headerbody。 常见header: api_key, api_version, corelation_id, cl…

8.前端--CSS-显示模式

元素的显示模式 元素显示模式就是元素&#xff08;标签&#xff09;以什么方式进行显示&#xff0c;比如<div>自己占一行&#xff0c;比如一行可以放多个<span>。 1.块元素 常见的块元素 常见的块元素&#xff1a;<h1>~<h6>、<p>、<div>、…

如何预防服务器IP被劫持,危害有什么?

服务器IP被劫持是一种严重的网络安全问题&#xff0c;攻击者通过篡改服务器的IP地址&#xff0c;将网络流量重定向到恶意服务器或网站&#xff0c;导致用户无法正常访问目标服务器&#xff0c;并可能面临数据泄露、恶意软件感染等安全风险。了解服务器IP被劫持的危害和预防措施…

Jumpserver中安装httpx

查看已安装的包 pip freeze # python -V # Python 2.7.5安装anyio 刚开始直接pip install httpx&#xff0c;未设置版本号&#xff0c;因已有idna2.7&#xff0c;所以出现版本不兼容的现象 anyio 3.0.0 requires idna>2.8, but you have idna 2.7 which is incompatible.…

船的最小载重量-算法

说明&#xff1a;题解完全是从leetCode上拉下来的&#xff0c;在这里只是作为一个备份&#xff0c;怕之后找不着了。同时也分享给大家&#xff0c;这个题目用了一个我之前从未遇到的思路。 原题&#xff1a;船的最小载重量-leetCode1101 题目&#xff08;看懂题目了吗&#xff…

街机模拟游戏逆向工程(HACKROM)教程:[18]分析的思路

在之前的文章,我们已经提及,得到玩家的血量,可以用这个分析出哪些想要的东西: 1、被敌人攻击 - 得到敌人某个技能的攻击力,自身的防御力。 2、被队友攻击 - 得到队友的攻击力。 3、被道具击中 - 得到道具的攻击力。 4、使用扣血技能 - 得到使用技能扣除的血量值。 5、…

pikachu_csrf通关攻略

csrf&#xff08;get&#xff09; 打开pikachu靶场&#xff1a; 1. 根据提示给的账户密码进行登录 2. 打开代理拦截数据包将拦截数据发送到已打开的burp中&#xff1a; 修改数据进行发包&#xff1a; 从上面的url可见&#xff0c;修改用户信息的时候&#xff0c;是不带任何不…

网易云音乐JS逆向分析

文章目录 页面分析抓包分析JS逆向分析代码编写 页面分析 先来分析一下页面 当我们点击播放按钮的时候&#xff0c;音乐开始播放。实际上这个逻辑背后的原理是这个按钮后面对应的是一个url&#xff0c;这个地址是通过ajax来进行局部刷新的。 所以我们可以通过抓包工具&#…

软件开发:大厂中的灰度发布到底是什么样的一个流程

前言 灰度发布是一种软件发布的策略&#xff0c;也被称为渐进式发布或部分用户发布。在灰度发布中&#xff0c;新版本的软件不会立即对所有用户进行全面发布&#xff0c;而是先选择一小部分用户进行测试和试用。这样可以在生产环境中逐步引入新功能或修复bug&#xff0c;以降低…

K8S搭建(centos)四、安装K8S

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

linux环境开发工具---yum与vim

1.Linux软件包管理器yum 1.1什么是软件包 在学习linux过程中&#xff0c;我们常常会遇到某些指令用不了的时候&#xff0c;原因除了权限问题外&#xff0c;还有可能是你当前的linux环境并没有安装相应的软件包。而在Linux下载安装软件的办法有两个&#xff0c;一个是先下载所需…

Aspx漏洞总结

第一部分&#xff0c;.NET项目当中的dll都可以进行反编译&#xff1a; 在java中有很多jar包&#xff0c;而在.NET框架中的bin中对应有很多DLL文件&#xff0c;bin下面都是可执行文件&#xff0c;这些文件都是很多代码封装的&#xff0c;想要查看源码&#xff0c;都需要通过反编…

Microsoft Remote Desktop for Mac(远程桌面连接)激活版

Microsoft Remote Desktop是一款由微软开发的远程桌面连接工具&#xff0c;它允许用户从另一台计算机或移动设备远程连接到Windows桌面或服务器。 以下是该软件的一些主要特点和功能&#xff1a; 跨平台支持&#xff1a;Microsoft Remote Desktop支持Windows、macOS、iOS和Andr…

【Linux】Vagrant搭建Linux环境

1. Vagrant Vagrant是一个基于Ruby的工具&#xff0c;用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统&#xff0c;使用 Chef创建自动化虚拟环境。 1.1 安装Vagrant 从Vagrant官网下载安装包&#xff0c;执行安装。 1.2 安装VirtualBox 从官网下载…

【K8S 云原生】K8S之HPA自动扩缩容、命名空间资源限制、容器抓包

目录 一、HPA概述 1、概念 2、两个重要的组件&#xff1a; 3、HPA的规则&#xff1a; 4、pod的副本数扩容有两种方式&#xff1a; 4.1、手动扩缩容&#xff0c;修改副本数&#xff1a; 4.2、自动扩缩容HPA 二、实验部署&#xff1a; 1、部署HPA 2、实现自动扩缩容 三…

智慧博物馆信息化系统建设(2)

物联网智能感知综合平台 物联网感知综合平台是综合物联网应用共性特点,贯穿感知、传输、应用服务三层的共性功能模块、协议和平台等的总称。 “感知综合平台基础标准+应用子集标准”体系已被ISO/IEC JTC1 国际标准化组织和国家物联网基础工作组认可,“物联网感知综合平台+应…

Pandas--简介(1)

Pandas 简介 Pandas 是一个开源的数据分析和数据处理库&#xff0c;它是基于 Python 编程语言的。Pandas 提供了易于使用的数据结构和数据分析工具&#xff0c;特别适用于处理结构化数据&#xff0c;如表格型数据&#xff08;类似于Excel表格&#xff09;。Pandas 是数据科学和…

GPTBots:利用FlowBot中的卡片和表单信息,提供丰富的客服体验

在当今的数字化时代&#xff0c;客户服务的形式和体验正在经历着前所未有的变革。传统的文字消息方式已经无法满足现代用户对于服务体验的多元化需求。那么&#xff0c;如何才能在这个信息爆炸的时代&#xff0c;让我们的服务方式更加个性化、多样化&#xff0c;从而提供更丰富…

博途1200PLC脉冲轴绝对定位往复运动控制FB(完整SCL源代码)

三菱PLC绝对定位指令往复运动控制请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/135570157https://rxxw-control.blog.csdn.net/article/details/135570157SMART PLC绝对定位往复运动控制 https://rxxw-control.blog.csdn.net/article/details/1…