SlideShare a Scribd company logo
Web Information Systems
Web Application Frameworks
Prof. Beat Signer
Department of Computer Science
Vrije Universiteit Brussel

http://www.beatsigner.com
2 December 2005
Web Application Frameworks
A web application framework is a software framework that
is designed to support the development of dynamic websites, web applications and web services and web
resoucres. The framework aims to alleviate the overhead
associated with common activities performed in web
development. For example, many frameworks provide
libraries for database access, template frameworks and
session management, and they often promote code reuse.
[http://en.wikipedia.org/wiki/Web_application_framework]

 There exist dozens of web application frameworks!
October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

2
Web Application Frameworks ...
 A web application framework offers libraries and
tools to deal with web application issues


template libraries, session management, database access
libraries etc.

 Some frameworks also offer an abstraction from the
underlying enabling technologies


e.g. automatic creation of Java Servlets

 Many frameworks follow the Model-View-Controller
(MVC) design pattern



no mix of application logic and view (e.g. not like in JSP)
increases modularity and reusability

 Leads to a faster and more robust development process
October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

3
Model-View-Controller (MVC)
 Model




data (state) and business logic
multiple views can be defined for a single model
when the state of a model changes, its views are notified

 View



renders the data of the model
notifies the controller about changes



October 25, 2013

View

selects view

 Controller


notifies

Controller

processes interactions with the view
transforms view interactions into
operations on the model (state
modification)

modifies
state

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

gets
state

notifies

Model

4
Apache Struts 2
 Free open source framework for creating enterpriseready Java-based web applications

 Action-based MVC 2 (Pull MVC) framework combining
Java Servlets and JSP technology


model
- action (basic building blocks) takes role of the model instead of the controller
(MVC 2) and the view can pull information from the action
- action represented by POJO (Plain Old Java Object) following the JavaBean
paradigm and optional helper classes



view
- template-based approach often based on JavaServer Pages (JSP) in
combination with tag libraries (collection of custom tags)



controller
- based on Java Servlet filter in combination with interceptors

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

5
MVC Model 2 (MVC 2) in Struts 2
View
6

1
Browser

e.g. JSP

Controller

4

Servlet
3

2

5

Model
POJOs
Database

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

6
Apache Struts 2 Architecture
 Servlet request


standard filter chain
- interception of requests and
responses
- reusable modular units
- e.g. XSLT transformation



FilterDispatcher consults
controller (ActionMapper)

 ActionProxy is called if
action has to be executed


consult Configuration-

Manager
 create ActionInvocation
[http://struts.apache.org/2.1.6/docs/big-picture.html]

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

7
Apache Struts 2 Architecture ...



invoke any interceptors
(controller) before Action
Action class updates the
model

 ActionInvocation does
a lookup for the Result



based on Action result code
mappings in struts.xml

 Result execution (view)



often based on JSP template
interceptors in reverse order

 Send response
[http://struts.apache.org/2.1.6/docs/big-picture.html]

October 25, 2013



filter chain

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

8
Apache Struts 2
 ValueStack



temporary objects, Action objects, ...
access from JSP via Object Graph Navigational Language (OGNL)

 Multiple view alternatives


JSP, XSLT, Velocity, ...

 Simplifies web development






convention over configuration
intelligent default values reduce the size of configuration files
fosters modularity and loose coupling (dependency injection)
standard development process for Struts 2 web applications

 Requires no changes to the servlet container

October 25, 2013

regular servlet application
Beat Signer - Department of Computer Science - bsigner@vub.ac.be

9
Apache Struts 2 web.xml
<web-app id="WebApp1" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>be.ac.vub.wise</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
...
</web-app>

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

10
Tag Libraries
 Introduced to encapsulate reusable Java objects in JSP


provide access to methods on objects

 Apache Struts 2 offers four different libraries


HTML
- e.g. buttons, form fields, ...



Template
- tags that are useful for creating dynamic JSP templates



Bean
- e.g. definitions, parameters, ...



Logic
- e.g. comparisons, ...

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

11
Apache Struts 2 Hello World Example
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1><s:property value="message"/></h1>
<p>Time: <b><s:property value="currentTime" /></b></p>
</body>
</html>

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

HelloWorld.jsp

12
Apache Struts 2 Hello World Example ...
package be.ac.vub.wise;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Date;
public class HelloWorldImpl extends ActionSupport {
public static final String MESSAGE = "Hello World!";
public static final String SUCCESS = "success";
private String message;
public String execute() throws Exception {
setMessage(MESSAGE);
return SUCCESS;
}

public void setMessage(String message){
this.message = message;
}
public String getMessage() {
return message;
}
public String getCurrentTime(){
return new Date().toString();
}
}

October 25, 2013

HelloWorldImpl.java
Beat Signer - Department of Computer Science - bsigner@vub.ac.be

13
Apache Struts 2 Hello World Example ...
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<package name="be.ac.vub.wise" namespace="/wise" extends="struts-default">
<action name="HelloWorld" class="be.ac.vub.wise.HelloWorldImpl">
<result>/pages/HelloWorld.jsp</result>
</action>
...
</package>
...
</struts>

struts.xml

 Execute the Hello World example by sending request to


October 25, 2013

http://localhost:8080/wise/HelloWorld.action

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

14
Spring Framework
 Java application framework
 Various extensions for web applications
 Modules










October 25, 2013

model-view-controller
data access
inversion of control container
convention-over-configuration
remote access framework
transaction management
authentication and authorisation
…

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

15
Apache Flex
 Software development kit for cross-platform
Rich Internet Applications (RIAs) based on Adobe Flash

 Main components



Adobe Flash Player runtime environment
Flex SDK (free)
- compiler and debugger, the Flex framework and user interface components



Adobe Flash Builder (commercial)
- Eclipse plug-in with MXML compiler and debugger

 Separation of user interface and data


user interface described in MXML markup language in
combination with ActionScript
- compiled into flash executable (SWF flash movie)

- better cross-browser compatibility than AJAX
October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

16
Apache Flex ...
 Flex framework offers various actions


e.g. HTTPRequest component

 Flex applications can also be deployed as desktop
applications via Adobe AIR (Adobe Integrated Runtime)
<?xml version="1.0" encoding="UTF-8" ?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function sayHello():void {
Alert.show("Hello " + user.text);
}
]]>
</mx:Script>
<mx:Label fontSize="12" text="Name: " />
<mx:TextInput id="user" />
<mx:Button label="Go" click="sayHello()" />
</mx:Application>

October 25, 2013

HelloWorld.mxml

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

17
Microsoft Silverlight
 Microsoft's platform for Rich Internet Applications


competitor to Adobe Flash

 Runtime requires a browser plug-in



Internet Explorer, Firefox, Safari and Google Chrome
Silverlight Core Common Language Runtime (CoreCLR)

 A Silverlight application consists of


CreateSilverlight.js and Silverlight.js
- initialise the browser plug-in



user interface described in the Extensible Application Markup
Language (XAML)
- XAML files are not compiled  indexable by search engines



October 25, 2013

code-behind file containing the program logic
Beat Signer - Department of Computer Science - bsigner@vub.ac.be

18
Microsoft Silverlight ...
 Programming based on a subset of the .NET Framework
 Silverlight introduces a set of features including


LocalConnection API
- asynchronous messaging between multiple applications on the same machine



out-of-browser experiences
- locally installed application that runs out-of-the-browser (OOB apps)
- cross-platform with Windows/Mac



microphone and Web cam support

 Two types of Silverlight web requests


WebClient class
- OpenReadAsync (for streaming), DownloadStringAsync as well as uploads



WebRequest
- register an asynchronous callback handler (based on HttpWebRequest)

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

19
Moonlight
 Moonlight is an open source implementation of
Silverlight (mainly for Linux) that is developed as
part of the Mono project


October 25, 2013

development was abandoned in December 2011

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

20
OpenLaszlo
 Open source RIA platform
 Two main components


LZX programming language
- XML and JavaScript
- similar to MXML and XAML



OpenLaszlo Server

 The Open Laszlo Server compiles LZX applications into
different possible runtime components




October 25, 2013

Java Servlets
binary SWF files
DHTML (HTML, DOM, JavaScript and CSS)

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

21
Ruby on Rails (RoR)
 Open source web application framework
 Combination of


dynamic, reflective, object-oriented programming language Ruby
- combination of Perl-inspired syntax with "Smalltalk features"



web application framework Rails

 Based on MVC architectural pattern


structure of a webpage separated from its functionality via the
unobtrusive JavaScript technique

 The scaffolding feature offered by Rails can
automatically generate some of the models and views
that are required for a website

October 25, 2013

developer has to run an external command to generate the code
Beat Signer - Department of Computer Science - bsigner@vub.ac.be

22
Ruby on Rails (RoR) ...
 Ruby on Rails Philosophy


Don't Repeat Yourself (DRY)
- information should not be stored redundantly (e.g. do not store information in
configuration files if the data can be automatically derived by the system)



Convention over Configuration (CoC)
- programmer only has to specify unconventional application settings
- naming conventions to automatically map classes to database tables (e.g. by
default a 'Sale' model class is mapped to the 'sales' database table)

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

23
Video: Ruby on Rails

http://media.rubyonrails.org/video/rails_blog_2.mov
October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

24
Yii Framework
 PHP framework for the development of Web 2.0
applications that offers a rich set of features











October 25, 2013

AJAX-enabled widgets
web service integration
authentication and authorisation
flexible presentation via skins and themes
Data Access Objects (DAO) interface to transparently access
different database management systems
integration with the jQuery JavaScript library
layered caching
...

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

25
Zend
 Open source PHP framework offering various features









October 25, 2013

MVC architectural pattern
loosely coupled components
object orientation
flexible caching
Simple Cloud API
features to deal with emails (POP3, IMAP4, …)
…

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

26
CakePHP
 Open source PHP web application framework










October 25, 2013

MVC architectural pattern
rapid prototyping via scaffolding
authentication
localisation
session management
caching
validation
…

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

27
Node.js
 Server-side JavaScript


handling post/get requests, database, sessions, …

 Write your entire app in one language
 Built-in web server (no need for Apache, Tomcat, etc.)
 High modularity


plug-ins can be added for desired server-side functionality

 Other more powerful frameworks such as Express.js
build on top of Node.js

October 25, 2013

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

28
Django
 Open source Python web application framework









October 25, 2013

MVC architectural pattern
don't repeat yourself (DRY)
object-relational mapper
integrated lightweight web server
localisation
caching
...

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

29
Web Content Management Systems
 Content management systems that focus on web content
 Main functionality


data storage and publishing, user management (including access
rights), versioning, workflows

 Offline (create static webpages), online (create
webpages on the fly) and hybrid systems

 Often some kind of server-side caching
 Suited for non-technical users since the underlying
technology is normally completely hidden

 Web CMS Examples

October 25, 2013

Joomla, Drupal, ...
Beat Signer - Department of Computer Science - bsigner@vub.ac.be

30
Exercise 5
 Web Application Frameworks


October 25, 2013

implementation of a Struts 2 application

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

31
References
 Struts 2 Quick Guide


http://www.tutorialspoint.com/struts_2/struts_quick_g
uide.htm

 Apache Struts 2


http://struts.apache.org/2.x/

 Ian Roughley, Struts 2


http://refcardz.dzone.com/refcardz/struts2

 Spring Framework


http://www.springsource.org

 Apache Flex


October 25, 2013

http://flex.org

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

32
References ...
 Microsoft Silverlight
http://www.microsoft.com/silverlight/
 http://silverlight.net/learn/videos/silverlightvideos/net-ria-services-intro/


 Open Laszlo


http://www.openlaszlo.org

 Ruby on Rails Video: Creating a Weblog in 15 Minutes


http://www.youtube.com/watch?v=tUH1hewXnC0

 Yii Framework


http://www.yiiframework.com

 Zend Framework

October 25, 2013

http://framework.zend.com
Beat Signer - Department of Computer Science - bsigner@vub.ac.be

33
References ...
 CakePHP


http://cakephp.org

 Node.js


http://nodejs.org

 Django


https://www.djangoproject.com

 Comparision of Web Application Frameworks


October 25, 2013

http://en.wikipedia.org/wiki/Comparison_of_web_
application_frameworks

Beat Signer - Department of Computer Science - bsigner@vub.ac.be

34
Next Lecture
Web 2.0 Basics

2 December 2005

More Related Content

What's hot (18)

Struts introduction
Struts introductionStruts introduction
Struts introduction
Muthukumaran Subramanian
 
Introduction to j2 ee frameworks
Introduction to j2 ee frameworksIntroduction to j2 ee frameworks
Introduction to j2 ee frameworks
Mukesh Kumar
 
Spring Basics
Spring BasicsSpring Basics
Spring Basics
Emprovise
 
Introduction to ejb and struts framework
Introduction to ejb and struts frameworkIntroduction to ejb and struts framework
Introduction to ejb and struts framework
s4al_com
 
Struts Basics
Struts BasicsStruts Basics
Struts Basics
Harjinder Singh
 
Struts 1
Struts 1Struts 1
Struts 1
Lalit Garg
 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVC
John Lewis
 
Jsp with mvc
Jsp with mvcJsp with mvc
Jsp with mvc
vamsitricks
 
Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC
Naresh Chintalcheru
 
Step by Step Guide for building a simple Struts Application
Step by Step Guide for building a simple Struts ApplicationStep by Step Guide for building a simple Struts Application
Step by Step Guide for building a simple Struts Application
elliando dias
 
Rich Assad Resume
Rich Assad ResumeRich Assad Resume
Rich Assad Resume
Richard Assad
 
JSF basics
JSF basicsJSF basics
JSF basics
airbo
 
Next stop: Spring 4
Next stop: Spring 4Next stop: Spring 4
Next stop: Spring 4
Oleg Tsal-Tsalko
 
Spring 3 MVC CodeMash 2009
Spring 3 MVC   CodeMash 2009Spring 3 MVC   CodeMash 2009
Spring 3 MVC CodeMash 2009
kensipe
 
Untrusted JS Detection with Chrome Dev Tools and static code analysis
Untrusted JS Detection with Chrome Dev Tools and static code analysisUntrusted JS Detection with Chrome Dev Tools and static code analysis
Untrusted JS Detection with Chrome Dev Tools and static code analysis
Enrico Micco
 
Spring intro classes-in-mumbai
Spring intro classes-in-mumbaiSpring intro classes-in-mumbai
Spring intro classes-in-mumbai
vibrantuser
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
Mohit Gupta
 
Session 1
Session 1Session 1
Session 1
Asif Atick
 
Introduction to j2 ee frameworks
Introduction to j2 ee frameworksIntroduction to j2 ee frameworks
Introduction to j2 ee frameworks
Mukesh Kumar
 
Spring Basics
Spring BasicsSpring Basics
Spring Basics
Emprovise
 
Introduction to ejb and struts framework
Introduction to ejb and struts frameworkIntroduction to ejb and struts framework
Introduction to ejb and struts framework
s4al_com
 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVC
John Lewis
 
Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC Design & Development of Web Applications using SpringMVC
Design & Development of Web Applications using SpringMVC
Naresh Chintalcheru
 
Step by Step Guide for building a simple Struts Application
Step by Step Guide for building a simple Struts ApplicationStep by Step Guide for building a simple Struts Application
Step by Step Guide for building a simple Struts Application
elliando dias
 
JSF basics
JSF basicsJSF basics
JSF basics
airbo
 
Spring 3 MVC CodeMash 2009
Spring 3 MVC   CodeMash 2009Spring 3 MVC   CodeMash 2009
Spring 3 MVC CodeMash 2009
kensipe
 
Untrusted JS Detection with Chrome Dev Tools and static code analysis
Untrusted JS Detection with Chrome Dev Tools and static code analysisUntrusted JS Detection with Chrome Dev Tools and static code analysis
Untrusted JS Detection with Chrome Dev Tools and static code analysis
Enrico Micco
 
Spring intro classes-in-mumbai
Spring intro classes-in-mumbaiSpring intro classes-in-mumbai
Spring intro classes-in-mumbai
vibrantuser
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
Mohit Gupta
 

Viewers also liked (15)

Zebus - Pitfalls of a P2P service bus
Zebus - Pitfalls of a P2P service busZebus - Pitfalls of a P2P service bus
Zebus - Pitfalls of a P2P service bus
Kévin LOVATO
 
Frasesss
FrasesssFrasesss
Frasesss
carmencitaelizabeth
 
Build your own Service Bus V2
Build your own Service Bus V2Build your own Service Bus V2
Build your own Service Bus V2
Kévin LOVATO
 
5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa
Najihah Nazarudin
 
Big Mike's Photo Voice Project
Big Mike's Photo Voice ProjectBig Mike's Photo Voice Project
Big Mike's Photo Voice Project
murphy7059
 
Big Mike's Photo Voice Project
Big Mike's Photo Voice ProjectBig Mike's Photo Voice Project
Big Mike's Photo Voice Project
murphy7059
 
QI MARIA HERRAMIENTAS
QI MARIA HERRAMIENTASQI MARIA HERRAMIENTAS
QI MARIA HERRAMIENTAS
MariaChanPat
 
5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa
Najihah Nazarudin
 
Pengumuman tkb cpns_2014
Pengumuman tkb cpns_2014Pengumuman tkb cpns_2014
Pengumuman tkb cpns_2014
Warnet Akai
 
Observer, a "real life" time series application
Observer, a "real life" time series applicationObserver, a "real life" time series application
Observer, a "real life" time series application
Kévin LOVATO
 
Building your own Distributed System The easy way - Cassandra Summit EU 2014
Building your own Distributed System The easy way - Cassandra Summit EU 2014Building your own Distributed System The easy way - Cassandra Summit EU 2014
Building your own Distributed System The easy way - Cassandra Summit EU 2014
Kévin LOVATO
 
Doughnut Radio Presentation
Doughnut Radio Presentation Doughnut Radio Presentation
Doughnut Radio Presentation
Zacbowenmedia
 
Ben keynote 5
Ben keynote 5Ben keynote 5
Ben keynote 5
Ben Golub
 
Zebus - Pitfalls of a P2P service bus
Zebus - Pitfalls of a P2P service busZebus - Pitfalls of a P2P service bus
Zebus - Pitfalls of a P2P service bus
Kévin LOVATO
 
Build your own Service Bus V2
Build your own Service Bus V2Build your own Service Bus V2
Build your own Service Bus V2
Kévin LOVATO
 
5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa
Najihah Nazarudin
 
Big Mike's Photo Voice Project
Big Mike's Photo Voice ProjectBig Mike's Photo Voice Project
Big Mike's Photo Voice Project
murphy7059
 
Big Mike's Photo Voice Project
Big Mike's Photo Voice ProjectBig Mike's Photo Voice Project
Big Mike's Photo Voice Project
murphy7059
 
QI MARIA HERRAMIENTAS
QI MARIA HERRAMIENTASQI MARIA HERRAMIENTAS
QI MARIA HERRAMIENTAS
MariaChanPat
 
5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa5 faktor yang mempengaruhi strategi pembelajaran bahasa
5 faktor yang mempengaruhi strategi pembelajaran bahasa
Najihah Nazarudin
 
Pengumuman tkb cpns_2014
Pengumuman tkb cpns_2014Pengumuman tkb cpns_2014
Pengumuman tkb cpns_2014
Warnet Akai
 
Observer, a "real life" time series application
Observer, a "real life" time series applicationObserver, a "real life" time series application
Observer, a "real life" time series application
Kévin LOVATO
 
Building your own Distributed System The easy way - Cassandra Summit EU 2014
Building your own Distributed System The easy way - Cassandra Summit EU 2014Building your own Distributed System The easy way - Cassandra Summit EU 2014
Building your own Distributed System The easy way - Cassandra Summit EU 2014
Kévin LOVATO
 
Doughnut Radio Presentation
Doughnut Radio Presentation Doughnut Radio Presentation
Doughnut Radio Presentation
Zacbowenmedia
 
Ben keynote 5
Ben keynote 5Ben keynote 5
Ben keynote 5
Ben Golub
 

Similar to Lecture 05 web_applicationframeworks (20)

Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Beat Signer
 
Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)
Beat Signer
 
