讀R4R,才讀完第2章,前兩章沒什么新內(nèi)容,算是復(fù)習(xí)吧
rails的lifecycle:
從瀏覽器發(fā)起一個(gè)請求的基本流程:
A.server to dispatcher
服務(wù)器通過你指定的路徑查找dispatcher,比如,你在apache配置:
<VirtualHost www.r4rmusic.com>
ServerName www.r4rmusic.com
ServerAlias r4rmusic.com
DocumentRoot "/usr/local/share/railsapps/r4rmusic/public/"
</VirtualHost>
服務(wù)器將在"/usr/local/share/railsapps/r4rmusic/public/下查找分發(fā)器,在rails應(yīng)用下面有這么幾個(gè)文件就是:dispatch.cgi dispatch.fcgi dispatch.rb
這幾個(gè)文件中的某個(gè)將被調(diào)用
B.dispatcher to controller
分發(fā)器將解析發(fā)起請求的URL,按照:
1.controller的名稱
2.action名稱
3.請求id值
來尋找相應(yīng)的controller的action,并執(zhí)行.當(dāng)然,你可以通過編輯config下面的routes.rb來定義自己的路由規(guī)則
C.performance of a controller action
當(dāng)相應(yīng)的controller以及相應(yīng)的action被找到并且執(zhí)行,他們將可以訪問:
1.CGI數(shù)據(jù),form提交的數(shù)據(jù)
2.controller的session信息,內(nèi)建的session方法
本質(zhì)上rails是把業(yè)務(wù)邏輯放在controller的action里面,也就是沒有我們在J2EE中所謂的業(yè)務(wù)邏輯層.當(dāng)業(yè)務(wù)邏輯或者說action較多時(shí),你的controller文件不可避免的變的很長...在維護(hù)性和可讀性也許會(huì)帶來問題,當(dāng)然,細(xì)分controller是更好的方法