0% found this document useful (0 votes)
3 views

Lecture 19 - Dynamic Web - JAVA - Part 1

The document provides an overview of the Java platform, including its various editions such as Java SE, Java EE, and Java ME, along with their respective libraries and functionalities. It details the components of Java web applications, including Servlets, JSP, and EJB, and explains the role of Java EE containers in managing application resources and lifecycle. Additionally, it discusses the GlassFish application server and its capabilities in deploying Java EE applications, highlighting its integration with Apache Tomcat and the use of Grizzly for improved performance.

Uploaded by

francisdavid335
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Lecture 19 - Dynamic Web - JAVA - Part 1

The document provides an overview of the Java platform, including its various editions such as Java SE, Java EE, and Java ME, along with their respective libraries and functionalities. It details the components of Java web applications, including Servlets, JSP, and EJB, and explains the role of Java EE containers in managing application resources and lifecycle. Additionally, it discusses the GlassFish application server and its capabilities in deploying Java EE applications, highlighting its integration with Apache Tomcat and the use of Grizzly for improved performance.

Uploaded by

francisdavid335
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 79

Glassfish, JAVA EE, Servlets, JSP, EJB

Java platform
• A Java platform comprises the JVM together with supporting
class libraries.
libraries

Java 2 Standard Edition (J2SE)


• (1999) provides core libraries for data structures, xml
parsing, security, internationalization, db connectivity, RMI

Java 2 Platform, Enterprise Edition (J2EE)


• provides more class libraries for servlets, JSPs, Enterprise
Java Beans, advanced XML

Java Platform, Enterprise Edition (Java EE)


• When Java Platform 5.0 was released (2004) the ‘2’ was
dropped from these titles.
Java platform
• A Java platform comprises the JVM together with
supporting class libraries.
libraries

Java Micro Edition (Java ME)


• comprises the necessary core libraries and tools for
writing Java for embedded systems and other small
footprint platforms, along with some specialised
libraries for specific types of device such as mobile
phones.
phones
Java Web Application
A Java web application generates interactive web
pages containing various types of markup language
(HTML, XML, and so on) and dynamic content.
content

It is typically comprised of web components such as:

• JavaServer Pages (JSP)


• Servlets
• JavaBeans

to modify and temporarily store data,


data interact with
databases and web services,
services and render content in
response to client requests.
requests
https://grizzly.dev.java.net/
Java EE (Enterprise Edition)
Java EE (Enterprise Edition) is a widely used
platform containing a set of coordinated
technologies that significantly reduce the cost and
complexity of:
Java EE 6 is supported
• developing only by the GlassFish
• deploying and server v3.x.
• managing

multitier, server-centric applications.


Java EE builds upon the Java SE platform and
provides a set of APIs (application programming
interfaces) for developing and running portable, robust,
scalable, reliable and secure server-side applications.
http://netbeans.org/kb/trails/java-ee.html
Java EE 6 Platform
• The Java EE platform uses a simplified
programming model. XML deployment
descriptors are optional.
optional Instead, a developer
can simply enter the information as
an annotation directly into a Java source file,
and the Java EE server will configure the
component at deployment and runtime
• With annotations,
annotations you put the specification
information in your code next to the program
element affected.
http://download.oracle.com/javaee/6/tutorial/doc/bnaaw.html
Java EE application model
• an architecture for implementing services as
multitier applications that deliver the scalability,
accessibility, and manageability needed by
enterprise-level applications.
• With this structure you can more easily change one
of the tiers without compromising your entire
application.
• Business and presentation logic - to be implemented
by the developer
• Standard system services – to be provided by the
Java EE platform
http://download.oracle.com/javaee/6/tutorial/doc/bnaaw.html
Java Servlets
• Servlets are Java classes that dynamically
process requests and construct responses.
• Server side replacement for CGI
• Extensions to Java enabled web-servers
• Inherently multi-threaded.
multi-threaded
• One thread per request.
• Very efficient.
• Platform independent.
How do Servlets work?
• Servlets run inside a Web Container - the
component of the web server that runs and
interacts with Servlets
• Servlet is running on the server listening for
requests
• When a request comes in, a new thread is
generated by the web container.
container
Java EE Containers
Java EE containers
• are the interface between a Java component
and the low-level platform-specific functionality
(i.e. transaction and state management,
multithreading, resource pooling, etc.) that
supports the component.
• provide for the separation of business logic from
resource and lifecycle management.
• this allows developers to focus on writing business logic
rather than writing enterprise infrastructure.
infrastructure
The Java EE platform uses "containers"
containers to simplify development.
http://download.oracle.com/javaee/6/tutorial/doc/bnabo.html

