Web Applications Basics

groundcombInternet και Εφαρμογές Web

31 Οκτ 2013 (πριν από 3 χρόνια και 8 μήνες)

77 εμφανίσεις

Web Applications Basics

Introduction to Web


Web features


Clent/Server


HTTP


HyperText Markup Language


URL addresses



Web server

-

a computer program that is
responsible for accepting HTTP requests from
clients and serving them HTTP responses



Web

application

-

a dynamic extension of a web
or application server

Web Applications & Components


Two types of web applications
:


Presentation
-
oriented (HTML, XML pages)


Service
-
oriented (Web services)



Web components

provide the dynamic
extension capabilities for a web server:


Java servlets


JSP pages


Web service endpoints

Web Application Interaction


[
client
]

sends an HTTP request to the web server



[
web server
]

HTTP
request


HTTPServletRequest



This object is delivered to a web component, which can
interact with JavaBeans or a DB to generate dynamic
content



[
web component
]

generate
s

an
HTTPServletResponse

or
pass the request to another web component



[
web server
]

HTTPServlet
Response


HTTP response



[
web server
]

returns
HTTP response

to the client

Web Application Interaction

Web Components


Servlets

-

Java classes that dynamically process
requests and construct responses



JSP pages

-

text
-
based documents that execute as
servlets but allow a more natural approach to
creating static content



Appropriate usage


Servlets

-

service
-
oriented applications, control
functions


JSP

-

generating text
-
based markup



(HTML, SVG, WML, XML)

Java Web Application Technologies


Java Servlet technology is the foundation of all
the web application technologies

Web Containers


Web components are supported by the services of
a runtime platform called a
web container



In J2EE, a web container "implements the web
component contract of the J2EE architecture“



Web container services
:



request dispatching


security


concurrency


life
-
cycle management


naming, transactions, email APIs

Web Container Examples


Non
-
commercial


Apache Tomcat


Jetty



Commertial


Sun Java System Application Server


BEA WebLogic Server


Oracle Application Server


WebSphere



Open source


JBoss

Deployment


Web components have to be installed or
deployed

to the web container



Aspects of web application behaviour can
be configured
during

application
deployment



The configuration information is
maintained in a XML file called a web
application
deployment descriptor

Web Application Development


A web application consists of
:


Web components


Static resource files (such as images)


Helper classes and libraries



The process for creating and running a web
application is different from that of
traditional stand
-
alone Java classes

Development Cycle

1.
Develop the web component code

2.
Develop the web application deployment
descriptor

3.
Compile the web application components and
helper classes referenced by

the components

4.
Optionally package the application into a
deployable unit

5.
Deploy the application into a web container

6.
Access a URL that references the web
application

Web Modules


According to Java EE architecture and Java
Servlet Specification:



W
eb components and static web content files
such as

images are called
web resources



A
web module
is the smallest deployable and

usable unit of web resources



Web
module corresponds to a
web

application



A web module has a specific structure

Web Module Structure


The top
-
level directory


of a web module

is the


document root
of


the application



The document root contains:


JSP pages


client
-
side classes


client
-
side archives


static web resources

Web Module Structure


The document root contains


a subdirectory /WEB
-
INF/



web.xml
: web application


deployment descriptor



lib
: JAR archives of


libraries called by


server
-
side classes

Web Module Structure


classes
: server
-
side classes:


servlets


utility classes


JavaBeans components



tags
: tag files, which are


implementations of


tag libraries

Configuring Web Applications


Web applications are configured via
/WEB
-
INF/web.xml

file



Configuration options:


Map URLs to
w
eb
c
omponents


Set
i
nitialization
p
arameters


Map
e
rrors to
e
rror
s
creens



Declare
w
elcome
f
iles


Declare
r
esource
r
eferences

Mapping URLs to Web Components


When a request is received by the web container
it must determine which web component should
handle the request


Need

to add a
servlet definition

and a
servlet
mapping

for each servlet

to web.xml file

<servlet>


<servlet
-
name>
ServletName
</servlet
-
name>


<servlet
-
class>
ServletClass
</servlet
-
class>

</servlet>

<servlet
-
mapping>


<servlet
-
name>
ServletName
</servlet
-
name>


<url
-
pattern>
/
path
</url
-
pattern>

</servlet
-
mapping>

Initialization Parameters


It's possible to pass initialization parameters to the context
or to a web component



Context parameters:





<context
-
param>




<param
-
name>name</param
-
name>




<param
-
value>value</param
-
value>




</context
-
param>



Servlet parameters (within servlet definition):

<init
-
param>


<param
-
name>name</param
-
name>


