Download Web based Applications, Tomcat and Servlets - Lab 3 -

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Open Database Connectivity wikipedia , lookup

Relational model wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Database wikipedia , lookup

Database model wikipedia , lookup

Concurrency control wikipedia , lookup

Clusterpoint wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Transcript
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,
<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
13
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
servlet 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
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
<form name=“FirstServlet" method="GET"
action=“firstservlet">
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("<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
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("<html>");
out.println("<body>");
out.println("<h1>Welcome to CMPUT391 Lab!</h1>");
out.println("</body>");
out.println("</html>");
}
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("<html>");
out.println("<body>");
out.println("<h1>Welcome to CMPUT391 Lab!</h1>");
out.println("</body>");
out.println("</html>");
}
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("<html>");
out.println("<body>");
out.println("<h1>Welcome to CMPUT391 Lab!</h1>");
out.println("</body>");
out.println("</html>");
}
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("<html>");
out.println("<body>");
out.println("<h1>Welcome to CMPUT391 Lab!</h1>");
out.println("</body>");
out.println("</html>");
}
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("<html>");
getOutputStream()
out.println("<body>");
out.println("<h1>Welcome to CMPUT391 Lab!</h1>"); Some content types require a slightly
out.println("</body>");
different character set, and the
out.println("</html>");
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("<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
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