Using and Writing Java Servlets

With the power of the Java API set, servlets can provide complex, dynamic web pages and form processing.
Making Sure It Works

Point your web browser to http://localhost.localdomain/examples/servlets/, and execute any one of the examples to confirm that your installation and environment is a success. Another way is to use http://localhost:8080/.

If you do experience problems, you will need to revisit the setup documentation. Unfortunately, the documentation is not very user-friendly for any of the servlet enablers I use. You also can read the various FAQs and forums available on the Apache web site and servlet enablers.

The First Servlet

Listing 1 is an example of creating a servlet. This example will generate a web page that will display a simple message.

Listing 1. First Servlet

Note that a servlet extends the HttpServlet class. This is located in the Tomcat installation directory, in this instance /var/tomcat/lib/servlet.jar. When you want to generate HTML output, it is necessary to obtain the output channel with response.getWriter(). It also is necessary to set the CLASSPATH to include the full names of the .jar files, e.g.,

export CLASSPATH=/var/tomcat/lib/servlet.jar:$CLASSPATH

Next, compile with javac FirstServlet.java. Ensure that you are using the same JDK that Tomcat has been set up to use (as described previously).

To make things simpler for the this exercise, place the generated .class files into /var/tomcat/webapps/examples/servlets (the actual configuration of Apache and Tomcat are beyond the scope of this article). To execute the servlet, open the web page at http://localhost.localdomain/examples/servlet/FirstServlet or http://localhost:8080/servlet/FirstServlet. And viola, the output seen below has been created dynamically:

Hello Fellow Servlets

Creating a Table of Useful Information

Listing 2 not only demonstrates how to display useful information, but also shows the security concerns involved. Servlets must be written so that no input from a remote browser can give a cracker access to certain resources. Even something simple, like causing an error in the servlet, may cause the JVM to perform differently.

Listing 2. TableServlet

The example generates the HTML code for a table, which a selective query populates by the output provided from a system API to retrieve certain configuration variable settings (see Listing 3). This, for instance, can be used as a template to a database query using JDBC (Java Database Connectivity).

Listing 3. TableServlet Output

Processing Form Input

Listing 4 demonstrates how a servlet can not only generate dynamic web pages, but also process incoming data via an HTML form. To process input from a form, it is necessary for the servlet to override two functions: doGet and doPost. The doGet function always needs to be defined and forms the default behavior of the servlet and the processing of HTML form data sent via the GET method. The doPost function is used only when HTML form data is sent using the POST method, which is a more robust way than the GET method. In this example, doGet reports an error because it will be invoked only if the HTML form data was not sent with the POST method. In the doPost function, the request.getParameter calls are used to retrieve the corresponding parameter's value. Those of you who have used other CGI scripts may notice that this is a very simple and straightforward way to retrieve these values, which usually can end up being an onerous task.

Listing 4. InputServlet

Listing 5 shows the HTML input form, which a servlet could also have generated. Figure 1 shows a snapshot of this form.

Listing 5. InputServlet HTML Input Form

Figure 1. InputServlet HTML Input Form Snapshot

The output reorganizes the entered data and displays it as an HTML page:

Hello, your name is Polly, Molly Polly

Again, this data could have been passed to a file or database.

______________________

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

code to display charts

raghu's picture

i want to display more than one cahrts in a web page by using java by passing x-axis nad y-axis. and the data should fetch from oracle database. the query should execute in the backend.

Can u pls sort this out

rimi's picture

hi.thanks for the wonderful stuff.
i have a problem, however.
I developed a login form in html,got it validated for user authentication through java servlets,and if user is valid the servlet is redirected to another html page, but now i wish to edit certain tags of the html page before redirection, kindly find some time to answer this soon.

Posting from Http DoPost without html form

Anonymous's picture

Hi,

How can I call DoPost directly from the code, without html post method?

Thanks,

Re: Using and Writing Java Servlets

Anonymous's picture

Good review. Right on target on the configuration being troublesome. The beating of old drums such as 'recompiling for new API's' or 'Java is slow' is unfortunately pure bantor. Everybody in every language recompiles code from time to time. And saying 'java is slow' is akin to the windoz jokers preaching that 'linux has no desktop interface'. How very yesterday....

running servlet

alankar's picture

Hi,

I tried your example of form response servlet. Can you tell me where should I put the html form file and the class file of the sevlet? so that I can try it on Abyss Server/Tomcat/Servletrunner

Thanks,

Alankar

Re: Using and Writing Java Servlets

Anonymous's picture

I like the tutorial, it will help me learn. I wish some of the value judgements could have been left out. I am, however, sick of Java people bashing "scripting" langs that they clearly have no knowledge of.

Eric

Re: Using and Writing Java Servlets

Anonymous's picture

I really like this Tutorial too! I just start using Servlet yesterday and I have already create a WebApp information Table from what I have learned from this session. Thank you!

==Sandy

Re: Using and Writing Java Servlets

Anonymous's picture

No credit is given to mod_perl, which only loads one instance of the Perl interpreter. Within mod_perl, pages are compiled once and run many times during the life of the server process. Many major web sites use the power of mod_perl to leverage the speed of Apache and the power and flexibility of Perl to generate rich, dynamic, and lightning-fast Web sites.

Re: Using and Writing Java Servlets

Anonymous's picture

The article is not about mod_perl. However I do agree the article is a bit misleading as nobody in their right mind uses perl/php via CGI with Apache.

I like this article but can u

Amit's picture

I like this article but can u plz tell me the full way to run Servlet on tomcat.And how to modified or create web.xml for the servlet.

White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState