+ All Categories
Home > Documents > 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

Date post: 27-Mar-2015
Category:
Upload: alyssa-cochran
View: 221 times
Download: 1 times
Share this document with a friend
Popular Tags:
25
1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,
Transcript
Page 1: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

1

An introduction to Java Servlet

Alessandro MarchettoFondazione Bruno Kessler-IRST,

Page 2: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

2

Outline

Web applications Java Servlet

Servlet engine How to write a servlet How to Process a request (Form data) Servlet session tracking

Just a quick introduction After this lecture you will be able to

read and write “simple” Servlets

Page 3: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

3

Web applications The Web server

distributes pages of formatted information to clients that request it.

HTML Pages are transmitted using the http protocol

The browser renders (static) HTML pages.

HTML pages are stored in a file system (database) contained on the web server.

Page 4: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

4

Dynamic Web applications

In some cases the content of a page (HTML) is not necessarily stored inside a file.

The content can be assembled at run-time according to user inputs and informations stored in a database. It can come from the output of a program (server script).

Servlets and JavaServer Pages are the Java technology’s answer to dynamic Web sites. They are programs that run on a Web server and build Web pages.

Client

Web Server

http request http response

DB

Script/program

Page 5: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

5

HTML and DOM

The HTML Document Object Model (HTML DOM) defines a standard way for accessing and manipulating HTML documents.

The DOM presents an HTML document as a tree-structure (a node tree), with elements, attributes, and text.

<html><head>

<title>My title</title></head><body>

<h1>My header</h\><a href=“”>My link</a>

</body></html>

http://www.w3.org/TR/html401/ http://www.w3.org/TR/DOM-Level-2-HTML/html.html

its DOM

Page 6: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

6

Outline

Just a quick introduction After this lecture you will be able to

read and write “simple” servlets

Web applications Java Servlet

Servlet engine How to write a servlet How to Process a request (i.e., Form data) Servlet session tracking

Page 7: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

7

Servlet Engine A servlet engine (or servlet

container) provides the run-time environment in which a servlet is executed.

The servlet engine manages the life-cycle of servlets (i.e., from their creation to their destruction).

The servlet engine: loads, executes and destroyes servlets

Apache Tomcat is a servlet container http://tomcat.apache.org

Relationships between Web server, Servlet engine and Servlets.

Page 8: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

8

The Life-Cycle of a Servlet Servlet are Java classes. To execute them it is necessary

compiling them in bytecode. The servlet engine perform the following tasks:

it loads the servlet when it is requested (only the first time).

it calls the init() method of the servlet. it handles the requests calling the service()

method of the servlet. at the end, it calls the destroy() method.

Page 9: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

9

How to write a Java servlet All servlets implement the Servlet interface or extend a

class the implements it. We will use HttpServlet and these methods:

doGet doPost init destroy getServletInfo

To write a servlet some of these methods must be overridden .....

HttpServlet implements the Servlet interface …

http://java.sun.com/javaee/5/docs/api/

Page 10: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

10

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class ServletTemplate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Use “request” to read incoming HTML form data (e.g. submitted data) // Use “response” to specify the HTTP response status (e.g., content type) PrintWriter out = response.getWriter(); // Use “out” to send content to browser }}

Generic Template

The generic template to write Servlet

Page 11: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

11

Helloworld

First example of servlet We override doGet() The execution of it produces a HTML

response

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class HelloClientServlet extends HttpServlet {

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

response.setContentType(“text/html”); PrintWriter out = response.getWriter(); out.println(“<HTML><HEAD><TITLE>Hello Client!</TITLE>”+ “</HEAD><BODY>Hello Client!</BODY></HTML>”);

out.close(); }}

Page 12: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

12

Context The Context can be used to store “global”

information shared among the servlets of a given application.

The Context is initialized when the Servlet container starts and destroyed when it shuts down. For this reason, it is suited for keeping the “long lived information”

It is implemented with: javax.servlet.ServletContextThe methods: -getServletContext(): obtain the context-getAttribute(String key): get an attribute from the context-setAttribute(String key, Object value): set an attribute

ServletContext

Common Data

1

1

Servlets

Page 13: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

13

First Par

Second Par

Third Par

Submit

~hall

~gates

~mcnealy

<form method=“GET/POST” action=“ThreeParams”> First Par: <input type=“text” name=“param1” /> Second Par: <input type=“text” name=“param2” /> Third Par: <input type=“text” name=“param3” /> <input type=“submit” value=“Submit” /></form>

Forms and Servlets (1)

How to exchange data between client and server?

GET: In a URL the part after the question mark (?) is known as form data, and is a way to send data from a Web page to a server-side program http://host/ThreeParams

POST: a data packege is created and attached to the HTTP requests sent to the server

? param1= ~hall&param2= ~gates&param3= ~mcnealy

Page 14: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;

public class ThreeParams extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Reading Three Request Parameters"; out.println( ServletUtilities.headWithTitle(title) + "<BODY>\n" + "<H1 ALIGN=CENTER>" + title + "</H1>\n" + "<UL>\n" + " <LI>param1: " + request.getParameter("param1") + "\n" + " <LI>param2: " + request.getParameter("param2") + "\n" + " <LI>param3: " + request.getParameter("param3") + "\n" + "</UL>\n" + "</BODY></HTML>"); }

