Rechercher une page de manuel
Jifty::Manual::RequestHandling.3pm
Langue: en
Version: 2007-12-26 (debian - 07/07/09)
Section: 3 (Bibliothèques de fonctions)
Sommaire
NAME
Jifty::Manual::RequestHandling - Jifty's request handling processDESCRIPTION
This document outlines some of Jifty's inside in order to help you to understand what happens during the request processing phase.THE HANDLER
As soon as a http request (whatever the method might be, like GET, POST, PUT, ...) arrives at Jifty's border, the request is forwarded to a handler. By default, "Jifty->handler" points to a Jifty::Handler object that is responsible for handling an incoming request. The handler receives a CGI object on which it operates.The major steps in the request handling process are:
- refresh eventually modified modules in develop mode
- This allows a perl developer to change perl modules being used in a Jifty application without the need to restart the server which would otherwise become necessary. This is never done on a live environment.
- build a stash
- The stash is a storage area that can be reached by simply accessing "Jifty->handler->stash->{some_key}". The stash will start fresh with every request and lives for the entire lifetime of a request. Using the stash, transporting data between otherwise unconnected modules will become possible.
- construct a request and response object
- Using the CGI object, a Jifty::Request object is constructed and its data is populated with the CGI's data. The request can be reached later using "Jifty->web->request". The request holds information about all actions involved, all page fragments, contains state variables and arguments (usually GET/POST parameters).
Also, an empty Jifty::Response object is constructed that contains one or more Jifty::Result objects, each of which holds one Jifty::Action's result. The response object can be retrieved with the "Jifty->web->response" method.
- setup plugins
- For every registered Jifty::Plugin, some kind of per-request initialization is performed allowing the actions provided by each plugin to run.
- handle static content
- If the requested URI points to some existing static content being housed in a "static" directory, this content is handled.
- setup the session
- Based on a cookie that is sent with every http response, the current user is assigned a unique session. The session is stored in a Jifty::Web::Session object and can be accessed using the "Jifty->web->session" method.
- return from a continuation if requested
- If there is an open continuation on the stack (e.g. from a "Jifty->web->tangent" link) and the return has been requested (e.g. by a "Jifty->web->return" link), the return will execute at this stage.
- handle dynamic request unless already served
- First, the user is given a cookie containing the session-id. Then, the request is forwarded to "Jifty->handler->dispatcher", a Jifty::Dispatcher object to handle the request. The dispatcher works through the following steps:
-
- setup
- In this stage, all rules in the dispatcher that are marked with the word "before" are run.
- run the actions involved
- Every Jifty::Action that is registered in a form or involved in a link or button is run in this stage.
- run dispatching rules
- This stage is responsible for working through all rules marked by words like "under", "on", "when" and so on. This is a point where based on the URI or parameters the template to get displayed may still be modified, data get retrieved, additional actions run or the template's parameters get adjusted.
- show the page
- Here, the template displaying the page is run.
- cleanup
- This final stage of the dispatcher will run all rules marked with the word "after".
-
- cleanup several things
- Finally, the eventually modified session-record is flushed and some internally allocated structures get deallocated.
SEE ALSO
Jifty::Handler, Jifty::Dispatcher, Jifty::Request, Jifty::ResponseContenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre