Grails重定向以及Render、Session的使用

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


1.重定向java

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

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也可以实现url


3.request和session的使用.net

grails里使用request和session和servlet差点儿相同,但是request用的概率较小,在grails的控制器里通常使用params取得请求的所有參数。这里着重学习session的使用code


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


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

<%@ 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方法就可以改为如下的这样样子了htm


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的一对多操做blog

相关文章
相关标签/搜索