very brief intro to catalyst

15

Click here to load reader

Upload: zachary-d-blair

Post on 19-Jun-2015

1.032 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Very Brief Intro to Catalyst

(Very Brief) Intro to Catalyst

http://www.catalystframework.org/

Page 2: Very Brief Intro to Catalyst

What's a Web Framework?

a software framework for developming dynamic websites

E.g. Ruby on Rails (Ruby) Django (Python)

Catalyst (Perl)

Page 3: Very Brief Intro to Catalyst

How Does It Fit?

Perl application using Catalyst

Databasee.g. MySql

Web Browser

Select * FROM.. HTTP Requests

Page 4: Very Brief Intro to Catalyst

What Is Its Structure?

Each app has a directory structure that separates model, view, and controller modules.

/lib/AppName/Model/

/lib/AppName/View/

/lib/AppName/Controller/Root.pm

/root/static/

/script/hello_server.pl

Makefile.PL

Page 5: Very Brief Intro to Catalyst

Model-View-Controller

Model: Stores and retrieves data (e.g. in a database).

Controller Receives/processes HTTP requests,

reading/manipulating data from the Model and forwarding it to the View for presentation to the user.

View Formats data for presentation to the user (usually

by generating HTML, but could also generate PDF, PNG, etc).

Page 6: Very Brief Intro to Catalyst

●Install Catalyst (Ubuntu)

sudo aptitude install libcatalyst­perl libcatalyst­modules­perl libconfig­general­perl

Page 7: Very Brief Intro to Catalyst

Create an Application

The ”catalyst.pl” script is used to create the initial application structure:

$ catalyst.pl Hello

$ cd Hello

Page 8: Very Brief Intro to Catalyst

Start the Application

$ script/hello_server.pl

Page 9: Very Brief Intro to Catalyst

View the Application

Navigate to:

http://localhost:3000

Page 10: Very Brief Intro to Catalyst

How it Works

When you access http://localhost:3000/, Catalyst calls index() in /lib/Hello/Controller/Root.pm:

sub index :Path :Args(0) {

  my ( $self, $c ) = @_;

        

  # Hello World

  $c­>response­>body( $c­>welcome_message );

}

Page 11: Very Brief Intro to Catalyst

Extending the App

Add http://localhost:3000/hello Just add a new subroutine called ”hello” to

Root.pm:

sub hello :Local {

  my ( $self, $c ) = @_;

  $c­>response­>body( ”Hello!!!!” );

}

Page 12: Very Brief Intro to Catalyst

What We've Got

If in a web browser, you query http://localhost:3000/foo,

in lib/Hello/Controller/Root.pm, a subroutine called ”foo()” is executed, and

foo() generates HTML that is sent back to the web browser.

Page 13: Very Brief Intro to Catalyst

What Else Can Catalyst Do?

Access a database (e.g. MySql) Object-Relation Mapping

Retrieve user-entered data from HTML forms Generate nice HTML using templates

E.g. Using Template::Toolkit

Integrate with the Apache web server FastCGI protocol

Page 14: Very Brief Intro to Catalyst

Questions?

http://www.catalystframework.org/ Catalyst::Manual

Page 15: Very Brief Intro to Catalyst

Thank You!

Zachary D. Blair

http://www.sfu.ca/~zblair