
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 command.
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 approach.
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 under
J906 - Java - Servlets in More Detail [3293] Distributing the server load - yet ensuring that each user return to the same system (Apache httpd and Tomcat) - (2011-05-18)
[3044] Changing a Servlet - more that just editing and compiling - (2010-11-12)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2652] Reading and writing cookies in Java Servlets and JSPs - (2010-02-26)
[1909] javax.servlet cannot be resolved - how to solve - (2008-11-26)
[1550] Java (JSP and Servlet examples) live on our server - (2008-02-23)
[1495] Single login and single threaded models - Java and PHP - (2008-01-04)
[479] New servlet from old - (2005-10-28)
J907 - JSP - JavaServer Pages [3046] Java Beans, tag libraries and JSPs - what and why. - (2010-11-13)
[2525] Using JSPs, Tag Libraries, Java Beans, Tomcat in one short example - (2009-12-04)
[2151] What is a JSP tag library? - (2009-05-01)
[2147] A very easy JSP (Java Server Page) - (2009-05-01)
[1050] The HTML++ Metalanguage - (2007-01-22)
[79] 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