craigmcc    2002/07/27 19:25:58

  Modified:    doc/userGuide index.xml preface.xml
  Log:
  Check in a bunch more pointers to further information, and start filling
  out the sections on servlet topics.
  
  Revision  Changes    Path
  1.13      +10 -8     jakarta-struts/doc/userGuide/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/doc/userGuide/index.xml,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- index.xml 5 Jul 2002 15:55:48 -0000       1.12
  +++ index.xml 28 Jul 2002 02:25:58 -0000      1.13
  @@ -18,14 +18,16 @@
           <ul>
               <li><a href="preface.html">0. Preface</a>
               <ul>
  -              <li><a href="preface.html#http">HTTP, HTML, and User Agents</a></li>
  -              <li><a href="preface.html#cycle">The HTTP Request/Response 
Cycle</a></li>
  -              <li><a href="preface.html#java">The Java Language and Application 
Frameworks</a></li>
  -              <li><a href="preface.html#javabeans">JavaBeans</a></li>
  -              <li><a href="preface.html#resources">Properties files and  
ResourceBundles</a></li>
  -              <li><a href="preface.html#servlets">Java Servlets</a></li>
  -              <li><a href="preface.html#jsp">JavaServer Pages and JSP Tag 
Libraries</a></li>
  -              <li><a href="preface.html#xml">Extensible Markup Language</a></li>
  +              <li><a href="preface.html#suspects">0.1 The Usual Suspects</a></li>
  +              <li><a href="preface.html#http">0.2 HTTP, HTML, and User 
Agents</a></li>
  +              <li><a href="preface.html#cycle">0.3 The HTTP Request/Response 
Cycle</a></li>
  +              <li><a href="preface.html#java">0.4 The Java Language and Application 
Frameworks</a></li>
  +              <li><a href="preface.html#javabeans">0.5 JavaBeans</a></li>
  +              <li><a href="preface.html#resources">0.6 Properties Files and  
ResourceBundles</a></li>
  +              <li><a href="preface.html#servlets">0.7 Java Servlets</a></li>
  +              <li><a href="preface.html#jsp">0.8 JavaServer Pages and JSP Tag 
Libraries</a></li>
  +              <li><a href="preface.html#xml">0.9 Extensible Markup Language</a></li>
  +              <li><a href="preface.html#jaas">0.10 JAAS</a></li>
               </ul></li>
    
              
  
  
  
  1.6       +327 -32   jakarta-struts/doc/userGuide/preface.xml
  
  Index: preface.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/doc/userGuide/preface.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- preface.xml       12 Jul 2002 03:59:32 -0000      1.5
  +++ preface.xml       28 Jul 2002 02:25:58 -0000      1.6
  @@ -11,7 +11,7 @@
   
     <chapter name="0. Preface: Core Technologies">
   
  -  <section name="0.1 The Usual Suspects" href="prereqs">
  +  <section name="0.1 The Usual Suspects" href="suspects">
   
       <p>
         This User Guide is written for active web developers and assumes a working
  @@ -24,7 +24,7 @@
         <li><a href="#cycle">The HTTP Request/Response Cycle</a></li>
         <li><a href="#java">The Java Language and Application Frameworks</a></li>
         <li><a href="#javabeans">JavaBeans</a></li>
  -      <li><a href="#resources">Properties files and  ResourceBundles</a></li>
  +      <li><a href="#resources">Properties Files and  ResourceBundles</a></li>
         <li><a href="#servlets">Java Servlets</a></li>
         <li><a href="#jsp">JavaServer Pages and JSP Tag Libraries</a></li>
         <li><a href="#xml">Extensible Markup Language</a></li>
  @@ -72,6 +72,12 @@
       <li><a href="http://www.w3.org/MarkUp/Guide/";><b>Getting started with 
HTML</b></a> by Dave Raggett</li>
       <li><a 