Struts
StrutsStruts
Struts
s4al_com
 
Apachecon 2002 Struts
Apachecon 2002 StrutsApachecon 2002 Struts
Apachecon 2002 Struts
yesprakash
 
struts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptxstruts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptx
ozakamal8
 
struts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptxstruts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptx
ozakamal8
 
Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)
Beat Signer
 
Struts Ppt 1
Struts Ppt 1Struts Ppt 1
Struts Ppt 1
JayaPrakash.m
 
Struts Interview Questions
Struts Interview QuestionsStruts Interview Questions
Struts Interview Questions
jbashask
 
MVC - Introduction
MVC - IntroductionMVC - Introduction
MVC - Introduction
Sudhakar Sharma
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentation
Rasel Khan
 
Struts
StrutsStruts
Struts
Ranjan Kumar
 
Skillwise Struts.x
Skillwise Struts.xSkillwise Struts.x
Skillwise Struts.x
Skillwise Group
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and Silverlight
Peter Gfader
 
IRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHPIRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHP
IRJET Journal
 
D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworks
Sunil Patil
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source Frameworks
Sunil Patil
 
Ria Mvc
Ria MvcRia Mvc
Ria Mvc
JIE GAO
 
MVC 6 Introduction
MVC 6 IntroductionMVC 6 Introduction
MVC 6 Introduction
Sudhakar Sharma
 
