Retiring, March 2020 - sorry, you have missed our final public course.
The Coronavirus situation has lead us to suspend public training - which was on the cards anyway, with no plans to resume
Please ask about private 'maintenance' training for Python, Tcl, Perl, PHP, Lua, etc
Happily continuing private consultancy / programming work
Servlet life cycle, and Java Servlet variable scope
If you write a 'traditional' program and run it ... then it is cleared from memory when you finish running it. It does its job then exits. And so it is with a java program that you run from the command line under the java
But if you're running a web server, where lots of users all call up the same page, you've got a different requirement / scenario. You really don't want a piece of code to keep dropping out of memory to be reloaded yet again a few milliseconds later as your next user comes along, as that would be hugely inefficient. So on a web server, when running Java, you may use the servlet
A Servlet is loaded into a container (we provide training on the Tomcat container
) and remains loaded - i.e. running as a daemon on service. Each time a user submits a GET request to the web server / servlet (i.e. follows a link to the URL that points to the servlet, or sends a default setup form to it), the doGet
method is run which processes a request
object into a response
object. And each time the user POSTs to the servlet's URL, the doPost
method is used to convert a request
to a response
When you're writing the class ("code") for a Java Servlet, then, you need to be very careful that you don't have one user leave behind variables / settings which the next user could pick up. On rare occasions, this "global scope" IS useful - for example to hold the highest bid so far for an item in an auction - but more usually, you'll want to use a "session scope" where a separate set of variables / settings are used for each user as they mover from page to page, adding things to their shopping cart. They you'll also have "local scope" - variables that are only used within an individual request.
Global scope variables may be defined as statics within the servlet class as a whole, session scope variables within a session object, and local variables within the methods of the servlet.
Init and finalise on my diagram show methods used to initialise a servlet when it's first loaded into the container, and used to flush it out when it's no longer needed after a long period of inactivity (written 2009-05-16)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesJ906 - Java - Servlets in More Detail 
Java web application for teaching - now with sessions and clustering / load balancing demonstrations - (2015-02-20) 
A Java servlet that is also a stand alone program. And a server that is also a web client. - (2015-02-19) 
Distributing the server load - yet ensuring that each user return to the same system (Apache httpd and Tomcat) - (2011-05-18) 
Changing a Servlet - more that just editing and compiling - (2010-11-12) 
The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11) 
Reading and writing cookies in Java Servlets and JSPs - (2010-02-26) 
javax.servlet cannot be resolved - how to solve - (2008-11-26) 
Java (JSP and Servlet examples) live on our server - (2008-02-23) 
Single login and single threaded models - Java and PHP - (2008-01-04) 
New servlet from old - (2005-10-28)J907 - JSP - JavaServer Pages 
Servlet v JSP (Java Server Page). What is the difference? - (2013-02-06) 
Java Beans, tag libraries and JSPs - what and why. - (2010-11-13) 
Using JSPs, Tag Libraries, Java Beans, Tomcat in one short example - (2009-12-04) 
What is a JSP tag library? - (2009-05-01) 
A very easy JSP (Java Server Page) - (2009-05-01) 
The HTML++ Metalanguage - (2007-01-22) 
Last day of Java - (2004-10-08)
Some other Articles
Are we IITT (Institute of IT Training) members?An FAQ on the Apache httpd and Apache Tomcat web servers, and on using them togetherAbstract Classes - JavaChoosing the right version of Java and TomcatServlet life cycle, and Java Servlet variable scopeWhat Linux run level am I in?You cannot please all of the people all of the timePatterns in numbers - room occupancyOffers that I can refuseMelksham Candidates for Wiltshire Unitary Election
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page
This is a page archived from The Horse's Mouth at
the diary and writings of Graham Ellis.
Every attempt was made to provide current information at the time the
page was written, but things do move forward in our business - new software
releases, price changes, new techniques. Please check back via
our main site for current courses,
prices, versions, etc - any mention of a price in "The Horse's Mouth"
cannot be taken as an offer to supply at that price.
Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).