CS441 Lecture 4

concepcionsockSoftware and s/w Development

Aug 15, 2012 (5 years and 7 days ago)

351 views

1

Lecture 8

George Koutsogiannakis/Summer 2011

CS441


CURRENT TOPICS IN
PROGRAMMING LANGUAGES

Topics


Web Applications and the Java Server.


HTTP protocol.


Servlets

2

Web Applications


Two Types of Web Applications:


Presentation oriented:
Interactive web applications with
dynamic content usually provided with DHTML, XML,
servlets or java server pages.


Service oriented:
Web applications that utilize
presentation oriented applications as clients. They
consist of web services, SOAP protocol services, RMI
etc.

3

Web Applications

»
For example an Aplication server or an RMI server that
processes Queries to the databse server. It receives the results
of the query formats it and passes it over to the presentation
oriented application so that it can be sent to the requestor
(client of the presentation application)


4

Web Applications


Web Components: Servlets, JSP (Java Server
Pages).


Web Components are supported by a web
container.


For instance: Tomcat has a servlet engine and a
JSP engine. Those engines are the web containers.

5

Web Applications


Web Containers provide to web components:



Activation



Initialization


Configuration


Translation from http to a servlet request object and



Translation from a servlet response object to http.


6

Web Applications


Web Components can communicate directly
with a database (via JDBC) or


They can communicate with a database via
Java Beans components or


They can communicate with other service
oriented applications such as a RMI server,
or web services, or an application server.

7

Web Applications

8

Client

HTTP Request

HTTP Response

Containers

Web

Components

Java Bean

Components

HTTPServletRequest

Object

HTTPServletResponse

Object

RMI

Server

Database

Database

Web
Services

Web Applications


Life Cycle of a Web Application:


Develop web component(s) code (i.e servlet code or jsp code).


Develop the web application deployment descriptor (i.e. the
web.xml file in Tomcat).


Compile the web components code.


Package the application into a deployable unit (i.e. a WAR file).


Deploy the application into the container.


Undeploy the application if needed.


Access a URL from a client that references the web application.


9

Web Applications


Web Resources:


Web Components.


Static web content files.


Web Module:


The smallest deployable web resource.


Same as a web application.


Contains: web resources, java beans, applets
other types of files.

10

Web Applications


A web module can be packaged into a WAR file


WAR files are made with the jar utility and they have a .war
extension.


To deploy a WAR file on an Application Server, the file must have
a deployment descriptor (i.e. web.xml for Tomcat or sun
-
web.xml
for Java Server).


The deployment descriptor file is placed in the folder:


CONTEXT ROOT (ASSEMBLY ROOT)




WEB
-
INF






web.xml

11

Web Applications


Packaging a Web Application:


Use a WAR file or


Use an IDE like NetBeans (possibly a separate
download from EE 5) or


Use a utility tool called ants (part of EE 5
download).


12

Web Applications


Deployment on an Application server:


WAR file can be placed into the
<JavaEE_Home>/domains/domain1/autodeploy


directory of Java Server (Java Application Server).


Or by using the Administrative Console of Java Server.


Or by running asadmin or ant command line to deploy
the WAR file.


Or by using NetBeans.


Note: Deploying details are described in your “Java EE 6
Tutorial” text

13

HTTP Protocol


Request/ Response packets.


Client initiates a request via a TCP connection to a port
(8080 or 80).


Server sends a response packet to client


Protocol provides methods such as:


GET


POST


PUT


DELETE


HEAD


And others



14

HTTP Protocol


If GET is used by client then:



Data can be part of the URL

http://www.cs.iit.edu/index.html?firtsname=“fm”&lastname=“ln”


Data is not cached by the browser application.


Data is URL encoded i.e. spaces are converted to +
signs, nonalphanumeric characters are converted to %
signs followed by the two hex digits representing the
character etc.


Use it when the data is small.


15

HTTP protocol


If client uses POST:


The data is part of the body of the HTTP
packet.


Data is cached.


Use it if data is larger and the interaction with
the server changes the state of the resource in
the server.

16

HTTP Protocol


Error messages can be returned by the
server in the response packet.


Error messages are coded:


400 means bad request.


401 means unauthorized request.


500 Internal server error.

