Middleware - PowerPoint PPT Presentation

1 / 38
About This Presentation
Title:

Middleware

Description:

A CGI script can be written in any language (Virtually any Programming language: C, Perl, shell script) #include stdio.h void main ... – PowerPoint PPT presentation

Number of Views:20
Avg rating:3.0/5.0
Slides: 39
Provided by: nclabK
Category:
Tags: middleware

less

Transcript and Presenter's Notes

Title: Middleware


1
Middleware

3/29/2001 Kang, Seungwoo Lee, Jinwon
2
Description of Topics
  • 1. CGI, Servlets, JSPs
  • 2. Sessions/Cookies
  • 3. Database Connection(JDBC, Connection pooling)

3
The Static Web
HTTP Server
Browser
HTTP Request
HTML
Operating System
Operating System
HTML Files
4
The Dynamic Web
HTTP Server
Browser
HTTP Request
Servlet Engine
HTML
JVM
Operating System
Operating System
.java files
Data Files
5
The Dynamic Web
  • To evolve from the static to the dynamic web
    requires
  • Generating HTML with scripts/programs
  • CGI, Servlet
  • Tools techniques to make it manageable
  • JSP
  • Accessing and Updating data
  • JDBC

6
CGI

7
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)

8
CGI
  • include ltstdio.hgt
  • void main()
  • / Print the CGI response header, required for
    all HTML output. /
  • printf(Content-typetext/html\n\n)
  • / Print the HTML response page to STDOUT. /
  • printf(lthtmlgtltheadgtlttitlegtHello,CGIlt/titlegtlt/head
    gt\n)
  • printf(ltbodygtlth1gtHello CGIlt/h1gtlt/bodygtlt/htmlgt)

9
CGI
10
CGI Pros and Cons
  • Pros
  • Simplicity
  • Cons
  • Performance problem
  • Security problem

11
Servlet

12
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

13
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.

14
(No Transcript)
15
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 instances init()
  • Call the instances service() upon request
  • Call the instances destroy() before destroying
    the instance
  • Mark the instance for garbage collection

16
  • Add-on Servlet Engines
  • Plug into popular web servers
  • Stand-alone Servlet Engines
  • Supports Web Server function
  • JSDK(Java Servlet Development Kit)2.1
  • Apache JServ 1.1/Tomcat 3.2.1

17
Servlet Flow
http//nclab.kaist.ac.kr/servlet/MyServlet
response (HTML page)
MyServlet
HTTP request
Servlet engine
18
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.

19
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.

20
Temporary Servlets
  • loaded on demand
  • offer a good way to conserve resources in the
    server for less-used functions.

21
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.

22
Key Servlet Packages
  • Java Servlet API
  • Defines the interface between servlets and
    servers
  • javax.servlet
  • javax.servlet.http

23
javax.servlet.Servlet Interface
  • init(ServletConfig)
  • Initializes the servlet.
  • service(ServletRequest, ServletResponse)
  • 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

24
  • 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

25
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.

26
  • A servlet's doGet() method should
  • Read request data, such as input parameters
  • http//localhost/servlets/LoanCalculator?principal
    200interest0.05
  • Set response headers (length, type, and encoding)
  • Write the response data

27
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("lthtmlgt")
  • out.println("ltbodygtltheadgtlttitlegtHello
    ???lt/titlegtlt/headgt")
  • out.println("lth1gt??? ??? ???. lt/h1gt")
  • out.println("lt/bodygtlt/htmlgt")

28
(No Transcript)
29
Servlet - features
  • Platform-independent
  • Performance
  • Easily extended due to class/package/bean
    concepts in Java

30
JSP
31
JSP
  • Why do we need JSP technology if we already have
    servlets?

32
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
  • Microsofts similar concept
  • Active Server Pages

33
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

34
JSP tags
  • Comment
  • lt!-- comment --gt HTML comment
  • lt-- comment --gt Hidden comment
  • Declaration
  • lt! declaration gt
  • Expression
  • lt expression gt

35
JSP tags
  • Scriptlet
  • lt code fragment gt
  • Include Directive
  • lt_at_ include filerelative URL gt
  • Page Directive
  • lt_at_ page languagejava gt
  • lt_at_ page importpackage. gt
  • lt_at_ page contentTypetext/html gt
  • lt_at_ sessiontruefalse gt

36
Simple JSP Code
  • lt for (int i0 i lt 5 i)
  • out.println("ltligt" i)
  • gt
  • lt/ulgt
  • lt str gt
  • lt/centergt
  • lt/bodygt
  • lt/htmlgt
  • lthtmlgt
  • ltheadgt
  • lttitlegt ??? jsp ??? lt/titlegt
  • lt/headgt
  • ltbody bgcolorivorygt
  • ltcentergtlth1gtfirst jsp pagelt/h1gt
  • lt! String strNC Lab." gt
  • ltulgt

37
(No Transcript)
38
More informations
  • http//developer.java.sun.com/developer/onlineTrai
    ning/Servlets/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
Write a Comment
User Comments (0)
About PowerShow.com