380 likes | 537 Vues
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 Server. Browser. HTTP Request. HTML. Operating System. Operating System. HTML Files.
E N D
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 Server Browser HTTP Request HTML Operating System Operating System HTML Files
The Dynamic Web HTTP Server Browser HTTP Request Servlet Engine HTML JVM Operating System Operating System .java files Data Files
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 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 Pros and Cons • Pros • Simplicity • Cons • Performance problem • Security problem
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 instancewhich 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 servletlifecycle • 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 response (HTML page) MyServlet 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 serverwhen • 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 servletsand 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 extendHttpServletand 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=200&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 • Why do we need JSP technology if we already have servlets?
JSP • Combinestatic 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” %>
<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> Simple JSP Code
More informations • http://developer.java.sun.com/developer/onlineTraining/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