http://www.oracle.com/technetwork/java/javaee/javaee-faq-jsp-135209.html#diff
Java EE Containers
When a request comes in:
• a Servlet needs to be instantiated and create a new thread to
handle the request.
• call the Servlet’s doPost()or
doPost() doGet() method and pass the
HTTP request and HTTP response objects
• get the request and the response to the Servlet
• manage the life, death and resources of the Servlet
* All of the above are the tasks of the web container.
container
Java EE Containers

Java EE SERVER

From Bodoff et. al. 2005


Recall: (PHP-MySQL) Server: response
• Webserver supports
HTTP.
Server

Web
server My codes
PHP
HTTP HTML MySQL
interpreter
Client
Operating System
Web
TCP/IP
browser
Operating
System

Internet
Historically (Java Web App)
Server: response
• Webserver supports
HTTP. Server
<html>
<head>

GET... GET...
</head>
<body>
...

Web server
<body>
</html>

Web
Container Servlet
Application (Java code)
HTTP <html> (Java code)
Client <head>
</head>
<body>
...
<body>
</html>
Operating System
Web
TCP/IP
browser
Operating
System
It’s the Container that gives
the Servlet the HTTP request
and response, and it’s the
Internet Container that calls the Servlet’s
methods (e.g. doPost() or doGet())
Historically (Java Web App)
Server: response
• Webserver supports
HTTP. Server
<html>
<head>

GET... GET...
</head>
<body>
...

Web server
<body>
</html>

Servlet
HTTP (Java code)
<html>

Client <head>
</head>
<body>
...
<body>
</html>
Operating System
Web
TCP/IP
browser
Operating
System
It’s the Container that gives
the Servlet the HTTP request
and response, and it’s the
Internet Container that calls the Servlet’s
methods (e.g. doPost() or doGet())
(Java Web App) Server: response
• Webserver supports
HTTP. Server
GET...
Grizzly is now the Web server <html>
<head>
</head>

HTTP front end of + Container <body>


...
<body>
</html>

the application
server
Servlet
(Java code)
HTTP
Client
Operating System
Web
TCP/IP
browser
Operating
System
It’s the Container that gives
the Servlet the HTTP request
and response, and it’s the
Internet Container that calls the Servlet’s
methods (e.g. doPost() or doGet())
Java Servlets
Java Servlets simplify web development by providing
infrastructure for component, communication, and
session management in a web container that is
integrated with a web server.
server
• Writing Servlets is like writing Java codes that place an
HTML page inside a Java class (this is the worst part of
Servlets!)

• (Historically!) requires a deployment descriptor (DD).


This is in the form of an XML file.
file

• Servlets do not have a main() method.


• Servlets are under the control of another Java
application called a Container
http://www.oracle.com/technetwork/java/javaee/javaee-faq-jsp-135209.html#diff
JavaBeans
• manage the data flow between the following:

Client/Database Server
application client or applet components running on the
Java EE server

database Server components

• JavaBeans components are not considered Java EE


components by the Java EE specification.

• JavaBeans components have properties and have get and


set methods for accessing the properties.
properties
Enterprise JavaBeans (EJB)
Enterprise JavaBeans container handles:
• distributed communication
• threading
• scaling
• transaction management, etc.

has a new packaging! (see figure)

New EJB 3.1 Packaging

Older EJB Packaging http://www.oracle.com/technetwork/java/deepdivejavaee6glassfishv3-jsp-138230.html


• create a simple web application using NetBeans IDE
• deploy it to a server,
server and
• view its presentation in a browser
NetBeans
• A 3rd party Java Integrated Development Environment
(IDE) Class libraries for Servlets,
JSPs, Enterprise Java
• Comes with Java EE class libraries Beans, advanced XML

• bundled with GlassFish Sever Open Source Edition


• Can deploy servlets, JSPs, and web services
A Quick Tour of the IDE (v.6.9)
JSP, Java Bean, User-defined Java Class & Package,
Get Method, User Interface
Sample Project

Index.jsp Main interface, Html with form


Invokes response.jsp through
form action.

NameHandler.java

Class NameHandler
containing user data

response.jsp Generates the server’s response


Defines a JavaBean to connect the class NameHandler to
the user’s input via a form text field (name).
Creating a new Web Application
New Project / Java Web
Creating a new Web Application
Specify Project Name
Creating a new Web Application
GlassFish Server

