1.建立Controller
①建立一个空的Controller,输入框里输入名称(系统自动在其名字后加上Controller)
②生成一个普通增删改的controller,不带GSP,输入框里输入domain的类全名
③生成增删改查的controller,带gsp,输入框里输入domain的类全名。
若选①,则生成出这样一个Controller:
package edu.ming
class TestCController {
def index() { }
}
index是默认的方法,访问controller的格式如下:
/$controller/$action
$controller 是controller的名字,就是类短名里Controller之前的那那部分,如上例中,URL为 /TestC,首字母小写亦可,如 /testC,非首字母则区分大小写
$action 故名思意,是action,也就是里面的方法。上例中index的访问URL是 /TestC/index ,不过index是默认的方法,如果未指明会默认指向该方法,所以上述可简写为 : /TestC
当然你也可以更改默认访问的方法,在controller里加上一句代码即可,如,默认转到myhome方法:
static defaultAction = "myhome"
可以看到,建立controller以后在views目录里已经用controller的名称建立了一个文件夹,这里在里面建立一个GSP:
gsp的默认命名规则:只要和action的名称一样就默认转发。如我们新建一个index.gsp,上例中的controller的index方法执行完成后会转向这个gsp。
GSP代码:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main"/>
<title>这是我的首页</title>
</head>
<body>
<div class="body">
我是一个首页
</div>
</body>
</html>
注:以上是新建过程中选择使用gsp模板生成的。
启动app:
启动完成后访问:
http://localhost:8080/grailsTest/testC
可以看到结果
2.controller里常用的方法
获取GET或POST参数:
def name = params["name"]
获取request对象
def name = request["name"]
获取session对象
def name = session["name"]
在其他方法里重定向到myhome方法
redirect(action:myhome)
直接转发对象到gsp(会将对象转换为map,转发到gsp上)
[person: new Person(name:"Jack")]
转发到指定gsp
def myhome() {
def attributes = [person: new Person(name:"Jack")]
render(view: "index", model: attributes)
}
render是个很有用的方法,如果你想做一个web接口,不需要gsp,可以直接这样
def myhome() {
render "a,b,c"
}
其他强大的用法不细细列举了。
3.GSP和view
gsp和jsp感觉上差不多,都是html+动态语言+EL表达式+标签库
一个带脚本的gsp:
<!doctype html>
<html>
<head>
<title>Grails</title>
</head>
<body>
<% out << "我是用Groovy写出来的" %>
</body>
</html>
和jsp一样写在<%和%>之间,当然不推荐用这种方式,有可能的话还是尽量用标签库和el表达式。
来试一下模板的用法。
在刚刚views的testC目录,建一个模板文件,模板文件需要下划线开头。建一个_houseView.gsp,内容如下:
<div>
<div>名字: ${house?.name}</div>
<div>类型: ${house?.type}</div>
</div>
在TestController里加些代码,让它往gsp里转发些数据:
package edu.ming
import test.domain.House;
class TestCController {
def index() {
[house:new House(name:"Jack's Home",type:"common")]
}
}
在index.gsp里引入模板:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="layout" content="main"/>
<title>这是我的首页</title>
</head>
<body>
<div class="body">
我是一个首页
<g:render template="houseView" model="[house: house]" />
</div>
</body>
</html>
运行,结果:
模板的用法感觉跟标签库差不多,不过可以在gsp里写html标签还是比在groovy代码里写html感觉要来得直接,更舒服一些。
这个方法把模板文件放在了controller的目录里面。如果想全局重用的话可以规划一个目录,如views/tmpl/_houseView.gsp
index.gsp在引用模板之前加一句:
<g:render template="/tmpl/houseView" />
然后再来看一下页面组织,grails采用了sitemesh框架。
其实应该有感觉,看一下现在testC里的index.gsp,里面没写header和footer,但是已经默认被加上了。注意这句:
<meta name="layout" content="main"/>
这句意思是说,使用main这个layout。这个layout在views/layouts里面,可以找到 main.gsp ,打开看到如下内容:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title><g:layoutTitle default="Grails"/></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="${resource(dir: 'images', file: 'favicon.ico')}" type="image/x-icon">
<link rel="apple-touch-icon" href="${resource(dir: 'images', file: 'apple-touch-icon.png')}">
<link rel="apple-touch-icon" sizes="114x114" href="${resource(dir: 'images', file: 'apple-touch-icon-retina.png')}">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}" type="text/css">
<link rel="stylesheet" href="${resource(dir: 'css', file: 'mobile.css')}" type="text/css">
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<div id="grailsLogo" role="banner"><a href="http://grails.org"><img src="${resource(dir: 'images', file: 'grails_logo.png')}" alt="Grails"/></a></div>
<g:layoutBody/>
<div class="footer" role="contentinfo"></div>
<div id="spinner" class="spinner" style="display:none;"><g:message code="spinner.alt" default="Loading…"/></div>
<g:javascript library="application"/>
<r:layoutResources />
</body>
</html>
看到body里面有刚刚看到的header和footer的定义。那么这个 <g:layoutBody/> 就是testC/index.gsp的body内容,<g:layoutTitle default="Grails"/> 自然就是标题的定义,如果没定义他默认就是Grails,<g:layoutHead/> 这个就是index.gsp的head了。通过修改这个文件可以更改全局的样式。
- 大小: 58.6 KB
- 大小: 43.7 KB
- 大小: 39 KB
- 大小: 15.6 KB
- 大小: 12.9 KB
分享到:
相关推荐
Grails是一个基于Groovy语言构建的开源MVC(Model-View-Controller)Web开发框架,以其高效的开发速度和简洁的代码著称。其核心优势在于: 1. **快速开发**:得益于Groovy的动态特性和“一栈式”设计,Grails能显著...
《使用 Grails 快速开发 Web 应用程序》 Grails,一个基于Groovy动态语言的开源MVC框架,为Web开发提供了高效且简洁的解决方案。自2007年发布以来,Grails以其快速开发能力,降低了Web应用的复杂性,吸引了众多...
Grails作为一个全栈的、基于Groovy语言的Web应用开发框架,提供了一套较为简便的方式来集成和实现邮件发送功能。Grails 3版本作为该框架的更新迭代产物,同样支持邮件发送服务。 首先,要在Grails 3中开发邮件发送...
- **定义**:Grails是一个基于Groovy语言构建的开源Model-View-Controller (MVC) Web开发框架。它旨在简化Web应用程序的开发流程,提高开发效率。 - **特点**: - **动态性**:得益于Groovy语言的动态特性,Grails...
Grails是构建在Groovy语言之上,它采用了MVC(Model-View-Controller)架构模式,旨在提高开发效率。Grails集成了许多流行的开源库,如Hibernate(ORM),Spring(依赖注入),以及Freemarker或GSP(视图层模板引擎...
根据MVC模式,Grails将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,每个部分都有明确的职责。模型负责业务逻辑,视图负责展示数据,控制器处理用户请求并协调模型和视图。这种分离...
Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的JavaScript库,能够帮助我们实现高效的DOM操作、事件处理以及Ajax交互。 首先,Grails的MVC架构使得开发者可以快速搭建...
Grails是一个基于Java的开源Web应用程序框架,它使用Groovy语言进行开发,提供了高效、简洁的编程模型。在Grails中实现用户登录功能是构建任何Web应用的基础,它确保了数据的安全性和用户权限的管理。本示例将详细...
Grails 采用了敏捷开发的思想,遵循“约定优于配置”(Convention Over Configuration)和“不要重复自己”(Don’t Repeat Yourself,DRY)的原则,减少了大量繁琐的配置和模板代码,提高了开发效率。Grails 集成了...
1. **Grails框架核心概念**:这一部分可能讲解了Grails的核心组件,如服务层(Service)、控制器(Controller)、视图(View)以及领域模型(Domain)。Grails的MVC设计模式是其核心架构,理解和掌握这些概念对于...
Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式,允许开发者快速构建...
在实际开发中,学习和理解Grails的MVC(Model-View-Controller)架构至关重要。模型层负责数据处理,视图层负责渲染用户界面,控制器层则作为两者之间的桥梁,处理用户的请求并调用相应的服务方法。此外,Grails的...
### Grails 开发笔记 #### Grails 概述 Grails 是一款用于 Web 应用开发的开源框架,它基于 Groovy 编程语言,并集成了 Spring、Hibernate 和 SiteMesh 等成熟技术栈。其核心特性之一是“规约取代配置”...
在Grails中,Controller处理请求,View呈现结果,Model则存储和管理业务数据。 3. **GORM(Grails Object-Relational Mapping)**:Grails的内置ORM工具,允许开发者以声明式的方式操作数据库,支持SQL的CRUD操作,...
《Grails开发手册》是对Grails这一基于Groovy语言的Web应用框架的详细介绍。Grails遵循“约定优于配置”的原则,简化了开发流程,整合了Spring MVC和Hibernate等流行技术,使得开发者无需手动编写数据访问层即可实现...
Grails,作为一个基于Groovy语言的开源Web应用框架,深受开发者喜爱,它简化了Java开发的复杂性,提供了强大的MVC(Model-View-Controller)架构,以及丰富的插件系统。这份用户手册将帮助你深入理解和高效使用...
Grails 是一个基于 Groovy 语言的开源 web 应用程序框架,它构建在 Java 平台上,旨在提高开发效率,简化常见 Web 开发任务。Grails 遵循 Model-View-Controller (MVC) 架构模式,允许开发者快速构建动态、数据驱动...
Grails是基于Groovy语言的开源Web应用框架,它融合了Model-View-Controller(MVC)架构模式,提供了丰富的插件系统和自动化工具,使得开发过程更为高效。Grails的设计理念是“代码胜于配置”,强调通过约定优于配置...
**开发流程**:开发过程中,Grails 自动化工具能自动生成 Controller 和 Domain Class 的基础代码,例如,创建一个 Domain Class `Person`,Grails 会同时生成相应的 Controller 和数据库表映射。开发者只需关注业务...