[英]controllers in web frameworks ? [ruby, Grails, etc..] How do they work?
因此,如果要輸入用戶名“ admin”並且輸入密碼“ pass”,我想做的就是將登錄頁面定向到管理頁面(例如:“ admin.gsp”)。 或將其定向到用戶頁面(如果輸入了用戶名“ user”和密碼“ pass”)
但是我不明白控制器是如何工作的。
因此,當您將頁面重定向到特定的控制器和特定的方法時,如何使它重定向到特定的頁面。 您在該方法內實現了什么代碼?
更好地解釋我的問題。 下面是控制器User的代碼,其中包含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,稱為admin的頁面
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
。 接下來,您的用戶填寫其用戶名/密碼並提交表單,然后第二個請求讓我們說:
/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"]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.