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

相關文章
相關標籤/搜索