<param
-
value>value</param
-
value>

</init
-
param>

Handling Errors


Web container generates default error page



You can specify custom default page to be
displayed instead



Steps to handle errors


Create appropriate error html pages for error
conditions


Modify the web.xml accordingly

Example: Setting Error Pages

<error
-
page>


<exception
-
type>



exception.BookNotFoundException


</exception
-
type>


<location>/errorpage1.html</location>

</error
-
page>

<error
-
page>


<exception
-
type>



exception.BooksNotFoundException


</exception
-
type>


<location>/errorpage2.html</location>

</error
-
page>

<error
-
page>


<exception
-
type>



exception.OrderException


</exception
-
type>


<location>/errorpage3.html</location>

</error
-
page>

Example
:
web.xml

<?xml version="1.0" encoding="ISO
-
8859
-
1"?>

<!DOCTYPE web
-
app

PUBLIC "
-
//Sun Microsystems, Inc.//DTD Web Application 2.3//EN“

"http://java.sun.com/dtd/web
-
app_2_3.dtd">

<web
-
app>


<display
-
name>
Your team project name
</display
-
name>



<description>
Team N servlets
</description>



<context
-
param>



<param
-
name>
name_of_context_initialization_parameter
</param
-
name>



<param
-
value>
value_of_context_initializtion_parameter
</param
-
value>


</context
-
param>


<servlet>



<servlet
-
name>
YourServlet
</servlet
-
name>



<servlet
-
class>
YourServletClass
</servlet
-
class>



</servlet>



<servlet
-
mapping>



<servlet
-
name>
YourServlet
</servlet
-
name>



<url
-
pattern
>/YourServlet
</url
-
pattern>



</servlet
-
mapping>

</web
-
app>

WAR Files


A web module can be deployed as an
unpacked file structure or can be packaged
in a JAR file known as a
W
eb
A
rchive
F
ile



WAR file can be created by:


executing
jar

command


using Ant target


using IDE (Eclipse for instance)


using Maven

Setting a Context Root


A
context root

identifies a web application
in a Java EE server



The server is responsible for mapping
URL’s that start with a specific prefix to
the location of a web application



Usually this is done with a web server
configuration file

Using Maven & Jetty


A convenient way to develop, build, deploy
and run Web application is by using:




Maven build tool







http://maven.apache.org/



Jetty web server







http://www.mortbay.org/

Creating Directory Structure


Maven 2 supports the notion of creating a
complete project template with a simple
command



To create Web project template need to use
maven
-
archetype
-
webapp

archetype

mvn archetype:create


-
DgroupId=com.maven2example


-
DartifactId=maven2example_webapp


-
DarchetypeArtifactId=
maven
-
archetype
-
webapp

Maven Web Directory Structure


<root>
/src/main/webapp/


-

directory structure for a WAR

Packaging


Executing the command


mvn package




creates a WAR file

Running with Jetty


It’s easy to run application by using Jetty
plugin for Maven



Jetty

is an open
-
source, standards
-
based,
full
-
featured web server implemented
entirely in Java



First created in 1995



Latest version
6.1.5 / July 23, 2007

Running with Jetty


Add the Jetty plugin to the pom.xml


<build>


<finalName>maven2example_webapp</finalName>


<plugins>


<plugin>


<groupId>org.mortbay.jetty</groupId>


<artifactId>maven
-
jetty
-
plugin</artifactId>


<version>6.0.1</version>


</plugin>


</plugins>


</build>

Running with Jetty


Execute
mvn jetty:run

command

>mvn jetty:run

[INFO] Scanning for projects...

[INFO] Searching repository for plugin with prefix: 'jetty'.

[INFO]
-----------------------------------------------------

---

[INFO] Building maven2example_webapp Maven Webapp

[INFO] task
-
segment: [jetty:run]

[INFO]
-----------------------------------------------------

...

[INFO] Starting jetty 6.0.1 ...

...

[INFO] Started Jetty Server


Stop by
Ctrl+C

Opening the Application

Open your web browser to

http://localhost:8080/

Opening the Application

Valid URL is

http://localhost:8080/maven2example_webapp/

Re
sources


J2EE Tutorial “
Getting Started with Web
applications



http://java.sun.com/javaee/5/docs/tutorial/doc
/bnadr.html




Building Web Applications with Maven 2


http://today.java.net/pub/a/today/2007/03/01/b
uilding
-
web
-
applications
-
with
-
maven
-
2.html




Film
iņa

par Web 2 (5 min
ūtes
)


http://www.youtube.com/watch?v=6gmP4nk0EOE