1.一个简单登录grailsDemo

首先创建domian object
class User
{
     Long id 
     String email
     String  password
     //重写toSting()方法
      //email是grooy语法
      String toString(){"$email"} 
     
     //定义约束
      def   constraints=
     {  
        email(email:true)
     }
}


然后我们在grails-app/conf写下这些代码,它的意思是在系统启动时候创建两个User对象。
class   ApplicationBootStrap{
     def init={ servletContext->
          new User(email:"[email protected]",password:"pass").save()
     }
      def desroy={
     }
}


接着我们创建一个Plant对象,该类的toString(),equals,hashCode()和java上是一样的
class Plant{
      .
      .
   //属性变量定义
    def  constraints={
          //初始化一个select
         annual(inList:["a","b"])
   }
   Stirng toString(){"${this.class.name}:${id}"}
   //*equels方法重写
    boolean equeals(other){
        if(other?.is(this)) return true 
        if(!(other instaceof Plant)) return false 
        if(!id||!other?.id||id=other?.id) return false 
        
         return true 
        
    }
    int hashCode(){
        int hashcode=0
        hash code=29*(hashcode+(!id?0:id...))
    }
}


我们来编写PlantController
class PlantController{
       //类似一个前置通知,在执行所有此类方法前将调用
        //&是一个引用或指针,except表示除了index,list.etc.等方法将不执行前置
        //c,u,d这些方法讲进行前置通知
      def beforeInterceptor=[action:this.&checuUser,except:['inde','list','show']]
      def  scaffold=true
      def checkUser(){
          //可以看到这里直接使用session
         if(!session.user){
             //我们把控制权交个UserController的login方法
             redirect(controller:'user',action:'login')
             return false
          }
      }
}


在看看UserContoller
class UserController{
     
    //自定义一个登录方法
     def doLogin={
         //params貌似一个Map,里面存储着各种参数
         def user=User.findWhere(email:params['email'],password:params['password'])
           session.user=user
           if(user)
                  redirect..
           else 
                ...
    }

}

你可能感兴趣的:(java,C++,c,Yahoo,grails)