Web Tier Technologies

judgedrunkshipServers

Nov 17, 2013 (3 years and 8 months ago)

127 views

Web Tier Technologies

July 14, 2010


Introduction


Web Tier JEE Patterns


Web Container


Servlets


JSP & JSTL


Expression Language


Java Server Faces

Agenda

July 14, 2010


Intercepting Filter


Front Controller


Context Object


Application Controller


View Helper


Composite View


Service to Worker


Dispatcher View


Web Tier JEE patterns

July 14, 2010


Request based MVC framework


Aware of HttpServletRequest


Struts, Spring MVC



Component based MVC framework


JSF, Wicket, Tapestry

Web Tier Architectural Pattern

July 14, 2010

Model View Controller
-

separation of concerns

July 14, 2010

Model View Controller


Features of MVC 1

Html or jsp files are used to code the presentation. To retrieve the data JavaBean can be used. In MVC1
architecture all the view, control elements are implemented using Servlets or Jsp.

In MVC1 there is tight coupling between page and model as data access is usually done using Custom tag or
through java bean call.


Features of MVC 2

The MVC2 architecture removes the page centric property of MVC1 architecture by separating Presentation, control
logic and the application state.

In MVC2 architecture there is only one controller which receives all the request for the application and is responsible
for taking appropriate action in response to each request.

July 14, 2010

View Type


Controller based View


HTML tag mixed with Java code within Servlet


Template based View


JSP


Freemarker


Velocity


WebMacro


July 14, 2010

Web application framework


Apache Struts


Spring MVC


Apache Tapestry


Apache Wicket


Java Server Faces


Grails


Google web
toolki


JBoss

Seam


Zk


AppFuse


FormEngine


Hamlet


OpenXava


Ztemplates


WaveMaker


Toolkit



July 14, 2010

Containers

Java EE architecture has different containers:


A Web Container for hosting Java Servlets
and JSP pages.


A EJB container for hosting Enterprise
JavaBean components.


An applet container to run applets,


An application client container for running
standard Java application clients.

What is a Container ?


Containers are the interface between a
component and the low
-
level platform
specific functionality that supports the
component.

How does it work


Container settings are specified for each
component during assembly process
before deployment.

What do I get


Support for security, transaction
management, JNDI lookup, Remote
connectivity.


July 14, 2010

Web Container Example


Apache Tomcat


Resin


Jetty


Apache Geronimo Application Server


Jboss Application Server


Weblogic Application Server


Websphere Application Server


Tc server


NetWeaver


July 14, 2010

Web Container


The Web container is the part of the application server in which Web application components run.



Web application components include servlets, JSP files, and HTML files.


The Web container processes the web components. Each application server runtime has one logical Web
container, which can be modified, but not created or removed. Each Web container provides the following.



Communications support


Lifecycle management


Multi
-
threading support


Declarative security


JSP Support


July 14, 2010

Web Container Contd..



Every web app contains a deployment descriptor called web.xml



It describes the web application to the servlet container.



It is an XML file

Web Application Property

Short Description

Servlet Declarations

Used to specify servlet properties

Servlet Mappings

Used to specify URL to servlet mapping.

Application Lifecycle Listener classes

Used to specify listener classes for HttpSession
-
Events and ServletContextAttributeEvent

ServletContext Init Parameters

Used to specify initialization parameters for the web application

Error Pages

Used to specify error pages for error conditions

Session Configuration

Used to specify session timeout

Security Constraints

Used to specify security requirements of the web application

Tag libraries

Used to specify the tag libraries required by JSP Pages

Welcome File list

Used to specify the welcome files for the web Application

Filter Definitions and Filter Mappings

Used to specify the filter

MIME Type Mappings

Used to specify MIME types for common file extensions.

JNDI names

Used to specify JNDI names of the EJBs

July 14, 2010

Sample Web.xml

July 14, 2010

A Servlet is a java technology
-
based Web component, managed by a container,
that generates dynamic content


is a simple, consistent mechanism for extending the functionality of a web
server


Are pre
-
compiled Java programs that are executed on the server side.


Require a Servlet container to run in



What is Servlet?

July 14, 2010



Servlet Interface

Methods to manage servlet



Generic Servlet