href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/HTTP.html#63796";>
       <b>HTTP Overview</b></a> in the Java Web Services Tutorial.</li>
  +    <li><a href="http://www.rfc-editor.org/rfc/rfc2616.txt";><strong>HTTP/1.1
  +        </strong></a> Specification</li>
  +    <li><a href="http://www.rfc-editor.org/rfc/rfc2617.txt";><strong>HTTP
  +        Basic and Digest Authentication</strong></a> Specification</li>
  +    <li><a href="http://www.rfc-editor.org/rfc/rfc2109.txt";><strong>State
  +        Management Mechanism</strong></a> Specification (Cookies)</li>
       </ul>
       </section>
   
  @@ -94,14 +100,20 @@
   
       <p>Struts is written in the popular and versatile
       <a href="http://java.sun.com/docs/books/jls/first_edition/html/index.html";>Java 
programming language</a>.
  -    Java is an object-orientated language, and Struts makes good use of many 
object-orientated techniques.
  -    A good understanding of Java, and especially object-orientated programming 
(OOP) will help
  +    Java is an object-orientated language, and Struts makes good use of many
  +    object-orientated techniques.  In addition, Java natively supports the
  +    concept of <em>threads</em>, which allows more than one task to be
  +    performed at the same time.  A good understanding of Java, and especially
  +    object-orientated programming (OOP) and threading, will help
       you get the most out of Struts and this User Guide. </p>
   
  -    <p>For more about Java and OOP, see </p>
  +    <p>For more about Java and threads, see </p>
   
       <ul>
       <li><a 
href="http://java.sun.com/docs/books/tutorial/java/index.html";><b>Learning the Java 
Language</b></a> in the Java Tutorial</li>
  +    <li><a 
href="http://java.sun.com/docs/books/tutorial/essentials/threads/index.html";>
  +        <b>Threads: Doing Two or More Tasks At Once</b></a> in the Java Language
  +        Tutorial</li>
       </ul>
   
       <p>Even if you have worked with Java and OOP before, it can also help to be 
aware of the
  @@ -134,31 +146,39 @@
       <p>For more about JavaBeans, see</p>
   
       <ul>
  -    <li><a 
href="http://java.sun.com/docs/books/tutorial/javabeans/index.html";><b>The JavaBean 
Trail</b></a> in the Java Tutorial</li>
  -    <li><a 
href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPBeans.html";><b>JavaBeans
 Components in JSP Pages</b></a> in the Java Web Services Tutorial</li>
  +    <li><a href="http://java.sun.com/products/javabeans/docs/";><strong>The
  +        JavaBeans Component Architecture Documentation</strong></a> page at
  +        <code>java.sun.com</code>, including a link to download the
  +        <a href="http://java.sun.com/products/javabeans/docs/spec.html";>
  +        JavaBeans 1.01 Specification</a></li>
  +    <li><a href="http://java.sun.com/docs/books/tutorial/javabeans/index.html";>
  +        <b>The JavaBean Trail</b></a> in the Java Tutorial</li>
  +    <li><a 
href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPBeans.html";>
  +        <b>JavaBeans Components in JSP Pages</b></a> in the Java Web Services 
Tutorial
  +        </li>
       </ul>
   
  -    </section>
  +      <section name="0.5.1 Reflection" href="reflection">
   
  -    <section name="0.5.1 Reflection" href="reflection">
  +      <p>[:TODO:]</p>
   
  -    <p>[:TODO:]</p>
  +      </section>
   
  -    </section>
  +      <section name="0.5.2 Maps" href="Maps">
   
  -    <section name="0.5.2 Maps" href="Maps">
  +      <p>[:TODO:]</p>
   
  -    <p>[:TODO:]</p>
  +      </section>
   
  -    </section>
  +      <section name="0.5.3 DynaBeans" href="dynabeans">
   
  -    <section name="0.5.3 DynaBeans" href="dynabeans">
  +      <p>[:TODO:]</p>
   
  -    <p>[:TODO:]</p>
  +      </section>
   
       </section>
   
  -    <section name="0.6 Properties files and ResourceBundles" href="resources">
  +    <section name="0.6 Properties Files and ResourceBundles" href="resources">
   
       <p>Java applications, including web applications, are often configured using
       <a 