Etc.

17

Servlets


A servlet is a java program that executes on the
server side.


It extends the capabilities of a server.


Two types of servlets:


Generic type


HTTP type

Note: nevertheless other protocols can be supported such
as FTP, POP, SMTP


We will concentrate on HTTP type.

18

Servlets


HTTP type servlets


Extend the web server by executing requests
received in HTTP (from a client) protocol
packets and by returning responses that are
translated back to HTTP protocol packets.

19

Servlets


Clients to Servlets


Client side programs that sent requests can be:


Html files (forms).


Applets.


JavaScript.


XML.


Java application programs.


Active Server pages (ASP) programs.



Other.


20

Servlets


Execution environment:


Web Server needs the servlet engine
(container).


The interface between the servlet engine and
the servlet program is defined by the Servlet
API.

21

Servlets


The servlet container is responsible for:


Creating an instance of the servlet program.


Calling the servlet’ s init() method to initialize the servlet.


Configures the servlet according to preset properties.


Calling the servlet’ s service method.


Creating the stream to send to the servlet a request object that
encapsulates an y data the client sent as part of the request.


Creating the stream to receive the response object from the servlet
that encapsulates the data generated by the servlet as a result of the
request.


Can handle multiple service calls that be made simultineously
(multiple requests arriving at the same time).


Destroys the servlet by calling destroy() method.




22

Servlets


Servlet applications provide:


Processing of a Get or Post type of a request via individual
methods that need to be overridden.


The servlet engine reads the request type off the arriving HTTP
packets, calls the service method of the servlet, the service method
will call either a doGet or doPost servlet method.


Handle many requests at the same time.


Provide session capability with a client so that multiple
request/response pairs can be serviced without loosingtrack of the
particular client.


Can communicate with other servlets forming a chain.

23

Servlets


Can generate a response in Html tags. The servelt
engine will extract the html code from the java code
and form send it to the client.


This facilitates the generation of dynamically formed
responses based on the request.


Can execute JDBC code to connect to a database and
retrieve information. The response object will then
encapsulate the data.


Can act as clients to a Remote Method Invocation
Servers in a distributed objects network.


Can communicate with Java Beans.

24

Servlets


Servlet API


javax.servlet


javax.servlet.http


25

Servlet interface

Implemented by abstract class

Implemented by abstract class

GenericServlet

HttpServlet

Servlets


The abstract classes provide default implementation for methods:


void init(ServletConfig config)


ServletConfig getServletConfig()


void service(ServletRequest requ, ServletResponse resp)


String getServletInfo()


void destroy()


In addition, the HttpServlet class has methods:


doGet (HTTPServletRequest requ, HttpServletResponse resp)


doPost (HTTPServletRequest requ, HttpServletResponse resp)

These methods have to be overridden by the servlet class that the developer provides.



26

Servlets

27

ServletResponse

interface

HttpServletResponse

interface

Passes response object from doGet or doPost method

to service method


Service method passes response object to servlet engine

ServletRequest

interface

HttpServletRequest

interface

Passes request object to service method


Service method passes request object to servlet ‘s doGet

Or doPost method.

Servlets


Several Listener interfaces are there to provide listeners for
various event handlers that:


Access information when an event occurs.


Must implement one of the interfaces:


ServletContextListener: initialization and destruction information


ServletContextAttributesListener: web context attribute added,
removed, replaced.


HttpSessionListener: information on creation, invalidation of a
session, activation of a session, timeout of a session.


HttpSessionAttributesListener: session attribute has been added,
removed or replaced


HttpRequestListener and HttpRequestAttributeListener: information
on attributes associated with a request.

28

Servlets


Example:



Client receives an HTML form.



The form in its action tag calls a servlet.



The servlet creates html code and sends back
to the client for display by the browser.

29

Servlets Example
-
File
helloworld,html (simplified)


<html>

<head>

<title>Untitled Document</title>

</head>

<body bgcolor="#FFFFFF">

<p><a href="servlet/HelloWorldExample"></p>

</body>

</head>

</html>



30

Servlets Example


file
HelloWorld.java


import java.io.*;


import javax.servlet.*;


import javax.servlet.http.*;


