Servlet and JSP - KAIST

thickbugΛογισμικό & κατασκευή λογ/κού

28 Οκτ 2013 (πριν από 3 χρόνια και 5 μήνες)

68 εμφανίσεις

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

Browser

HTTP Server

HTML

Files

Operating System

Operating System

HTTP Request

HTML

The Dynamic Web

Browser

HTTP Server

.
java

files

Operating System

Operating System

HTTP Request

HTML

Servlet

Engine


Data

Files

JVM

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

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)



#
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

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


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



Servlet Flow

http://nclab.kaist.ac.kr/servlet/MyServlet

HTTP request


response

(HTML page)

Servlet
engine

MyServlet

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)


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



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
서블릿

瑩瑬e></he慤>"⤻


潵琮trin瑬n⠢<hㄾ
첫번째

서블릿

입니다
⸠</
hㄾ"⤻


潵琮trin瑬n⠢</b潤社</h瑭l>"⤻

}


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


<!
--

comment
--
> : HTML comment


<%
--

comment
--
%> : Hidden comment


Declaration



<%! declaration; %>


Expression


<%= expression %>


JSP tags


Scriptlet


<% code fragment %>


Include Directive


<%@ 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