折腾了一上午,终于用Grails实现了一个最最简单,没有任何校验的登录功能。虽然慢,但也挺开心的,记录一下。
域类:
class User {
static constraints = {
}
String username ;
String password ;
}
控制器:
class UserController {
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
def index() {
redirect(action: "login", params: params)
}
def login = {
}
def loginCheck = {
def user = User.findByUsernameAndPassword(params.username, params.password)
if(user){
session.user = user
flash.message = "Hello ${user.username}!"
redirect(action:"success")
}else{
flash.message = "Sorry, ${params.username}. Please try again."
redirect(action:"login")
}
}
def success ={
}
def list() {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[userInstanceList: User.list(params), userInstanceTotal: User.count()]
}
def create() {
[userInstance: new User(params)]
}
def save() {
def userInstance = new User(params)
if (!userInstance.save(flush: true)) {
render(view: "create", model: [userInstance: userInstance])
return
}
flash.message = message(code: 'default.created.message', args: [message(code: 'user.label', default: 'User'), userInstance.id])
redirect(action: "show", id: userInstance.id)
}
def show() {
def userInstance = User.get(params.id)
if (!userInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])
redirect(action: "list")
return
}
[userInstance: userInstance]
}
def edit() {
def userInstance = User.get(params.id)
if (!userInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])
redirect(action: "list")
return
}
[userInstance: userInstance]
}
def update() {
def userInstance = User.get(params.id)
if (!userInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])
redirect(action: "list")
return
}
if (params.version) {
def version = params.version.toLong()
if (userInstance.version > version) {
userInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
[message(code: 'user.label', default: 'User')] as Object[],
"Another user has updated this User while you were editing")
render(view: "edit", model: [userInstance: userInstance])
return
}
}
userInstance.properties = params
if (!userInstance.save(flush: true)) {
render(view: "edit", model: [userInstance: userInstance])
return
}
flash.message = message(code: 'default.updated.message', args: [message(code: 'user.label', default: 'User'), userInstance.id])
redirect(action: "show", id: userInstance.id)
}
def delete() {
def userInstance = User.get(params.id)
if (!userInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])
redirect(action: "list")
return
}
try {
userInstance.delete(flush: true)
flash.message = message(code: 'default.deleted.message', args: [message(code: 'user.label', default: 'User'), params.id])
redirect(action: "list")
}
catch (DataIntegrityViolationException e) {
flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'user.label', default: 'User'), params.id])
redirect(action: "show", id: params.id)
}
}
}
登录页面:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录</title>
</head>
<body>
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<form action="loginCheck" method="post">
<table>
<tr>
<td>用户名</td>
<td>
<input type="text" name="username"/>
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type="password" name="password"/>
</td>
</tr>
<td>
<input type="submit" value="提交"/>
</td>
</table>
</form>
</body>
</html>
成功页面:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录成功</title>
</head>
<body>
<h1>
<g:if test="${flash.message}">
<div class="message">
${flash.message}
</div>
</g:if>
</h1>
</body>
</html>
所有东西都是最简单的
分享到:
相关推荐
在了解了Grails的基本结构后,可以通过创建简单的控制器和领域类来实现基本功能。例如,创建一个用于联系人管理的控制器和领域类,处理CRUD操作。Grails的自动化工具如GORM(Grails Object-Relational Mapping)将...
本文档将详细介绍如何在Grails框架下构建一个简单的登录系统。此示例不仅展示了基础的登录功能,还包括了密码加密等安全特性。通过本教程,读者可以了解到如何从零开始搭建一个支持用户认证的应用。 #### 二、环境...
在本文中,我们将深入探讨如何在Grails框架中结合uploadify插件实现文件上传功能。Grails是一款基于Groovy语言的、高效的Web应用开发框架,它简化了Java平台上的开发流程。uploadify则是一个JavaScript库,它允许...
GORM是Grails的持久化框架,它实现了Hibernate和ActiveRecord的功能,使得与数据库的交互变得简单。通过定义领域类,你可以轻松地完成CRUD(创建、读取、更新、删除)操作。 五、Grails插件系统 Grails的插件系统...
Grails 是一个基于Groovy语言的开源Web应用框架,它构建在Spring Boot之上,提供了丰富的功能和便捷的...无论是简单的数据获取还是复杂的业务流程,Grails都能提供强大的支持,让Ajax在Grails应用中发挥出应有的价值。
总的来说,"第一个grails程序"是一个基础的登录验证系统,展示了Grails如何快速构建Web应用,包括处理用户请求、与数据库交互、实现业务逻辑和视图渲染。这个简单的例子对于初学者来说,是理解Grails框架工作原理和...
Grails的国际化支持非常好,开发者可以通过简单的配置来为不同的语言环境定制应用程序。 在服务层,Grails支持声明式事务,并允许通过依赖注入将服务集成到应用程序中。服务的作用域和生命周期是Grails服务管理的一...
Grails 提供了对多语言环境的支持,通过 properties 文件管理不同语言的文本资源,便于实现应用程序的国际化。 **Grails 文档** "Grails 中文参考手册" 是一套详细的 Grails 学习资料,涵盖了框架的所有核心组件、...
- **用户认证**:实现用户登录、权限验证等功能,保障应用的安全性。 - **数据加密**:确保敏感数据的安全传输与存储。 - **测试**: - **单元测试**:针对单一组件进行测试,验证其功能正确性。 - **功能测试**...
Grails是一个基于Groovy语言的开源Web应用框架,它提供了高效的开发环境和强大的功能,使得构建动态网站和企业级应用变得简单高效。 1. **起步**: - **下载安装Grails**:首先,你需要从官方渠道下载最新版本的...
Grails的独特之处在于它能够吸收其他流行框架的优点,比如Spring的依赖注入、Hibernate的对象关系映射能力、Quartz的强大调度功能以及SiteMesh的布局管理,而这一切都可以在Grails的简单约定和简洁语法下实现。...
在本文中,我们将深入探讨如何在Grails框架中配置MongoDB...通过这样的配置和实现,我们就能在Grails中搭建一个简单的用户登录系统,并利用MongoDB存储用户信息。这个系统能够自动生成相应的集合数据,方便快速开发。
- **Hello World示例**:在新创建的应用中,你可以通过创建一个简单的控制器和视图来实现经典的“Hello, World!”程序,体验Grails的快速开发能力。 3. **使用IDE** Grails支持多种集成开发环境(IDE),如...
- **自动数据库移植**:Grails支持自动数据库迁移,通过简单的配置即可实现数据库结构的更新。 **3.2 日志配置** 合理的日志记录对于追踪问题、调试代码至关重要。 **3.3 数据源** - **数据源和环境**:不同环境...
本案例"Grails案例"旨在展示如何利用Grails实现基本的增删查改(Create, Read, Update, Delete,简称CRUD)功能,这对于任何数据库驱动的应用来说都是核心需求。 1. **Grails简介** - Groovy语言:Grails是基于...
3. **第一个Grails应用**:通过创建一个简单的“Hello, World!”应用,体验Grails的快速开发流程,理解Grails脚手架和自动代码生成。 4. **Grails MVC**:深入理解Model-View-Controller架构,包括Domain Classes...
例如,`spring-security-core`插件用于安全控制,`grails-spring-websocket`插件实现WebSocket支持等。 6. **命令行工具** Grails的命令行工具提供了丰富的命令,如创建新项目、生成领域类、运行测试等,极大提高...
它提供了丰富的插件系统,使得企业级Web应用的开发变得快速而简单。本篇文章将深入探讨Grails在企业Web开发中的应用以及部署策略。 一、Grails简介 Grails是一种模型-视图-控制器(MVC)框架,其设计理念是“约定...