Web 框架中的控制器? [ruby、Grails 等。] 它们是如何工作的?

controllers in web frameworks ? [ruby, Grails, etc..] How do they work?

所以我想做的是将登录页面定向到管理页面(例如:"admin.gsp"),如果输入用户名 "admin" 并输入密码 "pass"。或者如果输入了用户名 "user" 和密码 "pass",则将其定向到用户页面

但是我不明白控制器是如何工作的。

那么当你将页面重定向到特定的控制器和特定的方法时,如何让它重定向到特定的页面。您在该方法中实现了什么代码?

更好地解释我的问题。下面我们有控制器用户的代码,带有一个 if else 语句,具体取决于用户在登录框中键入的内容。

package file_download

class UserController {

    def index() { 
        //code that directs the page to username page, let's call it or user.gsp

    }

    def login = { 

        if(params.username == "admin" && params.password == "pass")
        {
            session.user = "admin"
            redirect(controller:"admin",action:"admin")

        }
        else if(params.username == "user" && params.password == "pass")
        {
            session.user="user"
            redirect(controller:"user",action:"index")
        }
        else 
        {
            flash.message = "login failed"
        }
        redirect(controller:"user",action:"login")

    }

    def logout = {
        session.user = null
        redirect(action: 'index')

    }



}

现在,我们有了带有操作索引的管理控制器,它应该有一个代码来将页面定向到... admin.gsp,或 admin.html,无论管理页面是什么被称为

package file_download

class AdminController {

    def index() { 
        //code that takes us to admin page let's call it admin.gsp 
    }
}

我们具体是怎么做到的? 我需要一些关于控制器的解释。

谢谢。请询问您是否需要对该问题进行更多说明,因为我将对其进行编辑。

我认为你的假设是错误的。在Grails(不知道rails)进入登录页面的时候,假设

/app/user/login

然后,首先调用控制器方法 (def login()),所以你的逻辑不应该去那里,它实际上应该什么也不做,按照惯例它最终会呈现 login.gsp .接下来,您的用户填写他的 username/pass 并提交表单,第二个请求是

/app/user/auhtenticate

这是您的逻辑应该去的地方,重定向将按您预期的方式工作

所以基本上 - 首先调用控制器方法,并且(除非您指定要呈现的 gsp 或进行重定向)在执行该方法后,将呈现 gsp 视图

我对 rails 一无所知,但是在 grails 中,您要查找的是 render

渲染:( http://grails.github.io/grails-doc/latest/ref/Controllers/render.html )

所以代码看起来像这样

 def index() { 
    render view: "/directory/inside/views/admin" model: [thing1: "Thing One"] 
}