Servlet and JSP
Download
Report
Transcript Servlet and JSP
Middleware
3/29/2001
Kang, Seungwoo
Lee, Jinwon
Description of Topics
1. CGI, Servlets, JSPs
2. Sessions/Cookies
3. Database Connection(JDBC, Connection pooling)
The Static Web
HTTP Request
Browser
HTML
HTTP Server
Operating System
Operating System
HTML
Files
The Dynamic Web
HTTP Request
Browser
HTML
HTTP Server
Servlet
Engine
Operating System
JVM
Operating System
.java
files
Data
Files
The Dynamic Web
To evolve from the static to the dynamic
web requires:
Generating HTML with scripts/programs
Tools & techniques to make it manageable
CGI, Servlet
JSP
Accessing and Updating data
JDBC
CGI
CGI
CGI is not a language. It's a simple protocol that
can be used to communicate between Web server
and CGI program.
A CGI script can be written in any language
(Virtually any Programming language: C, Perl, shell
script)
CGI
#include <stdio.h>
void main() {
/** Print the CGI response header, required for all HTML output. **/
printf(“Content-type:text/html\n\n”);
/** Print the HTML response page to STDOUT. **/
printf(“<html><head><title>Hello,CGI</title></head>\n”);
printf(“<body><h1>Hello CGI</h1></body></html>”);
}
CGI
CGI Pros and Cons
Pros
Simplicity
Cons
Performance problem
Security problem
Servlet
Servlet Basics
What is Servlet?
A program written in Java that runs on the
server, as opposed to the browser (applets).
Invoked with “servlet” keyword in URL
E.g. http://domain-name/servlet/MyServlet
Servlets vs. CGI
Servlets have several advantages over CGI
A Servlet does not run in a separate process.
A Servlet stays in memory between requests. A
CGI program needs to be loaded and started for
each CGI request.
There is only a single instance which answers all
requests concurrently. This saves memory
A Servlet can be run in a Sandbox, which allows
secure use of untrusted and potentially harmful
Servlets.
Servlet Container (engine)
Take and convert clients’ requests to an “object”
understood by a servlet
Provide an “object” to be used for response
Manage the servlet lifecycle
Make a servlet instance
Call the instance’s init()
Call the instance’s service() upon request
Call the instance’s destroy() before destroying the
instance
Mark the instance for garbage collection
Add-on Servlet Engines
Stand-alone Servlet Engines
Plug into popular web servers
Supports Web Server function
JSDK(Java Servlet Development Kit)2.1
Apache JServ 1.1/Tomcat 3.2.1
Servlet Flow
http://nclab.kaist.ac.kr/servlet/MyServlet
response
MyServlet
(HTML page)
HTTP request
Servlet
engine
Servlet Flow
A client Web browser submits HTTP
request specifying servlet, e.g.,
http://nclab.kaist.ac.kr/servlet/MyServlet
The HTTP server receives the request from
the client. The server parses the request and
forwards it to the servlet.
Servlet Flow
An instance of the servlet is created
(or activated) to process the request.
The servlet processes any form input data &
generates an HTML response.
This response is relayed back through the
HTTP server to the client browser, which
displays the page.
Temporary Servlets
loaded on demand
offer a good way to conserve resources in
the server for less-used functions.
Permanent Servlets
Loaded when the server is started, and live until
the server is shutdown
Servlets are installed as permanent extensions to a
server when
their start-up costs are very high (such as establishing a
connection with a DBMS),
they offer permanent server-side functionality (such as
an RMI service)
they must respond as fast as possible to client requests.
Key Servlet Packages
Java Servlet API
Defines the interface between servlets and
servers
javax.servlet
javax.servlet.http
javax.servlet.Servlet Interface
init(ServletConfig)
service(ServletRequest, ServletResponse)
Initializes the servlet.
Carries out a single request from the client.
destroy()
Called by the servlet container to indicate to a servlet that the
servlet is being taken out of service.
allow servlet to clean up any resources (such as open files or
database connections) before the servlet is unloaded
getServletConfig()
•
Returns a ServletConfig object, which contains
any initialization parameters and startup
configuration for this servlet.
getServletInfo()
•
Returns a string containing information about
the servlet
HTTP Support Classes
javax.servlet.http.HttpServlet provides an implementation
of the javax.servlet.Servlet interface
The easiest way to write an HTTP servlet is to extend
HttpServlet and add your own processing.
The class HttpServlet provides a service() method that
dispatches the HTTP messages to one of several methods:
doGet(), doPost(), doHead(), doDelete(), doPut() …
corresponding directly with the HTTP protocol methods.
A servlet's doGet() method should
Read request data, such as input parameters
http://localhost/servlets/LoanCalculator?principal=2
00&interest=0.05 ·····
Set response headers (length, type, and
encoding)
Write the response data
HelloServlet Example
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body><head><title>Hello 서블릿</title></head>");
out.println("<h1>첫번째 서블릿 입니다. </h1>");
out.println("</body></html>");
}
Servlet - features
Platform-independent
Performance
Easily extended due to class/package/bean
concepts in Java
JSP
JSP
Why do we need JSP technology if we
already have servlets?
JSP
Combine static HTML and dynamic Java in
one programming concept
Simplified, fast creation of web pages that
display dynamically-generated content.
Separation of web presentation from web
content
Microsoft’s similar concept
Active Server Pages
JSP
JSP code is compiled into Java servlet
class, then executed
Remains in memory
Only when any change in source file,
repeat the first step
JSP tags
Comment
Declaration
<!-- comment --> : HTML comment
<%-- comment --%> : Hidden comment
<%! declaration; %>
Expression
<%= expression %>
JSP tags
Scriptlet
Include Directive
<% code fragment %>
<%@ include file=“relative URL” %>
Page Directive
<%@ page language=“java” %>
<%@ page import=“package.*” %>
<%@ page contentType=“text/html” %>
<%@ session=“true|false” %>
Simple JSP Code
<html>
<head>
<title> 첫번째 jsp 페이지 </title>
</head>
<body bgcolor=ivory>
<center><h1>first jsp page</h1>
<%! String str=“NC Lab."; %>
<ul>
<% for (int i=0; i < 5; i++) {
out.println("<li>" + i);
}
%>
</ul>
<%= str %>
</center>
</body>
</html>
More informations
http://developer.java.sun.com/developer/onlineTraining/Se
rvlets/Fundamentals/servlets.html
http://java.sun.com/products/servlet/2.3/javadoc
Servlet packages
http://java.sun.com/j2ee/docs.html
J2EE Documents
http://java.sun.com/products/jdk/1.2/docs/api
J2SE v1.2.2 API Specification
http://www.javanuri.com
http://www.javastudy.co.kr