1.一个简单登录grailsDemo
首先创建domian objectclass User{ Long id String email Stringpassword //重写toSting()方法 //email是grooy语法 String toString(){"$email"} //定义约束 def constraints= { email(email:true) }}
然后我们在grails-app/conf写下这些代码,它的意思是在系统启动时候创建两个User对象。
class ApplicationBootStrap{ def init={ servletContext-> new User(email:"chenwentaokl@yahoo.com.cn",password:"pass").save() } def desroy={ }}
接着我们创建一个Plant对象,该类的toString(),equals,hashCode()和java上是一样的
class Plant{ . . //属性变量定义 defconstraints={ //初始化一个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=] defscaffold=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 ... }}
页:
[1]