近期发现网上grails因为用的人不算非常多,相关的资料也不是那么easy找到,随着学习的深入打算把我的学习心得定期分享出来。也给学习grails的同胞一个偷懒的机会,我的原则是以最简洁的方式学会Grails,这次分享的东西是grials中比較经常使用的Render、Session、重定向的使用

1.重定向

简要的看了下Grail的文档,发现里面貌似没有server端跳转这种东西,仅仅找到了一个client跳转。使用方法也比較简单就redirect(配置),对于里面的配置也比較灵活就像以下这个样例

redirect(uri:"book/list")
redirect(url:"http://www.blogjava.net/BlueSUN")
redirect(action:"show")
redirect(controller:"book",action:"list")
redirect(action:"show",id:4, params:[author:"Stephen King"])

里面的配置还能够混合起来写,例如以下所看到的

//使用uri的方式重定向
def useURI={
redirect(uri:"/login/toLoginUI",params:["state":"ToLogin"])
}

还能够这样写:

redirect(controller:"Login",action:"loginSuccess",params:["state":"Success"])

2.render的使用

render类似java里的PrintWriter,基本上PrintWriter能实现的功能render也能够实现

3.request和session的使用

grails里使用request和session和servlet差点儿相同,可是request用的几率较小,在grails的控制器里一般使用params取得请求的全部參数。这里着重学习session的使用

  //保存username到session
session.setAttribute("UserId",u.getUserid())
//重定向到登录成功界面
redirect(controller:"Login",action:"loginSuccess",params:["state":"Success"])

界面上要取出session里的东西也和曾经一样,例如以下所看到的:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功页面</title>
</head>
<body>
<%
String userId=(String)session.getAttribute("UserId");
%>
登录成功,你的username是<%=userId%>,状态是:<%=request.getParameter("state")%>
</body>
</html>

到这里就能够丰富前几天的登录程序了,如今为登录添加一个功能:假设登录成功,则重定向到成功页面并显示登录的username,假设登录失败则返回到登录界面

天机功能之后UserController的check方法就能够改成以下的这样样子了

def check = {
//request的使用(grails里一般用params)
println request.getParameter("userid")
//params封装了请求里的所有參数,数据类型相似map
def u= User.findByUserid(params.userid)
if(u){
if(u.getUserpwd()==params.userpwd){
//保存username到session
session.setAttribute("UserId",u.getUserid())
//重定向到登录成功界面
redirect(controller:"Login",action:"loginSuccess",params:["state":"Success"])
}else{ redirect(controller:"Login",action:"toLoginUI")
}
}else{
render "username不存在"
} }

最后来看看登录成功后显示的界面:

是不是非常easy呢,下次将分享grails的一对多操作

最新文章

  1. Mysql 查看、创建、更改 数据库和表
  2. WWWFileSharePro 7.0 汉化破解绿色版,比hfs更稳定的Web文件共享服务器
  3. json.stringfy()和json.parse()
  4. oracle高阶知识点
  5. An error in projects
  6. mysql前缀索引(字符串截取部分作为索引), 以及索引选择指引
  7. SQL数据库完全复制
  8. 2013年国庆节前51Aspx源码发布详情
  9. Palindrome Partitioning II
  10. work_5
  11. 【go】脑补框架 Express beego tornado Flux reFlux React jsx jpg-ios出品
  12. Android 签名(5)用命令签名和用IDE签名
  13. Java Access Levels(访问控制)
  14. UIImage图片处理
  15. BZOJ 3282 Tree Link-Cut-Tree(LCT)
  16. 使用Angular构建单页面应用(SPA)
  17. Snort初探
  18. 夏令营讲课内容整理 Day 6 Part 3.
  19. iOS中 扫描二维码/生成二维码详解 韩俊强的博客
  20. 开发函数计算的正确姿势 —— 使用 Fun Local 本地运行与调试

热门文章

  1. qt坐标系统
  2. ios block使用
  3. 成语接龙(dfs)
  4. C#设置程序自启动
  5. Android-----------国际化多国语言文件夹命名汇总
  6. C#实现在线更新系统
  7. fddd
  8. CSS布局部分知识总结
  9. php word转HTML
  10. Taglib、EL、OGNL