`
shion
  • 浏览: 22570 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Grails的controller开发

 
阅读更多

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&hellip;"/></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快速开发Web应用

    Grails是一个基于Groovy语言构建的开源MVC(Model-View-Controller)Web开发框架,以其高效的开发速度和简洁的代码著称。其核心优势在于: 1. **快速开发**:得益于Groovy的动态特性和“一栈式”设计,Grails能显著...

    使用 Grails 快速开发 Web 应用程序

    《使用 Grails 快速开发 Web 应用程序》 Grails,一个基于Groovy动态语言的开源MVC框架,为Web开发提供了高效且简洁的解决方案。自2007年发布以来,Grails以其快速开发能力,降低了Web应用的复杂性,吸引了众多...

    Grails 3开发邮件发送功能

    Grails作为一个全栈的、基于Groovy语言的Web应用开发框架,提供了一套较为简便的方式来集成和实现邮件发送功能。Grails 3版本作为该框架的更新迭代产物,同样支持邮件发送服务。 首先,要在Grails 3中开发邮件发送...

    Grails+快速开发+Web+应用程序.pdf

    - **定义**:Grails是一个基于Groovy语言构建的开源Model-View-Controller (MVC) Web开发框架。它旨在简化Web应用程序的开发流程,提高开发效率。 - **特点**: - **动态性**:得益于Groovy语言的动态特性,Grails...

    grails开发

    Grails是构建在Groovy语言之上,它采用了MVC(Model-View-Controller)架构模式,旨在提高开发效率。Grails集成了许多流行的开源库,如Hibernate(ORM),Spring(依赖注入),以及Freemarker或GSP(视图层模板引擎...

    grails-2.4.2开发包

    根据MVC模式,Grails将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,每个部分都有明确的职责。模型负责业务逻辑,视图负责展示数据,控制器处理用户请求并协调模型和视图。这种分离...

    Grails 和 jQuery开发实例

    Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的JavaScript库,能够帮助我们实现高效的DOM操作、事件处理以及Ajax交互。 首先,Grails的MVC架构使得开发者可以快速搭建...

    grails login

    Grails是一个基于Java的开源Web应用程序框架,它使用Groovy语言进行开发,提供了高效、简洁的编程模型。在Grails中实现用户登录功能是构建任何Web应用的基础,它确保了数据的安全性和用户权限的管理。本示例将详细...

    Grails——web开发应用

    Grails 采用了敏捷开发的思想,遵循“约定优于配置”(Convention Over Configuration)和“不要重复自己”(Don’t Repeat Yourself,DRY)的原则,减少了大量繁琐的配置和模板代码,提高了开发效率。Grails 集成了...

    Grails技术精解与web开发实践11-20章

    1. **Grails框架核心概念**:这一部分可能讲解了Grails的核心组件,如服务层(Service)、控制器(Controller)、视图(View)以及领域模型(Domain)。Grails的MVC设计模式是其核心架构,理解和掌握这些概念对于...

    Grails Grails Grails

    Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式,允许开发者快速构建...

    Grails从零开始开发项目二

    在实际开发中,学习和理解Grails的MVC(Model-View-Controller)架构至关重要。模型层负责数据处理,视图层负责渲染用户界面,控制器层则作为两者之间的桥梁,处理用户的请求并调用相应的服务方法。此外,Grails的...

    grails开发笔记

    ### Grails 开发笔记 #### Grails 概述 Grails 是一款用于 Web 应用开发的开源框架,它基于 Groovy 编程语言,并集成了 Spring、Hibernate 和 SiteMesh 等成熟技术栈。其核心特性之一是“规约取代配置”...

    Grails权威指南 Grails权威指南

    在Grails中,Controller处理请求,View呈现结果,Model则存储和管理业务数据。 3. **GORM(Grails Object-Relational Mapping)**:Grails的内置ORM工具,允许开发者以声明式的方式操作数据库,支持SQL的CRUD操作,...

    Grails 开发手册1

    《Grails开发手册》是对Grails这一基于Groovy语言的Web应用框架的详细介绍。Grails遵循“约定优于配置”的原则,简化了开发流程,整合了Spring MVC和Hibernate等流行技术,使得开发者无需手动编写数据访问层即可实现...

    grails-用户手册

    Grails,作为一个基于Groovy语言的开源Web应用框架,深受开发者喜爱,它简化了Java开发的复杂性,提供了强大的MVC(Model-View-Controller)架构,以及丰富的插件系统。这份用户手册将帮助你深入理解和高效使用...

    Grails中文参考手册

    Grails 是一个基于 Groovy 语言的开源 web 应用程序框架,它构建在 Java 平台上,旨在提高开发效率,简化常见 Web 开发任务。Grails 遵循 Model-View-Controller (MVC) 架构模式,允许开发者快速构建动态、数据驱动...

    grails中文参考手册

    Grails是基于Groovy语言的开源Web应用框架,它融合了Model-View-Controller(MVC)架构模式,提供了丰富的插件系统和自动化工具,使得开发过程更为高效。Grails的设计理念是“代码胜于配置”,强调通过约定优于配置...

    使用_Grails_快速开发_Web_应用程序

    **开发流程**:开发过程中,Grails 自动化工具能自动生成 Controller 和 Domain Class 的基础代码,例如,创建一个 Domain Class `Person`,Grails 会同时生成相应的 Controller 和数据库表映射。开发者只需关注业务...

Global site tag (gtag.js) - Google Analytics