Upload
jeanette-shaw
View
24
Download
0
Embed Size (px)
DESCRIPTION
Web based Applications, Tomcat and Servlets - Lab 3 -. The Basic Web Server. 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 - PowerPoint PPT Presentation
Citation preview
CMPUT 391 – Database Management SystemsDepartment of Computing Science
University of Alberta
CMPUT 391
Database Management Systems
Web based Applications, Tomcat and Servlets
- Lab 3 -
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 3
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 4
CGI: Illustration
CGI Program
Browser
Web Server
CGI Program
Browser
Web Server
Start form.cgi
Browser
Web Server
CGI Program
Browser
Web Server
CGI Programform.cgi
terminates
GETForm.cgi
Spawn anexternal program
Read environment variables Response
Response
time
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 5
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 6
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 i
tself
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 7
Servlets: Illustration
Browser Browser Browser Browser
GET/servlet/Form
Create anInstance of
the servlet if itis not loaded
Java Web Server Java Web Server
FormServlet
Request
Java Web Server
FormServlet
Response
Response
FormServlet
Java Web Server
Remains loaded
time
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 8
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 9
Typical Servlet Engine Implementation
Tomcat A Servlet Engine for Apache Web Server
dispatcher
Servlet 1
Servlet 2
Servlet N
Custom TCP/IPProtocol
API
Web Server
Browser
HTTPtraffic
Servlet Engine
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 10
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 11
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 12
Installing Tomcat
Setting the CLASSPATH:
the same classpath settings as your JVM Change the CLASSPATH environment variabl
e 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 13
Installation Tips
Use “echo $SHELL” to double check your shell
When editing catalina/conf/server.xml, <Server … port=…> is Port 2 and <Connector … port=…> 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 14
URL Mapping
Unlike ASP, JSP, etc., servlets have no extension:
<form name=“FirstServlet" method="GET" action=“firstservlet"> A special URL mapping is needed for each ser
vlet you create. These mappings are defined in web.xml file.
In our lab, the special URL is like:
http://<ui???>.cs.ualberta.ca:<Port1>/proj1/servlet Machine
Name …/proj1/firstservlet
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 15
Mapping URL to Machine Directory
classes
WEB-INF
proj1
Webapps
Catalina
http://ui???.cs.ualberta.ca:portNum/proj1
http://ui???.cs.ualberta.ca:portNum/proj1/servlet
Put your plain HTML files here
Put your servlets here
<form name=“FirstServlet" method="GET" action=“firstservlet">
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 16
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("<html>"); out.println("<body>"); out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); out.println("</body>"); out.println("</html>"); }}
http://ugweb.cs.ualberta.ca/~c391/tutorial/examples/FirstServlet.java
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 17
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 18
What Does Your First Servlet Look Like?
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.*;
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("<html>"); out.println("<body>"); out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); out.println("</body>"); out.println("</html>"); }}
The javax.servlet and javax.servlet.http packages provide interfaces and classes for
writing servlets.
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.*;
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("<html>"); out.println("<body>"); out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); out.println("</body>"); out.println("</html>"); }}
Implement the Servlet interface: subclassing the existing GenericServlet class that implements Servlet
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();
// Write the HTML back to the browser out.println("<html>"); out.println("<body>"); out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); out.println("</body>"); out.println("</html>"); }}
Invoke the servlet’s service method
The service method takes two arguments:• ServletRequest: containing info about the request from the browser.• ServletRespone: containing info about the response going back.
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 {
// 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("<html>"); out.println("<body>"); out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); out.println("</body>"); out.println("</html>"); }}
Tell the Web browser what will be returned is HTML. Required!
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("<html>"); out.println("<body>"); out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); out.println("</body>"); out.println("</html>"); }}
The response object has the methods necessary to get an output stream for writing a response.
A general rule of thumb:• Writing out text: use a PrintWriter object by calling getWriter()• Sending binary data to the browser: use a ServletOutputStream by calling getOutputStream()
Some content types require a slightly different character set, and the PrintWriter object automatically adjusts the character set based on the content type.
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 24
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("<html>"); out.println("<body>"); out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); out.println("</body>"); out.println("</html>"); }}
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 25
Servlet Life Cycle
Initializes the servlet instance -run init method
Servlets accept request fromClients and return data back
- run service method
If the engine needs to remove the servlet,
it finalizes the servlet - run destroy method
Loads the servlet (if it has not yet been loaded)
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 26
The Servlet Interface Hierarchy
Servlet Interface
GenericServlet Class
HttpServlet Class
Your servlet class
Definition of The 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
CMPUT 391 – Database Management Systems 27
The HttpServlet Class
It has extra methods and special request-and-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 28
The HttpServlet Class
service
doGet
doPost
doPut
doDelete
Web Browser
GetPost
Put
Delete
• 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.
HTTP request
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 29
The Second Servlet Example
Refer to Asn2Sample.java and Asn2Sample.html in
http://ugweb.cs.ualberta.ca/~c391/tutorial/servletbasics.htm
l
Acces servlet using the HTML form “Subclass” the HttpServlet class rather than th
e GenericServlet class
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 30
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/tutorial/doc/Servlets.html
Other resources:– http://ugweb.cs.ualberta.ca/~c391
Lab 3 Tomcat and Servlets
CMPUT 391 – Database Management Systems 31
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”)