Implements Servlet



HttpServlet

Extends GenericServlet

Exposes HTTP


specific
functionality

Servlet

ServletConfig

Serialization

GenericServlet

HttpServlet

UserDefinedServlet

Interface

Built
-
in Classes

User defined

Servlet Architecture Overview

July 14, 2010



Load



Initialize



Service



Destroy


Servlet Life Cycle

July 14, 2010

Every web application has exactly one instance of javax.servlet.Servlet
-
Context (assuming that the servlet container is not
distributed across multiple JVMs).

The context is initialized at the time that the web application is loaded

Initialization parameters for a servlet context can be defined in Deployment descriptor

The servlets of a web application can retrieve these initialization parameters using the methods of the ServletContext
interface as shown below


The servlet context initialization parameters are used to specify application
-
wide information, such as the
developer’s contact information and the database connection information.

public void init()

{

ServletContext context = getServletConfig().getServletContext();

//ServletContext context = getServletContext();

String dburl = context.getInitParameter("dburl");

//use the dburl to create database connections

}

Uses ServletConfig to get
ServletContext

Servlet Context

July 14, 2010

Filters are server
-
side components hosted by the web container that receive an
inbound request
before
it is received by any other component

Filters are deployed in the deployment descriptor file
web.xml
and then map to either
servlet names or URL patterns in application's deployment descriptor.

<filter>


<filter
-
name>LogFilter</filter
-
name>


<filter
-
class>LogFilter</filter
-
class>


<init
-
param>


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


<param
-
value>Initialization Paramter</param
-
value>


</init
-
param>

</filter>

<filter
-
mapping>


<filter
-
name>LogFilter</filter
-
name>


<url
-
pattern>/*</url
-
pattern>

</filter
-
mapping>



Filters

July 14, 2010

Listeners are server
-
side components hosted by the web container that are notified about specific events that occur
during a Servlet’s lifecycle.

Listeners are deployed in the deployment descriptor file
web.xml
and then map to either servlet names or URL
patterns in application's deployment descriptor.

Process of defining Listener Interfaces


Write a class that implements the corresponding listener interface


Specify the class name in the deployment descriptor


Servlet container will call the appropriate methods on objects of this class when the events
occur

<listener>



<listener
-
class>




com.listeners.MyContextListener



</listener
-
class>

</listener>


Listeners

July 14, 2010


Work well in a Heterogeneous Environments


OS and platform neutral


Work with all major web servers (IIS, Apache,etc..)


Clean separation of controller / logic from presentation


Efficient, scales very well


Well defined Web Architecture framework


Standard built in services such as:


Standard Approach to Authentication using declarative security vice programmatic
security


Database connection pooling


Complete support for sessions via cookies and/or URL re
-
writing


Has automatic fallback to URL re
-
writing



Why Use Servlets

July 14, 2010



Java Server Pages (JSP)


A simplified, fast way to create dynamic web content


HTML or XML pages with embedded Java Code or Java Beans


Can be a mix of template data in HTML/XML with some dynamic content


A JSP is a complied to a Java Servlet automatically by the Servlet container, it is then
cached


What is Java Server Page

July 14, 2010


Used in JSP pages, pages that end *.jsp


Comment <%
--

Comment
--
%>


Declaration <%! int x = 0; %>


Expression <%= expression %>


Outputs to the Response stream


Like a “printf” to the browser


Do NOT use semi
-
colon to terminate the line


Scriplets
-

contains Java Code


<% code fragments %>


Implicit objects always available in the JSP Page


request


Http Request Object to get HTTP Headers, paramters passed from servlet


response


Http Response Object


session


Http Session Object


pageContext


application



JSP Construct

July 14, 2010


JSP Directives


Are messages or instructions to the JSP container


Do not produce any output


“page” directive


<%@ page import=“com.lucek.*” %>


Commonly used for importing class paths


“include” directive


<%@ include file=“header.htm” %>


Good for including static content


“taglib”


lists the tag library descriptor location


Required when using tab libraries

JSP Construct Contd.

July 14, 2010

The ultimate goal of JSTL is to help simplify JavaServer Pages.
JSTL offers the following capabilities


General
-
purpose actions


These actions complement the expression language by allowing a page author to easily
display expressions in the expression language, set and remove the value of JSP scoped
attributes, as well as catch exceptions


Control flow actions


Tag
-
based control flow structures (conditionals, iterators), which are more natural to page
authors.


Tag library validators


Allow projects to only allow specific tag libraries, as well as enforce JSPcoding styles that
are free of scripting elements.

All the capabilities are fulfilled using the tab libraries

JSTL

Core (javax.servlet.jsp.jstl.core)

General purpose actions

Format (javax.servlet.jsp.jstl.fmt)

Internationalization and
Localization

SQL (javax.servlet.jsp.jstl.sql)

Common database tasks

Tag Library
Validator(javax.servlet.jsp.jstl.tlv)

Tag Library Validators

July 14, 2010

JSP Expression Language (EL) makes it possible to easily access application data stored in JavaBeans
components. JSP EL allows you to create expressions both (a) arithmetic and (b) logical.


The EL is a simple language designed to meet the needs of the presentation layer in

web applications. It features:


A simple syntax restricted to the evaluation of expressions


Variables and nested properties


Relational, logical, arithmetic, conditional, and empty operators


Functions implemented as static methods on Java classes


Lenient semantics where appropriate default values and type conversions are provided to
minimize exposing errors to end users

JSP
-

Expression Language

<%

Person p = (Person) request.getAttribute(“person”)

%>

……….

Person Name: <%= p.getName() %>

………

<% if (p.getAddress( ).equals(“defence”) ) { %>


…….

<% } %>


Person Name: $ { p.name }



<c
:
if test = “$ {p.address == param.add }” >


${ p.name }

</c
:
if>

July 14, 2010



EL expressions can be used:


In static text, the value is computed and inserted in output.


In any standard or custom tag attribute that can accept an expression

example : <some:tag value="${expr}"/>



Expressions could be used


Variables


Implicit Objects


Literals


Operators

Using Expressions

July 14, 2010

JSF
-

Overview


Holistic solution to several longstanding problems


Tedious & repetitive coding


Directly working with HTTP request/response


Non availability of IDE


Easier, more intuitive usage experience


Developed by a community of Web application experts


Combines


Ubiquity of JSP and servlets


Simplicity of JavaBeans


Power of Java EE


Common
-
sense of frameworks like Struts

July 14, 2010

Benefits of JSF


Ease/Simplify Development


Easy creation of UI


Handles complexities of UI management


Clean separation between presentation and logic


Shorter development cycle


Standard Java framework


An extensible architecture


Support for multiple client devices


Flexible rendering model


International language support


July 14, 2010

JSF and MVC


JSF and JSP


JSF UI comprised of JSP pages but not bound to that


Lots of GUI tools to develop UI


MVC model1 and model2


Mixed java code with HTML: was easy to put business logic there


Model1 : all backend code moved to java beans and use of JSTL EL


Model2 : watered down version of MVC for web apps. Struts, Spring, Webwork etc.


Richer MVC environment


JSF component model


Closer to true MVC programming than other model2 frameworks


JSF gives host of event options but model2s rely on “request received”


JSF's MVC implementation


Faces Servlet is the controller


Backing beans are the model


JSP pages with custom JSF tags are the view

July 14, 2010

Struts vs JSF

Advantages of Struts


Mature and proven


Lots of documentation and reference materials


Large developer base


Broad tool and IDE support


Open source

Advantages of JSF


Standard UI component model


Robust event handling mechanism


Render kit support for different clients


Highly 'pluggable'
-

components, view handler, etc


Governed by JCP

When to go for JSF


Most new applications


Applications with sophisticated user interfaces


Applications requiring multiple client support


Smaller Struts applications that require significant upgrades


Larger Struts applications that require significant upgrades


Integrating selected JSF components into an existing Struts applications

July 14, 2010

Relationship to existing APIs

July 14, 2010

JSF Roles

July 14, 2010


FacesServlet Mapping

<!
--

Faces Servlet
--
>

<servlet>


<servlet
-
name>Faces Servlet</servlet
-
name>





<servlet
-
class>

javax.faces.webapp.FacesServlet


</servlet
-
class>


<load
-
on
-
startup> 1 </load
-
on
-
startup>

</servlet>

<!
--

Faces Servlet Mapping
--
>

<servlet
-
mapping>

<servlet
-
name>Faces Servlet</servlet
-
name>

<url
-
pattern>*.jsf</url
-
pattern>

</servlet
-
mapping>



Configuring Web Application for JSF

July 14, 2010

JSF Application Configuration Files


All JAR resources located in the /WEB
-
INF/lib


Context initialization parameter
javax.faces.application.CONFIG_FILES



in the web.xml


<context
-
param>




<param
-
name>




javax.faces.application.CONFIG_FILES



</param
-
name>



<param
-
value>




/WEB
-
INF/faces
-
config1.xml,




/WEB
-
INF/faces
-
config2.xml, ...



</param
-
value>


</context
-
param>


faces
-
config.xml in the /WEB
-
INF/

July 14, 2010

Request Processing Life Cycle

<f:view>

<h:form>

<p>Enter your username:


<h:inputText value="#{LoginBean.username}"


id="usernameTextField" required="true"/>


<h:message for="usernameTextField" />

</p>

<p>Enter your password:


<h:inputSecret value="#{LoginBean.password}"


id="passwordTextField"


required="true"/>


<h:message for="passwordTextField" />

</p>

<h:commandButton value="Submit Values"

action="loginWelcome"/>

</h:form>

</f:view>


<p>Enter your phone
-
number

<h:inputText

value="#{UserBean.phoneNumber}"

id="phoneNumberTextField"

required="true">

<f:validator validatorId="PhoneNumberValidator" />

</h:inputText>

<h:message for="phoneNumberTextField"/>

</p>


July 14, 2010

JSF Managed/Backing Beans


Collect form input from components


Properties can be synchronized with component values


Can reference and manipulate UI component instances


Handle UI events


A combination of Struts ActionForms and Struts Actions


Conceptually similar to code
-
behind classes in ASP.NET WebForms


Usually talk to model objects to execute actual business logic


Bind component’s value to backing bean property


Usually configured using Managed Bean Creation facility


Facility can be used for model objects as well


Configured in JSF configuration file


Object will be created automatically if it doesn't exist

July 14, 2010

JSF navigation Framework


Provides navigation rules that allow you to define navigation from view to view (mostly JSP pages) in a Web application.


Defined in JSF configuration files along with other definitions for a JSF application.


Usually, this file is named
faces
-
config.xml
.


However, you can assign any other name and even use more than one file to store JSF configuration data.


Full support for declarative navigation


Outcome of action methods used to select next page


Eliminates need for Java code or JSPs to know file names


To specify configuration files, use lines like the following in your
web.xml

file:


Code
:

<context
-
param>


<param
-
name>javax.faces.CONFIG_FILES</param
-
name>




<param
-
value>/WEB
-
INF/faces
-
config
-
navigation.xml,


/WEB
-
INF/faces
-
beans.xml


</param
-
value>

</context
-
param>


July 14, 2010

Sample Navigation

<navigation
-
rule>





<from
-
view
-
id>/pages/inputname.jsp</from
-
view
-
id>






<navigation
-
case>







<from
-
outcome>sayHello</from
-
outcome>







<to
-
view
-
id>/pages/greeting.jsp</to
-
view
-
id>





</navigation
-
case>






<navigation
-
case>







<from
-
outcome>sayGoodbye</from
-
outcome>







<to
-
view
-
id>/pages/goodbye.jsp</to
-
view
-
id>





</navigation
-
case>





<navigation
-
case>




<to
-
view
-
id>/pages/goodbye.jsp</to
-
view
-
id>

</navigation
-
case>

</navigation
-
rule>

July 14, 2010


JavaServer

Pages 2.1 specification JSR 245


http://jcp.org/aboutJava/communityprocess/final/jsr245/


Servlet

s 2.5
pecification

JSR 154


http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html


JSF 1.2 specification JSR 252


http://jcp.org/aboutJava/communityprocess/final/jsr252/index.html


JSTL 1.2 specification JSR 52


http://jcp.org/aboutJava/communityprocess/mrel/jsr052/index2.html


Java EE 5 specification
JSR 244


http://jcp.org/aboutJava/communityprocess/final/jsr244/index.html


Web Tier Specifications