public class HelloWorld extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response) throws
IOException, ServletException {


response.setContentType("text/html");


PrintWriter out = response.getWriter();


out.println("<html>"); out.println("<head>");


out.println("<title>Hello World!</title>");


out.println("</head>"); out.println("<body>");


out.println("<h1>Hello World!</h1>");


out.println("</body>");


out.println("</html>"); } }

31

Servlets Example


file
HelloWorld.java


The Browser receives the html code:

<html>

<head>

<title>Hello World!</title>

</head>

<body>

<h1>Hello World!</h1>

</body>

</html>

32

Servlets
-
Another example

<html>

<hesd>

<body>

<Form action=http://localhost:8080/ExampleSite/TechSupport”
method=“POST”>

<table><tr><td>

<Input types=“Text” Name=“firstName”></input></td></tr></table>

</form>

</body>

</head>

</html>



33

Servlets
-
Another example
TechSupport.java file

import javax.servlet.*;

import javax.servlet.http.*

import java.io.*;

import java.util.*;

public class TechSupport extends HttpServlet

{ protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException


{ res.setContextType(“text/html”);


String myparam=req.getParameter(“firstName”);


PrintWriter out = res.getWriter();


out.println(“<HTML>”);


out.println(“<HEAD>”);


out.println(“<BODY>”);



34

Servlets
-
Another example


if(myparam.equals(“MyName”))



{




out.println(“<p”>);




out.println(“You can now login”);


out.println(“</p>”);


}




else


{ out.println(“<p”>);




out.println(“I don’t recognize you”);


out.println(“</p>”);


}


out.println(“</BODY>”);


out.println(“</HEAD>”);


out.println(“<HTML>);


out.close();

}


35

Servlets
-
Another example


The web.xml deployment descriptor file has to be created for the servlet:


<web
-
app>


<display
-
name>Servlet Example</display
-
name>


<description>Simple servlet responding to a form</description>


<servlet>



<servlet
-
name>TechSupport</servlet
-
name>



<servlet
-
class>TechSupport</servlet
-
class>


</servlet>



<servlet
-
mapping>



<servlet
-
name>TechSupport</servlet
-
name>



<url
-
pattern>/TechSupport</url
-
pattern>


</servlet
-
mapping>


</web
-
app>

//where TechSupport.class is the servlet bytecodes file residing in the classes
folder of Tomcat.





36

Deployment on Tomcat Web
Server


To deploy the web examples discussed you can:


Install Tomcat by itself (do not install NetBeans at this
time)


Create a war file and deploy the war file in Tomcat.


Or, install NetBeans. Add Tomcat and GlassFish v2 as
active servers in NetBeans.


Start Tomcat from NetBeans.

37

Working with servlets outside of
EE


The servlet API is only available on EE.
Ther you would find the latest version of
servlet API.


I have,however,retained an independent
version of servlet API that can be installed
and become part of your standard edition.


It is an old API but it would allow us to work
with servlets at this level in an easier way.


38

Enabling SE with the servlet API


Download from the examples page of the course the file :
SERVLET.ZIP


Unzip the file and you will find two jar files inside.


Copy the two jar files and paste them in the path of your jdk
installation


C:
\
>Program Files
\
Java
\
jdk1.6.0_18
\
jre
\
lib
\
ext
\



Now you can compile source code files that include servlet (and java
server pages ) libraries.


Note that this an old API that I copied few years back. This is not
available anymore and you can’t compile servelts normally with the
standard edition (You need Enterprise Edition).

39

Deployment in Tomcat


The servelt compiled code should reside in the WE_INF /classes folder
of the Tomcat Root Context structure.


ROOT_CONTEXT



.html, applet.class files








WEB_INFO


web.xml









CLASSES


myservlet.class

40

Study Guide


SUN ‘s acquisition by Oracle has been
finalized and the web sites for Java
Tutorials are beginning to change since
February 1
st
.


The Java EE 6 Tutorial has been changed
and the organization of the material has
changed the last two weeks (after our course
started)

41

Study Guide


WEB APPLICATIONS WITH SERVLETS
WBAD CH8


Servelts are now covered in Part II chapter 10 of “The Java EE 6
Tutorial” text. This change is effective February 2010.

See servlet examples on the course ‘s web site.

42