4、在MgrApp.pm ,我们看看init 里做些什么事情。
复制内容到剪贴板
代码:
sub init {
my $self = shift;
# trace and store exception, install signal handler
local $SIG{__DIE__} = $SIG{__WARN__} = sub { $self->trace(@_) };
# 下面2行,初始化cgi 模块,以后我们可以通过$self->{query} 去调用Ext::CGI 里的方法。
my $CGI = new Ext::CGI;
$self->{query} = $CGI;
$self->{requires_login} =1;
# must initialize first
$self->init_sysconfig; #初始系统配置?果然是,看看下面的init_sysconfig 子程序,只要是对目前系统配置的处理。指的是webman.cf 如果有人不小心删了某些参数,就会使用默认设置。
#下面6行,初始化模版驱动可以通过$self->{tpl} 来使用Ext::Template 里的方法。
# begin to initialize other things
$self->{tpl} = Ext::Template->new(
root => $self->{sysconfig}->{SYS_TEMPLDIR},
cache => 0,
blind_cache => 0,
);
#下面这些代码大部分是cgi cookie;/session 方面的,在此就不说了。
my $sid = $CGI->get_cookie('webman_sid'); # only trust cookie
if($sid) {
$self->{sid} = $sid;
if ($self->valid_session) {
$self->{error} = undef;
$self->init_env($sid);
$CGI->set_cookie(
name => 'webman_sid',
value => $sid,
); # cookie expire after the browser closed
} else {
$CGI->set_cookie(
name => 'webman_sid',
value => '',
expires => $CGI->expires('-1y'),
);
$self->error('Session expired, please login again!');
kill_sid($self->{sid}); # destory session what ever it's
}
return 1; # return
}
$self->error('Invalid session, try again!') unless($self->permit);
}执行以上方法后,返回到Ext.pm new 方法的最后。
复制内容到剪贴板
代码:
if ($ctx->can('init')) {
$ctx->init;
}
$ctx; #返回
}至此overview.cgi 中的new方法执行完。
复制内容到剪贴板
代码:
my $app = Ext::MgrApp::OverView->new( config => $DIR . 'webman.cf',
directory => $DIR );[
本帖最后由 fengyong 于 2007-12-20 14:23 编辑 ]