Forms and Servlets (2)

~hall

~ gate

~mcnealy

HTM

L

CO

DE

Page 15: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

15

Forms and Servlets (3)

Page 16: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

16

HTTP - Stateless protocol (1)

The Web server can’t remember previous transactions since HTTP is a “stateless” protocol.

E.g., a shopping cart:

• it contains all items that have been selected from an online store's catalog by a customer;

• the customer can check the content of the cart at any time during the session;• thus, the server must be able to maintain the cart of the user across several

Web page requests.

Page 17: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

17

There are four ways to maintain the state:1. Cookies

javax.servlet.http.Cookie(String nome, String val)methods: setName(String cookieName), setValue(String cookieValue), etc.

2. Hidden fields in forms<input type=“hidden” value=“<valore>” />

3. URL rewritinge.g., http://host/serveltPages/ShowSession;jsessionid=E4D371A0710

String encodeURL(String url) of the class HttpServletResponse where: url is the original l’URL and the output is the rewritten one

4. Servlets (HttpSession API)

HTTP - Stateless protocol (2)

How to maintain the state

Page 18: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

18

Saving the state in general

First request

The Server marks the client withan unique ID and creates a memorypartition that will contain the data (state)

Every subsequent connection must send the ID. In this way the serverrecognize/identify the client

xyz5

Page 19: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

19

Servlet Sessions (3)

Assuming ShoppingCart is some class you have defined yourself that

stores information on items being purchasedHttpSession session = request.getSession(true);ShoppingCart previousItems = (ShoppingCart)session.getAttribute("previousItems"); if (previousItems == null) { previousItems = new ShoppingCart(...); } String itemID = request.getParameter("itemID"); previousItems.addEntry(Catalog.getEntry(itemID)); session.setAttribute("previousItems", previousItems);

Recover the sessionconnected to the client

Recover the cart

Add a new product to the cart

Store the cart in the session

Page 20: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

20

References

Tutorial about Servlets and JSP www.apl.jhu/%7Ehall/java/Servlet-Tutorial Understanding “Architecture 2” www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html Sun http://java.sun.com/products/servlet/

Sun (Servlet and JSP) API http://java.sun.com/javaee/5/docs/api/ Sun (Servlet) Documentation http://java.sun.com/products/servlet/docs.html Sun J2EE Tutorial http://java.sun.com/javaee/5/docs/tutorial/doc/

Apache Tomcat http://tomcat.apache.org/ Tomcat (servlet) API http://tomcat.apache.org/tomcat-5.0-doc/servletapi/index.html Tomcat (jsp) API http://tomcat.apache.org/tomcat-5.0-doc/jspapi/index.html Tomcat in Eclipse http://www.sysdeo.com/eclipse/tomcatplugin (a Tomcat installation is

required) Tutorial about how to intregrate Tomcat in Eclipse

http://plato.acadiau.ca/courses/comp/dsilver/2513/EclipseAndTomcatTutorial/

Page 21: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

21

Tomcat configuration (1)

Tomcat directory organization:

In the directory: $TOMCAT_HOME$/webapps

./myApplication

./myApplication/*.html

./myApplication/WEB-INF/

./myApplication/WEB-INF/web.xml

./myApplication/WEB-INF/classes/*.class

./myApplication/WEB-INF/lib/*.jar

[./myApplication/WEB-INF/src/*.java]

Page 22: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

22

web.xml:– XML file used by Tomcat– it is a deployment descriptor– used to set specific parameters for the current application, such as:

• name of the servlet (that can be reached though HTTP)• URL corresponding to servlet files (e.g., into /WEB-INF/classes/)• sessions “timeout” • etc.

– it is loaded during the application installation

It is composed of the tags:– servlet: set alias and parameters to initialize a given servlet– servlet-mapping: set URL(s) to a given servlet

Tomcat configuration (2)

Page 23: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

23

<?xml version="1.0" encoding="ISO-8859-1"?><web-app 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_5.xsd" version="2.5">

<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloClientServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloClientServlet</url-pattern> </servlet-mapping>

</web-app>

Sample of web.xml

Alias to use in HTTP request

Name of the class (with package)

Page 24: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

24

Steps to build a new Web application using Tomcat in Eclipse:

1. Define a new Tomcat Project2. Write our servlet file in the subdirectory WEB-INF/src3. Write the servlet configutation file (web.xml) in the subdirectory WEB-INF4. Start Tomcat or in the right-menu clcik on “Tomcat project“ and reload the

context5. Open a browser, and call the servelt such as

http://localhost:8080/ProofProject/proofServlet

Servlet in Eclipse+Tomcat

Page 25: 1 An introduction to Java Servlet Alessandro Marchetto Fondazione Bruno Kessler-IRST,

25

How to compile and execute a Servlet?How to use Eclipse to done this task?

... Helloworld demo ...


Recommended