共找到16條詞條名為rose的結果 展開
rose
WEB開發框架
Rose (原名 Paoding-Rest) 是一個基於Servlet規範、Spring“規範”的WEB開發框架。
Rose 框架通過在web.xml配置過濾器攔截並處理匹配的web請求,如果一個請求應該由在Rose框架下的類來處理,該請求將在Rose調用中完成對客戶端響應. 如果一個請求在Rose中沒有找到合適的類來為他服務,Rose將把該請求移交給web容器的其他組件來處理。
Rose使用過濾器而非 Servlet來接收web請求,這有它的合理性以及好處。
Servlet規範以“邊走邊看”的方式來處理請求,當伺服器接收到一個web請求時,並沒有要求在web.xml必須有相應的Servlet組件時才能處理,web請求被一系列Filter過濾時, Filter可以拿到相應的Request和Response對象,當Filter認為自己已經能夠完成整個處理,它將不再調用chain.doNext()來使鏈中下個組件(Filter、Servlet、JSP)進行處理。
使用過濾器的好處是,Rose可以很好地和其他web框架兼容。這在改造遺留系統、對各種uri的支持具有天然優越性。正是使用過濾器,Rose不再要求請求地址具有特殊的後綴。
為了更好地理解,可以把Rose看成這樣一種特殊的Servlet:它能夠優先處理認定的事情,如無法處理再交給其它Filter、Servlet或JSP來處理。這個剛好是普通Servlet無法做到的:如果一個請求以後綴名配置給他處理時候,一旦該Servlet處理不了,Servlet規範沒有提供機制使得可以由配置在web.xml的其他正常組件處理 (除404,500等錯誤處理組件之外)。
一個web.xml中可能具有不只一個的Filter,Filter的先後順序對系統具有重要影響,特別的,Rose自己的過濾器的配置順序更是需要講究。如果一個請求在被Rose處理前,還應該被其它一些過濾器過濾,請把這些過濾器的mapping配置在Rose過濾器之前。
1) 大多數請況下,filter-mapping 應配置在所有Filter Mapping的最後。 2) 不能將 FORWARD、INCLUDE 的 dispatcher 去掉,否則forward、 include的請求Rose框架將攔截不到
Rose框架內部採用"匹配 ->執行"兩階段邏輯。Rose內部結構具有一個匹配樹,這個數據結構可以快速判斷一個請求是否應該由Rose處理並進行,沒有找到匹配的請求交給過濾器的下一個組件處理。匹配成功的請求將進入”執行“階段。執行階段需要經過6個步驟處理:“參數解析 -〉 驗證器 -〉 攔截器 -〉 控制器 -〉 視圖渲染 -〉渲染后"的處理鏈。