最近发现网上grails由于用的人不算很多,相关的资料也不是那么容易找到,随着学习的深入打算把我的学习心得定期分享出来。也给学习grails的同胞一个偷懒的机会,我的原则是以最简洁的方式学会Grails,这次分享的东西是grials中比较常用的Render、Session、重定向的使用
1.重定向
简要的看了下Grail的文档,发现里面貌似没有服务器端跳转这样的东西,只找到了一个客户端跳转。用法也比较简单就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的使用
//保存用户名到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");
%>
登录成功,你的用户名是<%=userId%>,状态是:<%=request.getParameter("state")%>
</body>
</html>
到这里就可以丰富前几天的登录程序了,现在为登录增加一个功能:如果登录成功,则重定向到成功页面并显示登录的用户名,如果登录失败则返回到登录界面
天机功能之后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){
//保存用户名到session
session.setAttribute("UserId",u.getUserid())
//重定向到登录成功界面
redirect(controller:"Login",action:"loginSuccess",params:["state":"Success"])
}else{
redirect(controller:"Login",action:"toLoginUI")
}
}else{
render "用户名不存在"
}
}
最后来看看登录成功后显示的界面:
是不是很简单呢,下次将分享grails的一对多操作