Web profile
Java Application Server: Glassfish
GlassFish
is an open source application server project led
by Sun Microsystems for the Java EE platform. The
proprietary version is called Oracle GlassFish
Enterprise Server. GlassFish is free software
Sun is the original creator
of Tomcat
It uses a derivative of Apache Tomcat as the servlet
container for serving Web content, with an added
component called Grizzly which uses Java NIO for
scalability and speed.
https://grizzly.dev.java.net/ http://java.dzone.com/articles/glassfish-and-tomcat-whats-the

Before the advent of the Java New I/O API (NIO),


NIO thread
management issues made it impossible for a server to
scale to thousands of users
Java Application Server: Glassfish
GlassFish is an open source (full) application server project
led by Sun Microsystems for the Java EE platform. The
proprietary version is called Oracle GlassFish Enterprise Server.
GlassFish is free software.

It uses a derivative of Apache Tomcat as the servlet container


for serving Web content, with an added component called Grizzly
which uses Java NIO for scalability and speed.

On 25 March 2010, soon after the acquisition


of Sun Microsystems,
Microsystems Oracle issued a
Roadmap for versions 3.0.1, 3.1, 3.2 and 4.0
with themes revolving around clustering,
clustering
virtualization and integration with
Coherence and other Oracle technologies.
http://en.wikipedia.org/wiki/GlassFish
Glassfish vs. Tomcat
Not a full-
application
server Sun is the original creator
of Tomcat

Historically, if you wanted to get good HTTP performance


from Tomcat you really needed to have an Apache web
server to sit in front of Tomcat which involved more setting
up and extra administrative work.

Since GlassFish v1 (May 2006), Grizzly is the HTTP


frontend of the application server.

It's a 100% Java NIO framework that provides the same


performance as Apache, only it's written in Java and
integrated straight into the application server.
http://java.dzone.com/articles/glassfish-and-tomcat-whats-the
Other Java web application-capable
Servers
• Blazix from Desiderata Software (1.5
Megabytes, JSP, Servlets and EJBs)
• TomCat from Apache (Approx 6 Megabytes)
• WebLogic from BEA Systems (Approx 40
Megabytes, JSP, Servlets and EJBs)
• WebSphere from IBM (Approx 100
Megabytes, JSP, Servlets and EJBs)

http://www.jsptut.com/Getfamiliar.jsp
Commercial Deployment
Oracle provides software support only

• Oracle GlassFish Server for Oracle GlassFish Server, not for


GlassFish Server Open Source Edition

– delivers a flexible, lightweight and extensible Java EE


6 platform. It provides a small footprint, fully featured
Java EE application server that is completely
supported for commercial deployment and is available
as a standalone offering.
• Oracle WebLogic Server
– designed to run the broader portfolio of Oracle Fusion
Middleware and large-scale enterprise applications.
– industry's most comprehensive Java platform for
developing, deploying, and integrating enterprise
applications.
http://docs.sun.com/app/docs/doc/821-1751/gkbtb?l=en&a=view
Creating a new Web Application
JSP File
Creating a new Web Application

Sample Run
Project: HelloWeb
HelloWeb: Directories and Files
NameHandler.java
Java Package
Right-click Source Packages

http://en.wikipedia.org/wiki/GlassFish
Java Package
Add a Java Class, specify Package name

Java Package
• a mechanism for organizing Java classes into namespaces
• can be stored in compressed files called JAR files, allowing classes to
download faster as a group rather than one at a time.

http://en.wikipedia.org/wiki/GlassFish
Java Package
Add a Java Class

http://en.wikipedia.org/wiki/GlassFish
Java Package
Edit the Java Class

• Declare a String variable inside the


class declaration.
String name;

• Add a constructor to the class:


public NameHandler()

• Add the following line in the


NameHandler() constructor:
name = null;

http://en.wikipedia.org/wiki/GlassFish
Generating Getter and Setter Methods
Right-click name field in the Source editor

Selection: Name Field / Refactor / Encapsulate Fields


Generating Getter and Setter Methods

Notice that Fields' Visibility is by default set to private,


private and Accessors'
Visibility to public, indicating that the access modifier for class variable
declaration will be specified as private,
private whereas getter and setter
methods will be generated with public and private modifiers, respectively.
Generating Getter and Setter Methods

Select the Refactor button.


Results of Refactoring

Notice that the variable


declaration has changed.
• set to private

Get and set functions


with implementation have
been added as well.
• access modifier: public
Adding and Customising
a Form, input text field,
submit button
Inserting a Form
Invoke the palette: from the menu, select (Window/Palette): or press
Ctrl+Shift+8

expand HTML Forms


Inserting a Form

expand HTML Forms and drag a Form item to a point after the
<h1> tags in the Source Editor.

The Insert Form dialog box displays.


Specifying an action

Specify the following values:

Click OK.
Source Generated

An HTML form is automatically added to the index.jsp file.


