Presentation is loading. Please wait.

Presentation is loading. Please wait.

An introduction to Java Servlet

Similar presentations


Presentation on theme: "An introduction to Java Servlet"— Presentation transcript:

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

2 Outline Web applications Java Servlet Servlet engine
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 (Form data) Servlet session tracking

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.

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. Web Server Script/program DB http request http response Client

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> its DOM

6 Outline Web applications Java Servlet Servlet engine
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

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 Relationships between Web server, Servlet engine and Servlets.

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.

9 How to write a Java servlet
HttpServlet implements the Servlet interface … 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 .....

10 Generic Template The generic template to write Servlet
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 }

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(); }

12 Context ServletContext 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.ServletContext The methods: -getServletContext(): obtain the context -getAttribute(String key): get an attribute from the context -setAttribute(String key, Object value): set an attribute 1 1 Common Data Servlets

13 Forms and Servlets (1) How to exchange data between client and server?
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> 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 POST: a data packege is created and attached to the HTTP requests sent to the server ? param1= ~hall¶m2= ~gates¶m3= ~mcnealy

14 Forms and Servlets (2) ~hall ~ gate ~mcnealy 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>"); } HTML CODE ~hall ~ gate ~mcnealy

15 Forms and Servlets (3)

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.

17 HTTP - Stateless protocol (2)
How to maintain the state HTTP - Stateless protocol (2) There are four ways to maintain the state: Cookies javax.servlet.http.Cookie(String nome, String val) methods: setName(String cookieName), setValue(String cookieValue), etc. Hidden fields in forms <input type=“hidden” value=“<valore>” /> URL rewriting e.g., String encodeURL(String url) of the class HttpServletResponse where: url is the original l’URL and the output is the rewritten one Servlets (HttpSession API)

18 Saving the state in general
First request The Server marks the client with an unique ID and creates a memory partition that will contain the data (state) xyz5 Every subsequent connection must send the ID. In this way the server recognize/identify the client

19 Servlet Sessions (3) HttpSession session = request.getSession(true);
Assuming ShoppingCart is some class you have defined yourself that stores information on items being purchased Recover the session connected to the client HttpSession 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 cart Add a new product to the cart Store the cart in the session

20 References Tutorial about Servlets and JSP Understanding “Architecture 2” Sun Sun (Servlet and JSP) API Sun (Servlet) Documentation Sun J2EE Tutorial Apache Tomcat Tomcat (servlet) API Tomcat (jsp) API Tomcat in Eclipse (a Tomcat installation is required) Tutorial about how to intregrate Tomcat in Eclipse

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]

22 Tomcat configuration (2)
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

23 Sample of web.xml <?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 version="2.5"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloClientServlet</servlet-class> </servlet> <servlet-mapping> <url-pattern>/HelloClientServlet</url-pattern> </servlet-mapping> </web-app> Name of the class (with package) Alias to use in HTTP request

24 Servlet in Eclipse+Tomcat
Steps to build a new Web application using Tomcat in Eclipse: Define a new Tomcat Project Write our servlet file in the subdirectory WEB-INF/src Write the servlet configutation file (web.xml) in the subdirectory WEB-INF Start Tomcat or in the right-menu clcik on “Tomcat project“ and reload the context Open a browser, and call the servelt such as

25 How to compile and execute a Servlet?
How to use Eclipse to done this task? ... Helloworld demo ...


Download ppt "An introduction to Java Servlet"

Similar presentations


Ads by Google