href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/Properties.html";>Properties</a>
  @@ -201,21 +221,290 @@
       <p>For more about Java Servlets, see </p>
   
       <ul>
  -    <li><a href=""><b>Java Servlet Technology</b></a> in the Java Web
  -    Services Tutorial.</li>
  +    <li><a href="http://java.sun.com/products/servlet/";><strong>The
  +        Java Servlet Technology</strong></a> page at
  +        <code>java.sun.com</code></li>
  +    <li><a href="http://java.sun.com/products/servlet/download/";><strong>The
  +        Servlet 2.2 and 2.3 Specifications</strong></a> download page at
  +        <code>java.sun.com</code></li>
  +    <li><a 
href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets.html";>
  +        <b>Java Servlet Technology</b></a> in the Java Web Services Tutorial.</li>
  +    <li><a href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebApp.html";>
  +        <b>Web Applications</b></a> in the Java Web Services Tutorial.</li>
       </ul>
   
  -    </section>
  +      <section name="0.7.1 Servlets" href="servlets">
   
  -    <section name="0.7.1 Java Servlet Contexts" href="contexts">
  +      <p>A <em>servlet</em> is a web component, managed by a <em>servlet
  +      container</em> (or web container), that generates dynamic content.
  +      An instance of each defined servlet is created for you the first time
  +      it is requested (or at application startup, depending on a setting in
  +      the web application deployment descriptor), and is used to process
  +      zero or more requests that are <em>mapped</em> to that servlet by
  +      a <code>&lt;servlet-mapping&gt;</code> element in the web application
  +      deployment descriptor.</p>
  +
  +      <p>A servlet is generally a subclass of
  +      <code>javax.servlet.http.HttpServlet</code>, and must implement the
  +      following methods:</p>
  +      <ul>
  +      <li><strong>public void init(ServletConfig config)</strong> - Called by the
  +          servlet container when the servlet instance is first created, and
  +          before any request is processed.</li>
  +      <li><strong>public void doGet(HttpServletRequest request,
  +          HttpServletResponse response)</strong> - Called to process a
  +          specific request received using the HTTP <code>GET</code> protocol,
  +          which generates a corresponding dynamic response.</li>
  +      <li><strong>public void doPost(HttpServletRequest request,
  +          HttpServletResponse response)</strong> - Called to process a
  +          specific request received using the HTTP <code>POST</code> protocol,
  +          which generates a corresponding dynamic response.</li>
  +      <li><strong>public void destroy()</strong> - Called by the servlet
  +          container when it takes this servlet instance out of service,
  +          such as when a web application is being undeployed or when the
  +          entire container is being shut down.</li>
  +      </ul>
  +
  +      <p>Because there is only a single instance of a particular servlet
  +      running, it is quite common for several calls to the <code>doGet()</code>
  +      or <code>doPost()</code> methods to be occurring at the same time (on
  +      separate threads).  Therefore, these methods (and any methods they call)
  +      must be programmed in a <em>thread-safe</em> manner.</p>
  +
  +      <p>Struts includes a single servlet
  +      (<code>org.apache.struts.action.ActionServlet</code>) that acts as a
  +      Controller in the Model-View-Controller architecture.  In addition, if
  +      you are using them, each JSP page you create is automatically converted
  +      into a servlet.</p>
  +
  +      </section>
  +
  +      <section name="0.7.2 Servlet Context" href="context">
  +
  +      <p>The <em>ServletContext</em> interface defines a servlet's view of
  +      the web application within which the servlet is running.  It is
  +      accessible in a servlet via the <code>getServletConfig()</code> method,
  +      and in a JSP page as the <code>application</code> implicit variable.
  +      Servlet contexts provide several APIs that are very useful in building
  +      Struts based web applications:</p>
  +      <ul>
  +      <li><em>Access To Web Application Resources</em> - A servlet can
  +          access static resource files within the web application using the
  +          <code>getResource()</code> and <code>getResourceAsStream()</code>
  +          methods.</li>
  +      <li><em>Servlet Context Attributes</em> - The context makes available
  +          a storage place for Java objects, identified by string-valued keys.
  +          These attributes are global to the entire web application, and may
  +          be accessed by a servlet using the <code>getAttribute()</code>,
  +          <code>getAttributeNames()</code>, <code>removeAttribute()</code>, and
  +          <code>setAttribute()</code> methods.  From a JSP page, servlet
  +          context attributes are also known as "application scope beans".
  +          </li>
  +      </ul>
  +
  +      <p>See the Javadocs for <code>javax.servlet.ServletContext</code>
  +      for more information.</p>
  +
  +      </section>
  +
  +      <section name="0.7.3 Servlet Request" href="request">
  +
  +      <p>Each request processed by a servlet is represented by a Java
  +      interface, normally a <code>javax.servlet.http.HttpServletRequest</code>.
  +      The request interface provides an object oriented mechanism to access
  +      all of the information that was included in the underlying HTTP request,
  +      including:</p>
  +      <ul>
  +      <li><em>Cookies</em> - The set of cookies included with this request
  +          are available via the <code>getCookies()</code> method.</li>
  +      <li><em>Headers</em> - HTTP headers that were included with
  +          the request are accessible by name.  You can enumerate the names
  +          of all included headers.</li>
  +      <li><em>Parameters</em> - Request parameters, including those from
  +          the query string portion of the URL and from the embedded content
  +          of the request (POST only) are available by name.</li>
  +      <li><em>Request Characteristics</em> - Many other characteristics
  +          of the incoming HTTP request, such as the method used (normally
  +          GET or POST) the protocol scheme used ("http" or "https"), and
  +          similar values.</li>
  +      <li><em>Request URI Information</em> - The original request URI
  +          being processed is available via <code>getRequestURI()</code>.
  +          In addition, the constituent parts into which the servlet container
  +          parses the request URI (contextPath, servletPath, and pathInfo) are
  +          available separately.</li>
  +      <li><em>User Information</em> - If you are using
  +          <a href="#security">Container Managed Security</a>, you can ask
  +          the username of the authenticated user, retrieve a
  +          <code>Principal</code> object representing the current user, and
  +          whether the current user is authorized for a specified role.</li>
  +      </ul>
  +
  +      <p>In addition, servlet requests support <em>request attributes</em>
  +      (from JSP, these are "request scope beans"), analogous to the servlet
  +      context attributes described above.  Request attributes are often used
  +      to communicate state information from a business logic class that
  +      generates it to a view component (such as a JSP page) that will use
  +      the information to produce the corresponding response.</p>
  +
  +      <p>The servlet container guarantees that a particular request will
  +      be processed by a servlet on a single thread.  Therefore, you do not
  +      generally have to worry about the thread safety of your access to
  +      request properties and attributes.</p>
  +
  +      <p>See the Javadocs for <code>javax.servlet.ServletRequest</code> and
  +      <code>javax.servlet.http.HttpServletRequest</code> for more
  +      information.</p>
  +
  +      </section>
  +
  +      <section name="0.7.4 Servlet Response" href="response">
  +
  +      <p>The primary purpose of a Servlet is to process an incoming
  +      <a href="#request">Servlet Request</a> and convert it into a
  +      corresponding response.  This is performed by calling appropriate
  +      methods on the <code>javax.servlet.http.HttpServletResponse</code>
  +      interface.  Available methods let you:</p>
  +      <ul>
  +      <li><em>Set Headers</em> - You can set HTTP headers that will be
  +          included in the response.  The most important header is the
  +          <code>Content-Type</code> header, which tells your client what
  +          kind of information is included in the body of this response.
  +          This is typically set to <code>text/html</code> for an HTML page,
  +          or <code>text/xml</code> for an XML document.</li>
  +      <li><em>Set Cookies</em> - You can add cookies to the current
  +          response.</li>
  +      <li><em>Send Error Responses</em> - You can send an HTTP error status
  +          (instead of a usual page of content) using
  +          <code>sendError()</code>.</li>
  +      <li><em>Redirect To Another Resource</em> - You can use the
  +          <code>sendRedirect()</code> method to redirect the client to
  +          some other URL that you specify.</li>
  +      </ul>
  +
  +      <p>An important principle in using the servlet response APIs is that
  +      any methods you call to manipulate headers or cookies
  +      <strong>MUST</strong> be performed before the first buffer-full of
  +      content has been flushed to the client.  The reason for this restriction
  +      is that such information is transmitted at the beginning of the HTTP
  +      response, so trying things like adding a header after the headers have
  +      already been sent will not be effective.</p>
  +
  +      <p>When you are using JSP pages (which is the typical mechanism for
  +      producing a response when using Struts), you will not generally
  +      use the servlet response APIs directly.  Instead, the JSP page compiler
  +      in your servlet container will convert your page into a servlet that
  +      writes the content of the JSP page to the response, interspersing dynamic
  +      information where you have called out JSP custom tags (such as
  +      <code>&lt;bean:message&gt;</code> or <code>&lt;html:text&gt;</code>)
  +      in your page.</p>
  +
  +      <p>See the Javadocs for <code>javax.servlet.ServletRequest</code> and
  +      <code>javax.servlet.http.HttpServletRequest</code> for more
  +      information.</p>
  +
  +      </section>
  +
  +      <section name="0.7.5 Filtering" href="filter">
  +
  +      <p>If you are using a servlet container based on version
  +      <strong>2.3</strong> or later of the Servlet Specification (such as
  +      Tomcat 4.x), you can take advantage of the new Filter APIs that
  +      let you compose a set of components that will process a request or
  +      response.  Filters are aggregated into a chain in which each filter
  +      has a chance to process the request and response before and after
  +      it is processed by subsequent fitlers (and the servlet that is ultimately
  +      called).</p>
  +
  +      <p>Struts 1.0 and 1.1 require only version 2.2 or later of the
  +      Servlet Specification to be implemented by your servlet container,
  +      so Struts does not itself utilize Filters at this time.  However,
  +      you can still use them yourself if you are running on a 2.3 or later
  +      container.  It is very likely that future versions of Struts will
  +      require a Servlet 2.3 or later container, so that Struts itself
  +      can utilize filters.</p>
  +
  +      <p>See the Javadocs for <code>javax.servlet.Filter</code> for more
  +      information.</p>
  +
  +      </section>
  +
  +      <section name="0.7.6 Sessions" href="session">
  +
  +      <p>One of the key characteristics of the HTTP protocol is that it is
  +      <em>stateless</em>.  In other words, there is nothing built in to
  +      HTTP that identifies a subsequent request from the same user as being
  +      related to a previous request from that user.  This makes building an
  +      application that wants to engage in a conversation with the user over
  +      several requests to be somewhat difficult.</p>
  +
  +      <p>To alleviate this difficulty, the servlet API provides a programmatic
  +      concept called a <em>session</em>, represented as an object that
  +      implements the <code>javax.servlet.http.HttpSession</code> interface.
  +      The servlet container will use one of two techniques (cookies or
  +      URL rewriting) to ensure that the next request from the same user will
  +      include the <em>session id</em> for this session, so that state
  +      information saved in the session can be associated with multiple
  +      requests.  This state information is stored in <em>session
  +      attributes</em> (in JSP, they are known as "session scope beans").</p>
  +
  +      <p>To avoid occupying resources forever when a user fails to complete
  +      an interaction, sessions have a configurable <em>timeout interval</em>.
  +      If the time gap between two requests exceeds this interval, the session
  +      will be timed out, and all session attributes removed.  You define a
  +      default session timeout in your web application deployment descriptor,
  +      and you can dynamically change it for a particular session by calling
  +      the <code>setMaxInactiveInterval()</code> method.</p>
  +
  +      <p>Unlike requests, you need to be concerned about thread safety on
  +      your session attributes (the methods these beans provide, not the
  +      <code>getAttribute()</code> and <code>setAttribute()</code> methods
  +      of the session itself).  It is surprisingly easy for there two be
  +      multiple simultaneous requests from the same user, which will therefore
  +      access the same session.</p>
  +
  +      <p>Another important consideration is that session attributes occupy
  +      memory in your server <em>in between</em> requests.  This can have
  +      an impact on the number of simultaneous users that your application can
  +      support.  If your application requirements include very large numbers of
  +      simultaneous users, you will likely want to minimize your use of
  +      session attributes, in an effort to control the overall amount of memory
  +      required to support your application.</p>
  +
  +      <p>See the Javadocs for <code>javax.servlet.http.HttpSession</code>
  +      for more information.</p>
  +
  +      </section>
  +
  +      <section name="0.7.7 Dispatching Requests" href="dispatch">
  +
  +      <p>[:TODO:]</p>
  +
  +      </section>
  +
  +      <section name="0.7.8 Web Applications" href="webapp">
  +
  +      <p>[:TODO:]</p>
  +
  +      </section>
  +
  +      <section name="0.7.9 Application Lifecycle Events" href="events">
  +
  +      <p>[:TODO:]</p>
  +
  +      </section>
  +
  +      <section name="0.7.10 Security" href="security">
  +
  +      <p>[:TODO:]</p>
  +
  +      <p>For more information about container managed security, see:</p>
  +      <ul>
  +      <li><a 
