The document is an introduction to the Lift web framework. It provides an agenda that will discuss Scala web frameworks, what makes Lift different, real-world examples of Lift in use, and the basics of building applications with Lift including page templates, snippets, models, and business logic. The presentation aims to provide an understanding of Lift and interest people in learning and using it further.
2. Agenda …
Where are we going?
• Scala Web Frameworks
• Why is Lift Different
• In the Wild
• The Basics of Lift
– Getting Up and Running
– Building Blocks
– Page Templates
– Snippets
– Model
– Business Logic
An Introduction to Lift
May 2, 2012 2
3. Agenda …
Goals
• Have an understanding of what Lift is
• Have an interest in learning more
• Go play with Lift!
An Introduction to Lift
May 2, 2012 3
4. Scala Web Frameworks …
What web frameworks are available for Scala?
Minimalist
• Scalatra
– Leveraged primarily for RESTful services
– Used by LinkedIn for RESTful services supporting mobile platform
• Unfiltered
– Provides a consistent API for handling HTTP requests on various server backends
– Used by Meetup for real-time APIs
Full Stack
• Includes ORM, view and state management
• Play
– MVC Model
– Scala styling for the Java web framework
– Supported framework of Typesafe
• Lift
An Introduction to Lift
May 2, 2012 4
5. Why is Lift Different …
Seven Things
Lift offers seven things that differentiate it from other frameworks
• Lazy loading
– Render page to browser while waiting for computation to complete
– Once complete, render remaining HTML
• Parallel page rendering
– By labeling a snippet parallel, Lift will forward snippet to another thread in a pool of threads
– When all threads are completed, results are combined and page is sent to browser
• Comet and AJAX
– Server push – long poll wait for AJAX response
• Wiring
– Interdependent page elements can be associated to one another
– If a precedent element changes, dependent items are redisplayed on the next HTTP response
• Designer friendly templates
• Wizard
– Define multi-page input screens with field and form level validation
• Security
An Introduction to Lift
May 2, 2012 5
6. Why is Lift Different … Security …
Security
Lift can withstand many of the OWASP Top 10 Security Vulnerabilities
• Injection – Lift’s Mapper and Record libraries properly escape query strings before being sent to the
backing store
• XSS – Lift holds the rendered pages as a DOM until late in the page rendering cycle, allowing it to
automatically HTML escape Strings before sending to the browser
• Session Management – Lift uses the JEE container’s session management and keeps passwords
hashed at all times with per-row salt
• CSRF – Lift uses session-specific bindings between HTML elements and the server-side behaviors
associated with those elements. Bindings cannot be predicted, so cross site requests of session-
specific bindings is impossible
• URL Access – Lift provides declarative rules for access to URLs. Access will be denied to a URL
unless the criteria is met for accessing the specific URL
An Introduction to Lift
May 2, 2012 6
7. In the Wild …
Lift is gaining traction
OpenStudy – Collaborative learning tool used
by MIT and many other top universities.
FourSquare – Message queue in pure Scala.
Website, mobile website and RESTful API
running on Lift.
StackMob– ‘Heroku for Mobile’.
Novell – Pulse, a cloud-based, real-time
collaboration platform for the enterprise.
Utilizes Scala and Lift.
An Introduction to Lift
May 2, 2012 7
8. The Basics of Lift...
What you need to know to get started!
• Getting Up and Running
• Building Blocks
• Page Templates
• Snippets
• Model
• Business Logic
An Introduction to Lift
May 2, 2012 8
9. The Basics of Lift …
Getting up and running
Required
• Java 1.5 or greater
• Scala 2.9.1 distribution
• SBT – Simple Build Tool
• Lift 2.4
Optional
• sbteclipse – create .project for Eclipse
• IDE Plugin
– ScalaIDE (Eclipse – must use Helios)
– Scala Plugin for IntelliJ IDEA
– Scala Plugin for NetBeans
Notes:
1) Installation of Scala and SBT involve expanding compressed file and adding to PATH
2) IDE installation varies by tool; some dependency on IDE release number
3) ScalaIDE officially supported by Typesafe
An Introduction to Lift
May 2, 2012 9
10. The Basics of Lift … Building Blocks…
Building Blocks
An Introduction to Lift
May 2, 2012 10
11. The Basics of Lift … Page Templates…
Page Templates
An Introduction to Lift
May 2, 2012 11
12. The Basics of Lift … Page Templates…
Page Templates
Templates
• A template is a well formed, designer friendly XML document
• Code cannot creep into the document
• Special tags to reference snippets
Example
An Introduction to Lift
May 2, 2012 12
13. The Basics of Lift … Snippets…
Snippets
An Introduction to Lift
May 2, 2012 13
14. The Basics of Lift … Snippets…
Snippets
Snippets
• Any template element in the lift: or l: name space indicates a snippet
• Snippets are functions that transform the invocating element into a new node
• There can be multiple snippets per template
• Snippets are evaluated in the order they are encountered
• Processed serially, unless marked as parallel=true
Example
An Introduction to Lift
May 2, 2012 14
15. The Basics of Lift … Model…
Model and Persistence
An Introduction to Lift
May 2, 2012 15
16. The Basics of Lift … Model…
Model
Model
• The model is the object representation of your persistence store
• Lift includes two options Mapper and Record
• Mapper typically used for relational databases
• Record typically used for NoSQLdatastores
Example
An Introduction to Lift
May 2, 2012 16
17. The Basics of Lift … Business Logic…
Your Business Logic
An Introduction to Lift
May 2, 2012 17
18. The Basics of Lift … Model…
Model
Model
• The model is the object representation of your persistence store
• Lift includes two options Mapper and Record
• Mapper typically used for relational databases
• Record typically used for NoSQLdatastores
Example
An Introduction to Lift
May 2, 2012 18
19. The Basics of Lift … Business Logic…
Your Business Logic
Business Logic
• Business logic resides in the lib directory
Example
An Introduction to Lift
May 2, 2012 19
20. Appendix … Web References ...
Resources
Web Resources
Description Link
Scala http://www.scala-lang.org
SBT – Simple Build Tool http://github.com/harrah/xsbt
ScalaIDE for Eclipse http://scala-ide.org
Scala Plugin for IntelliJ IDEA http://confluence.jetbrains.net/display/SCA/Scala_Plugin+for+IntelliJ+IDEA
Scala Plugin for NetBeans http://wiki.netbeans.org/Scala
Lift http://liftweb.net
An Introduction to Lift
May 2, 2012 20
21. Contact ...
Contact Me!
blemons@credera.com
@brentlemons
slideshare.net/brentlemons
An Introduction to Lift
May 2, 2012 21
Notes de l'éditeur
Open web application security program (owasp)
Think of sbt as being similar to maven or antShow ide and run HowdyBasic