An Example Using Servlet Initialization and Page Modification Dates

By: aathishankaran Emailed: 1700 times Printed: 2205 times    

Latest comments
By: rohit kumar - how this program is work
By: Kirti - Hi..thx for the hadoop in
By: Spijker - I have altered the code a
By: ali mohammed - why we use the java in ne
By: ali mohammed - why we use the java in ne
By: mizhelle - when I exported the data
By: raul - no output as well, i'm ge
By: Rajesh - thanx very much...
By: Suindu De - Suppose we are executing

The program shows a servlet that uses init to do two things. First, it builds an array of 10 integers. Since these numbers are based upon complex calculations, I don’t want to repeat the computation for each request. So I have doGet look up the values that init computed instead of generating them each time. The results of this technique are shown. However, since all users get the same result, init also stores a page modification date that is used by the getLastModified method.

 LotteryNumbers.java


import java.io.*;  
import javax.servlet.*;  
import javax.servlet.http.*;  
public class LotteryNumbers extends HttpServlet {  
private long modTime;  
private int[] numbers = new int[10];

public void init() throws ServletException {

// Round to nearest second (ie 1000 milliseconds)  
modTime = System.currentTimeMillis()/1000*1000;  
for(int i=0; i<numbers.length; i++) {  
numbers[i] = randomNum();  
}

}  
public void doGet(HttpServletRequest request, HttpServletResponse response)  
throws ServletException, IOException {  

response.setContentType("text/html");  
PrintWriter out = response.getWriter();  
String title = "Your Lottery Numbers";  
out.println(ServletUtilities.headWithTitle(title) +

"<BODY BGCOLOR=\"#FDF5E6\">\n" +  
"<H1 ALIGN=CENTER>" + title + "</H1>\n" +  
"<B>Based upon extensive research of " +  
"astro-illogical trends, psychic farces, " +  
"and detailed statistical claptrap, " +  
"we have chosen the " + numbers.length +  
" best lottery numbers for you.</B>" +  
"<OL>");

for(int i=0; i<numbers.length; i++) {  
out.println(" <LI>" + numbers[i]);  
}

out.println("</OL>" +

"</BODY></HTML>");

This method should return a modification time expressed in milliseconds since 1970, as is standard with Java dates. The time is automatically converted to a date in GMT appropriate for the Last-Modified header. More importantly, if the server receives a conditional GET request (one specifying that the client only wants pages marked If-Modified-Since a particular date), the system compares the specified date to that returned by getLastModified, only returning the page if it has been changed after the specified date.

public long getLastModified(HttpServletRequest request) {

return(modTime);

}

// A random int from 0 to 99.

private int randomNum() {

return((int)(Math.random() * 100));

}

}

Browsers frequently make these conditional requests for pages stored in their caches, so supporting conditional requests helps your users as well as reducing server load. Since the Last-Modified and If-Modified-Since headers use only whole seconds, the get-LastModified method should round times down to the nearest second. It shows the result of requests for the same servlet with two slightly different If-Modified-Since dates. To set the request headers and see the response headers, I used WebClient, a Java application shown in previous article (WebClient: Talking to Web Servers Interactively) that lets you interactively set up HTTP requests, submit them, and see the results.


JSP Home | All JSP Tutorials | Latest JSP Tutorials

Sponsored Links

If this tutorial doesn't answer your question, or you have a specific question, just ask an expert here. Post your question to get a direct answer.



Bookmark and Share

Comments(0)


Be the first one to add a comment

Your name (required):


Your email(required, will not be shown to the public):


Your sites URL (optional):


Your comments:



More Tutorials by aathishankaran
Web Security Issues
The Web User's Perspective
Server-side plug-Ins
The best way to avoid security vulnerabilities with new server
JavaScript Security
Window Object
Working with Status Bar Messages
Retrieving a Portion of a String
Referencing Windows
Math Object
Frame Object
Document Object
Closing Windows
Built-in Object in Javascript
Textarea Object

More Tutorials in JSP
LifecycleException: service.getName(): "Catalina"; Protocol handler start failed: `java.net.BindException: Permission denied <null>:80
JSP Alert Example
JSP CheckBox Example
Uploading an Image to a Database using JSP
Uploading a file to a server using JSP
A JSP page that gets properties from a bean
The page Directive in JSP
The taglib, tag, include, attribute and the variable Directive in JSP
Declarations in JSP
Scriptlets and Expressions in JSP
Tag Libraries in JSP
The Request Object in JSP
The Response Object in JSP
The Out Object in JSP
The Session Object in JSP

More Latest News
Most Viewed Articles (in JSP )
The Advantages of JSP
What are the different scopes in JSP?
JSP CheckBox Example
The JSP Program running first Time.
Tags using in jsp
Tag libraries
A Servlet That Generates HTML
An Example Using Servlet Initialization and Page Modification Dates
Simple HTML-Building Utilities
Form Object
Retrieving a Portion of a String
Comparison operators in JSP
Automatically Including Preludes and Codas in JSP
The Tag Life Cycle with Attributes in JSP
The BodyTag Interface in JSP
Most Emailed Articles (in JSP)
What is JSP?
Declaring variable in JSP
A Servlet That Generates HTML
Retrieving a Portion of a String
JSP Example to connect to MS SQL database using Tomcat Connection Pool
The Application Object in JSP
Cookies using JSP or Java Bean
Click to Activate and Use this control
The JSP Program running first Time.
Scriptlets
Server Side Programming
Syntax For JSP Declaratives
Embedding java codes in jsp sciptlets
Tags using in jsp
JSP pages in servlet