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