MVC
MVCMVC
MVC
akshin
 
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Beat Signer
 
Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)
Beat Signer
 
Apachecon 2002 Struts
Apachecon 2002 StrutsApachecon 2002 Struts
Apachecon 2002 Struts
yesprakash
 
struts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptxstruts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptx
ozakamal8
 
struts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptxstruts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptx
ozakamal8
 
Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)Web Application Frameworks - Web Technologies (1019888BNR)
Web Application Frameworks - Web Technologies (1019888BNR)
Beat Signer
 
Struts Interview Questions
Struts Interview QuestionsStruts Interview Questions
Struts Interview Questions
jbashask
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentation
Rasel Khan
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and Silverlight
Peter Gfader
 
IRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHPIRJET- Lightweight MVC Framework in PHP
IRJET- Lightweight MVC Framework in PHP
IRJET Journal
 
D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworks
Sunil Patil
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source Frameworks
Sunil Patil
 

Recently uploaded (20)

Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 

Lecture 05 web_applicationframeworks

  • 1. Web Information Systems Web Application Frameworks Prof. Beat Signer Department of Computer Science Vrije Universiteit Brussel http://www.beatsigner.com 2 December 2005
  • 2. Web Application Frameworks A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services and web resoucres. The framework aims to alleviate the overhead associated with common activities performed in web development. For example, many frameworks provide libraries for database access, template frameworks and session management, and they often promote code reuse. [http://en.wikipedia.org/wiki/Web_application_framework]  There exist dozens of web application frameworks! October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 2
  • 3. Web Application Frameworks ...  A web application framework offers libraries and tools to deal with web application issues  template libraries, session management, database access libraries etc.  Some frameworks also offer an abstraction from the underlying enabling technologies  e.g. automatic creation of Java Servlets  Many frameworks follow the Model-View-Controller (MVC) design pattern   no mix of application logic and view (e.g. not like in JSP) increases modularity and reusability  Leads to a faster and more robust development process October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 3
  • 4. Model-View-Controller (MVC)  Model    data (state) and business logic multiple views can be defined for a single model when the state of a model changes, its views are notified  View   renders the data of the model notifies the controller about changes  October 25, 2013 View selects view  Controller  notifies Controller processes interactions with the view transforms view interactions into operations on the model (state modification) modifies state Beat Signer - Department of Computer Science - [email protected] gets state notifies Model 4
  • 5. Apache Struts 2  Free open source framework for creating enterpriseready Java-based web applications  Action-based MVC 2 (Pull MVC) framework combining Java Servlets and JSP technology  model - action (basic building blocks) takes role of the model instead of the controller (MVC 2) and the view can pull information from the action - action represented by POJO (Plain Old Java Object) following the JavaBean paradigm and optional helper classes  view - template-based approach often based on JavaServer Pages (JSP) in combination with tag libraries (collection of custom tags)  controller - based on Java Servlet filter in combination with interceptors October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 5
  • 6. MVC Model 2 (MVC 2) in Struts 2 View 6 1 Browser e.g. JSP Controller 4 Servlet 3 2 5 Model POJOs Database October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 6
  • 7. Apache Struts 2 Architecture  Servlet request  standard filter chain - interception of requests and responses - reusable modular units - e.g. XSLT transformation  FilterDispatcher consults controller (ActionMapper)  ActionProxy is called if action has to be executed  consult Configuration- Manager  create ActionInvocation [http://struts.apache.org/2.1.6/docs/big-picture.html] October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 7
  • 8. Apache Struts 2 Architecture ...   invoke any interceptors (controller) before Action Action class updates the model  ActionInvocation does a lookup for the Result   based on Action result code mappings in struts.xml  Result execution (view)   often based on JSP template interceptors in reverse order  Send response [http://struts.apache.org/2.1.6/docs/big-picture.html] October 25, 2013  filter chain Beat Signer - Department of Computer Science - [email protected] 8
  • 9. Apache Struts 2  ValueStack   temporary objects, Action objects, ... access from JSP via Object Graph Navigational Language (OGNL)  Multiple view alternatives  JSP, XSLT, Velocity, ...  Simplifies web development     convention over configuration intelligent default values reduce the size of configuration files fosters modularity and loose coupling (dependency injection) standard development process for Struts 2 web applications  Requires no changes to the servlet container  October 25, 2013 regular servlet application Beat Signer - Department of Computer Science - [email protected] 9
  • 10. Apache Struts 2 web.xml <web-app id="WebApp1" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>be.ac.vub.wise</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <taglib> <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> ... </web-app> October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 10
  • 11. Tag Libraries  Introduced to encapsulate reusable Java objects in JSP  provide access to methods on objects  Apache Struts 2 offers four different libraries  HTML - e.g. buttons, form fields, ...  Template - tags that are useful for creating dynamic JSP templates  Bean - e.g. definitions, parameters, ...  Logic - e.g. comparisons, ... October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 11
  • 12. Apache Struts 2 Hello World Example <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Hello World</title> </head> <body> <h1><s:property value="message"/></h1> <p>Time: <b><s:property value="currentTime" /></b></p> </body> </html> October 25, 2013 Beat Signer - Department of Computer Science - [email protected] HelloWorld.jsp 12
  • 13. Apache Struts 2 Hello World Example ... package be.ac.vub.wise; import com.opensymphony.xwork2.ActionSupport; import java.util.Date; public class HelloWorldImpl extends ActionSupport { public static final String MESSAGE = "Hello World!"; public static final String SUCCESS = "success"; private String message; public String execute() throws Exception { setMessage(MESSAGE); return SUCCESS; } public void setMessage(String message){ this.message = message; } public String getMessage() { return message; } public String getCurrentTime(){ return new Date().toString(); } } October 25, 2013 HelloWorldImpl.java Beat Signer - Department of Computer Science - [email protected] 13
  • 14. Apache Struts 2 Hello World Example ... <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false"/> <constant name="struts.devMode" value="true"/> <package name="be.ac.vub.wise" namespace="/wise" extends="struts-default"> <action name="HelloWorld" class="be.ac.vub.wise.HelloWorldImpl"> <result>/pages/HelloWorld.jsp</result> </action> ... </package> ... </struts> struts.xml  Execute the Hello World example by sending request to  October 25, 2013 http://localhost:8080/wise/HelloWorld.action Beat Signer - Department of Computer Science - [email protected] 14
  • 15. Spring Framework  Java application framework  Various extensions for web applications  Modules         October 25, 2013 model-view-controller data access inversion of control container convention-over-configuration remote access framework transaction management authentication and authorisation … Beat Signer - Department of Computer Science - [email protected] 15
  • 16. Apache Flex  Software development kit for cross-platform Rich Internet Applications (RIAs) based on Adobe Flash  Main components   Adobe Flash Player runtime environment Flex SDK (free) - compiler and debugger, the Flex framework and user interface components  Adobe Flash Builder (commercial) - Eclipse plug-in with MXML compiler and debugger  Separation of user interface and data  user interface described in MXML markup language in combination with ActionScript - compiled into flash executable (SWF flash movie) - better cross-browser compatibility than AJAX October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 16
  • 17. Apache Flex ...  Flex framework offers various actions  e.g. HTTPRequest component  Flex applications can also be deployed as desktop applications via Adobe AIR (Adobe Integrated Runtime) <?xml version="1.0" encoding="UTF-8" ?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal"> <mx:Script> <![CDATA[ import mx.controls.Alert; private function sayHello():void { Alert.show("Hello " + user.text); } ]]> </mx:Script> <mx:Label fontSize="12" text="Name: " /> <mx:TextInput id="user" /> <mx:Button label="Go" click="sayHello()" /> </mx:Application> October 25, 2013 HelloWorld.mxml Beat Signer - Department of Computer Science - [email protected] 17
  • 18. Microsoft Silverlight  Microsoft's platform for Rich Internet Applications  competitor to Adobe Flash  Runtime requires a browser plug-in   Internet Explorer, Firefox, Safari and Google Chrome Silverlight Core Common Language Runtime (CoreCLR)  A Silverlight application consists of  CreateSilverlight.js and Silverlight.js - initialise the browser plug-in  user interface described in the Extensible Application Markup Language (XAML) - XAML files are not compiled  indexable by search engines  October 25, 2013 code-behind file containing the program logic Beat Signer - Department of Computer Science - [email protected] 18
  • 19. Microsoft Silverlight ...  Programming based on a subset of the .NET Framework  Silverlight introduces a set of features including  LocalConnection API - asynchronous messaging between multiple applications on the same machine  out-of-browser experiences - locally installed application that runs out-of-the-browser (OOB apps) - cross-platform with Windows/Mac  microphone and Web cam support  Two types of Silverlight web requests  WebClient class - OpenReadAsync (for streaming), DownloadStringAsync as well as uploads  WebRequest - register an asynchronous callback handler (based on HttpWebRequest) October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 19
  • 20. Moonlight  Moonlight is an open source implementation of Silverlight (mainly for Linux) that is developed as part of the Mono project  October 25, 2013 development was abandoned in December 2011 Beat Signer - Department of Computer Science - [email protected] 20
  • 21. OpenLaszlo  Open source RIA platform  Two main components  LZX programming language - XML and JavaScript - similar to MXML and XAML  OpenLaszlo Server  The Open Laszlo Server compiles LZX applications into different possible runtime components    October 25, 2013 Java Servlets binary SWF files DHTML (HTML, DOM, JavaScript and CSS) Beat Signer - Department of Computer Science - [email protected] 21
  • 22. Ruby on Rails (RoR)  Open source web application framework  Combination of  dynamic, reflective, object-oriented programming language Ruby - combination of Perl-inspired syntax with "Smalltalk features"  web application framework Rails  Based on MVC architectural pattern  structure of a webpage separated from its functionality via the unobtrusive JavaScript technique  The scaffolding feature offered by Rails can automatically generate some of the models and views that are required for a website  October 25, 2013 developer has to run an external command to generate the code Beat Signer - Department of Computer Science - [email protected] 22
  • 23. Ruby on Rails (RoR) ...  Ruby on Rails Philosophy  Don't Repeat Yourself (DRY) - information should not be stored redundantly (e.g. do not store information in configuration files if the data can be automatically derived by the system)  Convention over Configuration (CoC) - programmer only has to specify unconventional application settings - naming conventions to automatically map classes to database tables (e.g. by default a 'Sale' model class is mapped to the 'sales' database table) October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 23
  • 24. Video: Ruby on Rails http://media.rubyonrails.org/video/rails_blog_2.mov October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 24
  • 25. Yii Framework  PHP framework for the development of Web 2.0 applications that offers a rich set of features         October 25, 2013 AJAX-enabled widgets web service integration authentication and authorisation flexible presentation via skins and themes Data Access Objects (DAO) interface to transparently access different database management systems integration with the jQuery JavaScript library layered caching ... Beat Signer - Department of Computer Science - [email protected] 25
  • 26. Zend  Open source PHP framework offering various features        October 25, 2013 MVC architectural pattern loosely coupled components object orientation flexible caching Simple Cloud API features to deal with emails (POP3, IMAP4, …) … Beat Signer - Department of Computer Science - [email protected] 26
  • 27. CakePHP  Open source PHP web application framework         October 25, 2013 MVC architectural pattern rapid prototyping via scaffolding authentication localisation session management caching validation … Beat Signer - Department of Computer Science - [email protected] 27
  • 28. Node.js  Server-side JavaScript  handling post/get requests, database, sessions, …  Write your entire app in one language  Built-in web server (no need for Apache, Tomcat, etc.)  High modularity  plug-ins can be added for desired server-side functionality  Other more powerful frameworks such as Express.js build on top of Node.js October 25, 2013 Beat Signer - Department of Computer Science - [email protected] 28
  • 29. Django  Open source Python web application framework        October 25, 2013 MVC architectural pattern don't repeat yourself (DRY) object-relational mapper integrated lightweight web server localisation caching ... Beat Signer - Department of Computer Science - [email protected] 29
  • 30. Web Content Management Systems  Content management systems that focus on web content  Main functionality  data storage and publishing, user management (including access rights), versioning, workflows  Offline (create static webpages), online (create webpages on the fly) and hybrid systems  Often some kind of server-side caching  Suited for non-technical users since the underlying technology is normally completely hidden  Web CMS Examples  October 25, 2013 Joomla, Drupal, ... Beat Signer - Department of Computer Science - [email protected] 30
  • 31. Exercise 5  Web Application Frameworks  October 25, 2013 implementation of a Struts 2 application Beat Signer - Department of Computer Science - [email protected] 31
  • 32. References  Struts 2 Quick Guide  http://www.tutorialspoint.com/struts_2/struts_quick_g uide.htm  Apache Struts 2  http://struts.apache.org/2.x/  Ian Roughley, Struts 2  http://refcardz.dzone.com/refcardz/struts2  Spring Framework  http://www.springsource.org  Apache Flex  October 25, 2013 http://flex.org Beat Signer - Department of Computer Science - [email protected] 32
  • 33. References ...  Microsoft Silverlight http://www.microsoft.com/silverlight/  http://silverlight.net/learn/videos/silverlightvideos/net-ria-services-intro/   Open Laszlo  http://www.openlaszlo.org  Ruby on Rails Video: Creating a Weblog in 15 Minutes  http://www.youtube.com/watch?v=tUH1hewXnC0  Yii Framework  http://www.yiiframework.com  Zend Framework  October 25, 2013 http://framework.zend.com Beat Signer - Department of Computer Science - [email protected] 33
  • 34. References ...  CakePHP  http://cakephp.org  Node.js  http://nodejs.org  Django  https://www.djangoproject.com  Comparision of Web Application Frameworks  October 25, 2013 http://en.wikipedia.org/wiki/Comparison_of_web_ application_frameworks Beat Signer - Department of Computer Science - [email protected] 34
  • 35. Next Lecture Web 2.0 Basics 2 December 2005