博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Grails示例程序-一个简单的聊天室
阅读量:6329 次
发布时间:2019-06-22

本文共 2106 字,大约阅读时间需要 7 分钟。

hot3.png

整个聊天室由两个界面组成,第一个界面用来注册用户的昵称。提交后,显示聊天页面,用户可以开始聊天。界面上部显示聊天信息。用户可以在界面底部输入消息,输入消息后回车提交。

  • Domain

首先建立一个领域模型用来保存聊天消息。

package com.tutorialclass Message { String nickname Date date = new Date() String message static constraints = { }}

系统加载完成后,会将所有历史消息全部加载到聊天界面。

  • Registration

在控制器中增加注册页面转发控制器和注册信息提交控制器

package com.tutorialclass ChatController { def index() { } def join(String nickname) { if ( nickname.trim() == '' ) { redirect(action:'index') } else { session.nickname = nickname render (view: 'chat') } }}

index.gsp

Simple Chat

index页面中的form表单提交给join方法,join方法将提交过来的nickname保存到session,并将页面跳转到chat视图

  • Chat

chat中有两个功能,一个是显示所有聊天记录,一个是提交聊天消息

package com.tutorialclass ChatController { ...... def retrieveLatestMessages() { def messages = Message.listOrderByDate(order: 'desc', max:10) [messages:messages.reverse()]} def submitMessage(String message) { new Message(nickname: session.nickname, message:message).save() render "" }}

chat.gsp

Simple Chat

在chat.gsp代码中会不断的请求服务器端,并更新客户界面就是pollMessages()和retrieveLatestMessages()这两个方法的功能,而retrieveLatestMessages()方法更新的工作时调用了Grails内置的<g:remoteFunction>标签,将retrieveLatestMessages页面显示出来。

retrieveLatestMessages.gsp

${message.nickname} -
${message.message}

retrieveLatestMessages控制器会将模型中最后10个实例拿出来提交给retrieveLatestMessages.gsp视图显示。

  • Default Page

如果想修改系统启动时的默认访问页为聊天用户注册的页面,可以修改config/UrlMappings.groovy

class UrlMappings { static mappings = { "/$controller/$action?/$id?"{ constraints { // apply constraints here } } "/" (controller:"chat", action:"index") "500"(view:'/error') }}
  • Remarks

上面只是一个非常简单的例子,有很多漏洞,这个例子只是想说明Grails简单易用的特性,这个实例的完整代码可以在下载。

转载于:https://my.oschina.net/65304586/blog/193573

你可能感兴趣的文章
hadoop 1.1.2和 hive 0.10 和hbase 0.94.9整合
查看>>
XCoreRecyclerAdapter:更好用的Adapter For RecyclerView
查看>>
pdns 域名绑定 IP 故障备忘
查看>>
菜鸟—需求预测与分仓规划季军——“我们为R代言”团队赛后总结
查看>>
python 结巴分词(jieba)学习
查看>>
mac党如何解析bootchart
查看>>
Android面试之高级篇
查看>>
Fiddler (四) 实现手机的抓包
查看>>
Nginx学习之负载均衡
查看>>
【阿里云资讯】作战指挥系统碾压美军?!阿里双11破千亿背后的重大机密......
查看>>
zephir-(12)php函数和异常处理
查看>>
Flex4.6 用Lable自定义LinkButton
查看>>
CentOS下关闭Sendmail服务的方法
查看>>
html select 标签知多少
查看>>
adb操作手机打电话、发短信
查看>>
Shell学习笔记---date_pratice.sh
查看>>
Maven入门(含实例教程)
查看>>
LinkedList的用法小结
查看>>
防xss攻击,需要对请求参数进行escape吗?
查看>>
字符串匹配算法之SimHash算法
查看>>