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