href="http://java.sun.com/webservices/docs/1.0/tutorial/WebAppSecurity.html";>
  +          <strong>Web Application Security</strong></a> in the
  +          Java Web Services Tutorial</li>
  +      </ul>
   
  -    <p>[:TODO:]</p>
  -
  -    </section>
  -
  -    <section name="0.7.2 Java Servlet Forwards" href="forwards">
  -
  -    <p>[:TODO:]</p>
  +      </section>
   
       </section>
   
  @@ -235,6 +524,12 @@
       <p>For more about JavaServerPages and JSP Tag Libraries see  </p>
   
       <ul>
  +    <li><a href="http://java.sun.com/products/jsp/";><strong>The
  +        JavaServer Pages Technology</strong></a> page at
  +        <code>java.sun.com</code></li>
  +    <li><a href="http://java.sun.com/products/jsp/download/";><strong>The
  +        JSP 1.1 and 1.2 Specifications</strong></a> download page at
  +        <code>java.sun.com</code></li>
       <li><a 
href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPIntro.html";><b>JavaServer
 Pages Technology</b></a> in the Java Web Services Tutorial</li>
       <li><a 
href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPTags.html";><b>Custom 
Tags in JSP Pages</b></a> in the Java Web Services Tutorial</li>
       </ul>
  @@ -277,17 +572,17 @@
       While the framework makes good use of this API internally, it is not something 
most Struts developers
       would use when writing their own applications.</p>
   
  -    <section name="0.9.1 Descriptors" href="descriptors">
  +        <section name="0.9.1 Descriptors" href="descriptors">
   
  -    <p>[:TODO:]</p>
  +        <p>[:TODO:]</p>
  +
  +        </section>
   
       </section>
   
       <section name="0.10 JAAS" href="jaas">
   
       <p>[:TODO:]</p>
  -
  -    </section>
   
       <p align="center">
       Next: <a href="introduction.html">Introduction</a>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to