A Servlet That Generates HTML
By: aathishankaran in JSP Tutorials on 2007-02-14
Most servlets generate HTML, not plain text as in the previous example. To build HTML, you need two additional steps:
- Tell the browser that you are sending back HTML, and
- Modify the println statements to build a legal Web page.
You accomplish the first step by setting the HTTP Content-Type response header. In general, headers are set by the setHeader method of HttpServletResponse, but setting the content type is such a common task that there is also a special setContentType method just for this purpose. The way to designate HTML is with a type of text/html, so the code would look like this:
response.setContentType("text/html");
Although HTML is the most common type of document servlets create, it is not unusual to create other document types. For example, in the previous article (Using Servlets to Generate GIF Images) shows how servlets can build and return custom images, specifying a content type of image/gif. As a second example, in (The contentType Attribute) article shows how to generate and return Excel spreadsheets, using a content type of application/vnd.ms-excel. Don't be concerned if you are not yet familiar with HTTP response headers; they are discussed in next article. Note that if you need to set response headers before actually returning any of the content via the Print-Writer. That's because an HTTP response consists of the status line, one or more headers, a blank line, and the actual document, in that order.
The headers can appear in any order, and servlets buffer the headers and send them all at once, so it is legal to set the status code (part of the first line returned) even after setting headers. But servlets do not necessarily buffer the document itself, since users might want to see partial results for long pages. In version 2.1 of the servlet specification, the PrintWriter output is not buffered at all, so the first time you use the PrintWriter, it is too late to go back and set headers.
In version 2.2, servlet engines are permitted to partially buffer the output, but the size of the buffer is left unspecified. You can use the get-BufferSize method of HttpServletResponse to determine the size, or use setBufferSize to specify it. In version 2.2 with buffering enabled, you can set headers until the buffer fills up and is actually sent to the client. If you aren't sure if the buffer has been sent, you can use the isCommitted method to check.
The second step in writing a servlet that builds an HTML document is to have your println statements output HTML, not plain text. The structure of an HTML document is discussed more in the article (Simple HTML-Building Utilities), but it should be familiar to most readers. This program gives an example servlet, with the result.
Add Comment
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
- Your name, rating, website address, town, country, state and comment will be publicly displayed if entered.
- Aside from the data entered into these form fields, other stored data about your comment will include:
- Your IP address (not displayed)
- The time/date of your submission (displayed)
- Your email address will not be shared. It is collected for only two reasons:
- Administrative purposes, should a need to contact you arise.
- To inform you of new comments, should you subscribe to receive notifications.
- A cookie may be set on your computer. This is used to remember your inputs. It will expire by itself.
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
- Although the administrator will attempt to moderate comments, it is impossible for every comment to have been moderated at any given time.
- You acknowledge that all comments express the views and opinions of the original author and not those of the administrator.
- You agree not to post any material which is knowingly false, obscene, hateful, threatening, harassing or invasive of a person's privacy.
- The administrator has the right to edit, move or remove any comment for any reason and without notice.
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
- Data Science
- Android
- React Native
- AJAX
- ASP.net
- C
- C++
- C#
- Cocoa
- Cloud Computing
- HTML5
- Java
- Javascript
- JSF
- JSP
- J2ME
- Java Beans
- EJB
- JDBC
- Linux
- Mac OS X
- iPhone
- MySQL
- Office 365
- Perl
- PHP
- Python
- Ruby
- VB.net
- Hibernate
- Struts
- SAP
- Trends
- Tech Reviews
- WebServices
- XML
- Certification
- Interview
Comments