Adding an Input Text Field

Drag a Text Input item to a point just before the </form> tag, then
specify the following values:

• Name: name
• Type: text
Source Generated

Input Text Field


Adding a Submit Button

Drag a Button item to a point just before the </form> tag. Specify the
following values:
• Label: OK
• Type: submit

Click OK. An HTML button is added between the <form> tags.


Adding some extra labels, tidying up your code

Type Enter your name: just before the first <input> tag, then
change the default Hello World! text between the <h1> tags
to Entry Form.
Form

Right-click within the Source Editor and choose Format


(Alt-Shift-F) to tidy the format of your code.
index.jsp: Source Generated

We would like to
pass this to our
server
response.jsp
Adding a JSP File
In the Projects window, right-click the HelloWeb project node and
choose New > JSP.
JSP The New JSP File wizard opens.

Name the file response,


response and click Finish.
Finish

Notice that a response.jsp file node displays in the Projects window


beneath index.jsp, and the new file opens in the Source Editor.
Editor
JSP Source File Generated: response.jsp
Adding a Use Bean item
In the Palette to the right of the Source Editor, expand JSP and drag a
Use Bean item to a point just below the <body> tag in the Source
Editor.

The Insert Use Bean dialog opens.

Specify the values shown in the following figure.

The class NameHandler


belongs to the package
we have set earlier
JSP Source File Generated: response.jsp

Notice that the <jsp:useBean> tag is added beneath the <body> tag.
Adding a Set Bean property item
Drag a Set Bean Property item from the Palette to a point just before
the <h1> tag and click OK.

In the <jsp:setProperty> tag that appears, delete the empty value


attribute and edit as follows. Delete the value = "" attribute if the IDE
created it! Otherwise, it overwrites the value for name that you pass in
index.jsp.
index.jsp
Adding a Set Bean property item
Drag a Set Bean Property item from the Palette to a point just before
the <h1> tag and click OK.

In the <jsp:setProperty> tag that appears, delete the empty value


attribute and edit as follows. Delete the value = "" attribute if the IDE
created it! Otherwise, it overwrites the value for name that you pass in
index.jsp.
index.jsp
Adding a Get Bean property item
Drag a Get Bean Property item from the Palette and drop it after the
comma between the <h1> tags.
Specify the following values in the Insert Get Bean Property dialog:
• Bean Name: mybean
• Property Name: name

Insert a Get Bean Property


item here!
JSP Source Code Generated
the user input coming from index.jsp becomes a name/value pair that
is passed to the request object.
object
When you set a property using the <jsp:setProperty> tag, you can
specify the value according to the name of a property contained in the
request object.
object

Therefore, by setting property to name,


name you can retrieve the value
specified by user input.
input
Sample Run

User input

Response from
the JSP file
Sample Run

Index.jsp Main interface, Html with form


Invokes response.jsp through
form action.

User input Response from


the JSP file

NameHandler.java Class NameHandler


containing user data, get and
set methods

response.jsp Generates the server’s response


Defines a JavaBean to connect the class NameHandler to
the user’s input via a form text field (name).
Project

Index.jsp Main interface, Html with form


Invokes response.jsp through
form action.

NameHandler.java

Class NameHandler
containing user data,
get and set methods

http://java.sun.com/blueprints/code/projectconventions.html

response.jsp Generates the server’s response


Defines a JavaBean to connect the class NameHandler to
the user’s input via a form text field (name).
Packaging Web Applications

The Java EE specification defines how the web


application can be archived into a web application
archive (WAR)
WAR

• WAR files are


– Java archives with a .war extension
– Packaged using the same specification as zip files
– Understood by all Java EE compliant application
servers

• WAR files can be directly deployed in servlet


containers such as Tomcat
NetBeans WAR files

• To make a WAR for your NetBeans project, right click on


the project node and select Build Project.
Project

• The WAR file will be placed in the “dist” sub-directory


of your project folder
Project
Java EE 6
http://download.oracle.com/javaee/6/tutorial/doc/

Recommended Directory Structure for Projects

http://java.sun.com/blueprints/code/projectconventions.html

NetBeans

http://netbeans.org/kb/docs/web/quickstart-webapps.html
http://www.oracle.com/technetwork/java/javaee/documentation/index.html
Simple Database Example
http://netbeans.org/kb/docs/web/mysql-webapp.html

E-Commerce Example

http://netbeans.org/kb/docs/javaee/ecommerce/design.html
http://netbeans.org/kb/docs/javaee/ecommerce/data-model.html#createERDiagram
http://dot.netbeans.org:8080/AffableBean/
Model-View-Controller Paradigm

You might also like