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 HTTP Request HTML
The Dynamic Web Browser HTTP Server.java files 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 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 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( “ Hello,CGI \n ” ); printf( “ Hello 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.
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.Sandbox
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 request response (HTML page) Servlet engine MyServlet
Servlet Flow A client Web browser submits HTTP request specifying servlet, e.g., 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 javax.servlet.http.HttpServletjavax.servlet.Servlet The easiest way to write an HTTP servlet is to extend HttpServlet and add your own processing. HttpServlet The class HttpServlet provides a service() method that dispatches the HTTP messages to one of several methods:HttpServletservice() doGet(), doPost(), doHead(), doDelete(), doPut() … doGet()doPost()doHead()doDelete() corresponding directly with the HTTP protocol methods.
A servlet's doGet() method shoulddoGet() Read request data, such as input parameters 00&interest=0.05 ····· 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(" "); out.println(" Hello 서블릿 "); out.println(" 첫번째 서블릿 입니다. "); out.println(" "); }
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 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 : HTML comment : Hidden comment Declaration Expression
JSP tags Scriptlet Include Directive Page Directive
Simple JSP Code 첫번째 jsp 페이지 first jsp page <% for (int i=0; i < 5; i++) { out.println(" " + i); } %>
More informations rvlets/Fundamentals/servlets.html rvlets/Fundamentals/servlets.html Servlet packages J2EE Documents J2SE v1.2.2 API Specification