Web based Applications, Tomcat and Servlets - Lab 3 -

CMPUT 391 Database Management Systems Web based Applications, Tomcat and Servlets - Lab 3 - CMPUT 391 – Database Management Systems Department of Co...
Author: Milo Gibbs
4 downloads 0 Views 717KB Size
CMPUT 391 Database Management Systems

Web based Applications, Tomcat and Servlets - Lab 3 -

CMPUT 391 – Database Management Systems Department of Computing Science University of Alberta

The Basic Web Server

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

2

CGI CGI – Common Gateway Interface Processing forms & Generating dynamic content (early solution ) Spawning an external program, pass the data from the HTML form to the program Limitation: An expensive process (Spawning an external program)

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

3

CGI: Illustration Browser

Browser

Browser

GET Form.cgi

Web Server Spawn an external program

Start CGI Program form.cgi

Browser Response

Web Server

Web Server

Read environment variables

CGI Program

Web Server

Response

CGI Program

form.cgi CGI Program terminates

time Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

4

ASP ASP – Active Server Pages Microsoft’s answers to CGI programming ASP page - a Web page with code embedded inside, interpreted by the Web server Using special HTML tags, VBScript/JavaScript code can be inserted

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

5

Servlets Java technology' s answer to CGI programming A Java class handling forms on Java Web servers Applet -- a little piece of program (client side) Servlet -- a little piece of program (server side) A servlet can do everything that a CGI program can Running inside the JVM along with the Web server itself

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

6

Servlets: Illustration Browser

Browser

Browser

GET /Form

Java Web Server

Response

Java Web Server

Java Web Server

Java Web Server

Response

Request Create an Instance of the servlet if it is not loaded

Browser

Form Servlet

Form Servlet

Form Servlet Remains loaded

time Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

7

Servlets Support in Existing Servers Apache Web Server & some other Java-enabled Web servers Servlet engine Usually a separate process, not within the same process at the Web server e.g. Tomcat

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

8

Typical Servlet Engine Implementation Servlet Engine

Web Server

Browser

HTTP traffic

Servlet 1

Custom TCP/IP Protocol API

dispatcher Servlet 2

Servlet N

Tomcat A Servlet Engine for Apache Web Server Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

9

JSP JSP – Java Server Pages - Java Version of ASP - A Web page with Java code embedded inside it and running on the Web server Java’s answer to both CGI and ASP Compiled into servlets JSP & servlets can easily interact

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

10

Tomcat Servlet &JSP engine for Apache Web Server An open-source package part of the Apache Software Foundation’s Jakarta project The Tomcat Web site: – http://jakarta.apache.org/tomcat/index.html

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

11

Installing Tomcat Setting the CLASSPATH: the same classpath settings as your JVM Change the CLASSPATH environment variable from your login shell – Follow the instructions in: http://ugweb.cs.ualberta.ca/~c391/tutorial/softwInstall.html

Test your installation

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

12

Installation Tips Use “echo $SHELL” to double check your shell When editing catalina/conf/server.xml, is Port 2 and is Port 1 Use “Port 1” when you input the URL Take advantage of the alias to start and stop Tomcat (commands are the same in Bourne shell and C shell) Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

13

URL Mapping Unlike ASP, JSP, etc., servlets have no extension:

A special URL mapping is needed for each servlet you create. These mappings are defined in web.xml file. In our lab, the special URL is like: http://.cs.ualberta.ca:/proj1/servlet Machine Name Lab 3 Tomcat and Servlets

…/proj1/firstservlet CMPUT 391 – Database Management Systems

14

Mapping URL to Machine Directory Catalina Webapps

proj1

WEB-INF

classes

Lab 3 Tomcat and Servlets

Put your plain HTML files here

http://ui???.cs.ualberta.ca:portNum/proj1



Put your servlets here

http://ui???.cs.ualberta.ca:portNum/proj1/servlet

CMPUT 391 – Database Management Systems

15

Your First Servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { // Tell the Web server that the response is HTML response.setContentType("text/html"); // Get the Printwriter for writing out the response PrintWriter out = response.getWriter();

}

// Write the HTML back to the browser out.println(""); out.println(""); out.println("Welcome to CMPUT391 Lab!"); out.println(""); out.println(""); }

http://ugweb.cs.ualberta.ca/~c391/tutorial/examples/FirstServlet.java Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

16

Compiling the Servlet Edit the file “FirstServlet.java” javac FirstServlet.java Start your Tomcat Launch a browser, input the URL like: http://ui00.cs.ualberta.ca:16410/proj1/firstservlet

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

17

What Does Your First Servlet Look Like?

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

18

The FirstServlet In-Depth import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

The javax.servlet and javax.servlet.http packages provide interfaces and classes for writing servlets.

public class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { // Tell the Web browser that the response is HTML response.setContentType("text/html"); // Get the Printwriter for writing out the response PrintWriter out = response.getWriter();

}

// Write the HTML back to the browser out.println(""); out.println(""); out.println("Welcome to CMPUT391 Lab!"); out.println(""); out.println(""); }

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

19

The FirstServlet In-Depth import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

Implement the Servlet interface: subclassing the existing GenericServlet class that implements Servlet

public class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { // Tell the Web browser that the response is HTML response.setContentType("text/html"); // Get the Printwriter for writing out the response PrintWriter out = response.getWriter();

}

// Write the HTML back to the browser out.println(""); out.println(""); out.println("Welcome to CMPUT391 Lab!"); out.println(""); out.println(""); }

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

20

The FirstServlet In-Depth import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

Invoke the servlet’s service method

public class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { The service method takes two arguments: • ServletRequest: containing info about // Tell the Web browser that the response is HTML the request from the browser. response.setContentType("text/html"); • ServletRespone: containing info about the response going back. // Get the Printwriter for writing out the response PrintWriter out = response.getWriter();

}

// Write the HTML back to the browser out.println(""); out.println(""); out.println("Welcome to CMPUT391 Lab!"); out.println(""); out.println(""); }

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

21

The FirstServlet In-Depth import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { // Tell the Web browser that the response is HTML response.setContentType("text/html"); // Get the Printwriter for writing out the response PrintWriter out = response.getWriter();

}

Tell the Web browser what will be returned is HTML. Required!

// Write the HTML back to the browser out.println(""); out.println(""); out.println("Welcome to CMPUT391 Lab!"); out.println(""); out.println(""); }

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

22

The FirstServlet In-Depth import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { The response object has the methods necessary to get an output stream for // Tell the Web browser that the response is HTML writing a response. response.setContentType("text/html"); A general rule of thumb: // Get the Printwriter for writing out the response • Writing out text: use a PrintWriter object PrintWriter out = response.getWriter(); by calling getWriter() • Sending binary data to the browser: use // Write the HTML back to the browser a ServletOutputStream by calling out.println(""); getOutputStream() out.println(""); out.println("Welcome to CMPUT391 Lab!"); Some content types require a slightly out.println(""); different character set, and the out.println(""); PrintWriter object automatically adjusts } the character set based on the content } type. Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

23

The FirstServlet In-Depth import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { // Tell the Web browser that the response is HTML response.setContentType("text/html"); // Get the Printwriter for writing out the response PrintWriter out = response.getWriter();

}

// Write the HTML back to the browser out.println(""); out.println(""); out.println("Welcome to CMPUT391 Lab!"); out.println(""); out.println(""); } You don’t need to worry about closing the output stream when you have done. Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

24

Servlet Life Cycle Loads the servlet (if it has not yet been loaded)

Initializes the servlet instance -run init method

Servlets accept request from Clients and return data back - run service method

If the engine needs to remove the servlet, it finalizes the servlet - run destroy method

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

25

The Servlet Interface Hierarchy Definition of The Servlet Interface

Servlet Interface

Package javax.servlet; Public interface Servlet { public void destroy(); public ServletConfig getServletConfig(); public String getServletInfo(); public void init (ServletConfig config) throws ServletException; public void service (ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException; }

Lab 3 Tomcat and Servlets

GenericServlet Class

HttpServlet Class

Your servlet class

CMPUT 391 – Database Management Systems

26

The HttpServlet Class It has extra methods and special requestand-response objects that are geared toward the HTTP protocol The HttpServlet provides separate methods for handling the different type of HTTP requests. The two most common ones are GET and POST: – public void doGet(HTTPServletRequest request, HTTPServletResponse response) throws ServletException, java.io.IOException; – public void doPost(HTTPServletRequest request, HTTPServletResponse response) throws ServletException, java.io.IOException;

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

27

The HttpServlet Class doGet Web Browser

Get HTTP request

Post

service Put Delete

doPost doPut doDelete

• The doGet, doPost, doPut, doDelete methods are of the same general form as the service method. • The service method of HttpServlet looks at the type of the HTTP request and then calls the appropriate handler methods. Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

28

The Second Servlet Example Refer to Asn2Sample.java and Asn2Sample.html in http://ugweb.cs.ualberta.ca/~c391/tutorial/servletbasics.html

Acces servlet using the HTML form “Subclass” the HttpServlet class rather than the GenericServlet class

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

29

Servlet Resources Mark Wutka, Using Java Server Pages and Servlets, 2000, Que. http://java.sun.com/developer/onlineTraining/ Servlets/Fundamentals/contents.html http://java.sun.com/webservices/docs/1.0/tuto rial/doc/Servlets.html Other resources: – http://ugweb.cs.ualberta.ca/~c391

Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

30

Servlet Exercise create and populate a table in your Oracle account (At least 2 columns & 4 records) extend Example 3.3 in servletbasics.html – servlet should connect to Oracle database – execute the SQLStatement received from the browser (e.g. select * from “YourTable”;) – display ResultSet on the browser(Tip: use ResultSetMetaData presented in JDBC tutorial) – display an error if the SQL statement was not executed correctly in Oracle (e.g. select * from “Wrong table”) Lab 3 Tomcat and Servlets

CMPUT 391 – Database Management Systems

31