Professional Documents
Culture Documents
Web applications are by default non-conversational. This means they are stateless,
they are unable to keep track of a conversation with a client. This is due to the usage
of HTTP which is a stateless communication protocol. To overcome this challenge,
we use sessions.
Sessions are objects that keep track of the conversation between a client and a web
application. The HttpSession class is used to create sessions. After a session is
created, communication between the client and the server becomes stateful (re-
member previous states). Below is a code snippet for creating a session in servlet.
1
5.2 HTTP
The protocol is connectionless or stateless. This means the server treats every re-
quest message as an autonomous or independent request. It does not link the cur-
rent request to previous ones. In the next chapters, we will learn how to overcome
this shortfall. This will help us to create web applications that are stateful, which are
applications that remember previous states. This makes them to keep the conver-
sation with the client.
An HTTP request message has headers with corresponding values. The request
message may have a body. The body is the payload (data) that the client wants to
send to the server. The reason that a payload is optional, is that client it is not always
the case that a user will be sending data to the server, at times the user will simply
request for data from the server. In such cases, the payload of the request message
will be empty.
2
I visited the TUT website by entering http://www.tut.ac.za on the browser. Below is
the information I obtained upon inspection of the request message.
According to the figure above, GET is the HTTP method used to make the request,
the version of HTTP used is HTTP/2, and the resource requested is:
http://www.tut.ac.za/catalogs/masterpage/TUT/favicon.ico
The Status of the request is 200, meaning the request has been successfully
handled by the server. The request also generated some headers. Below are the
headers.
3
5.2.2 Anatomy of HTTP response messages
The first line of the line the response also has three elements separated by white
spaces. The first element is the HTTP version used, the second element is the
numerical value of the response status code, and the third element is the description
of the status code. Table 2 below shows the applicable HTTP status codes and their
description.
Here are the response headers that I obtained when visiting the TUT
website:
4
5.2.3 HTTP methods
• GET: used by the client to get a resource from the server. There’s no payload
sent to the server.
• POST: used by the client to send data to the server for processing. The sent
data becomes the payload not visible to the public.
• DELETE: used by the client to remove a resource from the server. The method
sends unique id of the resource to be removed.
• PUT: used by the client to update the state of a resource in the server. The
method sends a unique id of the resource to update, and the new data to be
used.
• HEAD: used by the client to check if certain resources are available in the
server. The server responds by sending back the headers, not the actual data.
• OPTIONS: used by the client to check the HTTP methods supported by the
server.
• TRACE: used for debugging/diagnostic purposes.
• CONNECT: used to start a two-way communication with the server.
5.3 Example
Problem statement
Create a web application that will allow a user to take an arithmetic test with five
questions. The application must first allow the user to enter her/his name. Upon
receiving the name, the application must greet the user using their name and explain
that there are five questions to be asked. The application must provide a link for the
user to start the test.
The application must give the user one question at a time. After the user has an-
swered a question, the application must determine and display the outcome. The
outcome must consist of the following information:
• The question asked;
• The answer of the user;
• The correct answer; and
• The outcome, that is whether the user got the question correct or not.
5
After all the questions have been asked and answered, the application must display
a summary report. The report must contain the following information:
• The total number of questions asked;
• The number of questions that the user got correct;
• The number of questions that he user got wrong; and
• The percentage mark obtained.
To do
Create such an application. First discuss the program flow, then identify MVC com-
ponents which should emanate from the discussion, show the project’s structure of
the solution. The structure must show identified components. Lastly, do the actual
coding.
Program flow
The application must have a welcome page. This should be an HTML file for presen-
tation. The HTML file will have a link to a servlet which will be responsible for start-
ing a session. The servlet will start and initialise the session. The servlet will then
forward control to a JSP that will allow the user to enter their name.
The JSP will send the name to a servlet that will store the given name on a session
object. Control will then be forwarded to a JSP which will greet the user by name
and state that there are five questions to be asked. The JSP will provide a link to a
servlet the user to start the test.
The link will take the program flow to a servlet that will get a question and send it
back to the user. The question will be displayed in a JSP. The JSP will have a text
field to allow the user to provide the answer. The answer of the user will be taken to
a servlet that will determine whether the answer is correct or not. The servlet will
also update the scores of the user.
The servlet will then forward control to a JSP that will display outcome. If all the
questions are exhausted, control will be taken to a summary page which will be a
JSP. After the summary has been displayed, program flow will be taken to a servlet
that will end the session, and forward control to the home page. If not all the ques-
tions have been asked, control will be taken to the servlet that retrieves questions
for answering by the user.
6
MVC components
Consequently our design will consist of the following MVC components:
Views
• index.html → a home page.
• name_entry.jsp → page that allows a user to enter her/his name.
• question.jsp → page that displays a question.
• outcome.jsp → page that displays outcome for each question asked.
• outcome2.jsp → page that displays outcome for the last question asked.
• summary.jsp → page that displays the test summary.
Controllers
• StartTestServlet.java → starts a test session.
• UserNameServlet.java → stores the user name on the session.
• QuestionServlet.java → returns a question.
• AnswerServlet.java → determines if the user’s answer is correct or not.
• EndSessionServlet.java → ends a test session.
Model
• QuestionsBank.java → generates questions.
7
Project structure
8
Implementation
o jsp
▪ name_entry.jsp
9
▪ greet.jsp
▪ question.jsp
10
▪ outcome.jsp
11
▪ outcome2.jsp
12
▪ summary.jsp
13
o servlet
▪ StartTestServlet.java
▪ UserNameServlet.java
14
▪ QuestionServlet.java
▪ AnswerServlet.java
15
▪ QuestionServlet.java
16
o model
▪ QuestionsBank.java
o xml
▪ web.xml
17
2. Compile source code
Open the command line.
18
Compile QuestionsBank.java
19
Check under the classes folder.
20
View inside the src folder.
Expand WebTestApp.
21
Change etc to WEB-INF.
22
5. Deploy the web application
Copy the WebTestApp folder from the deployment and paste it on the webapps
folder of Tomcat.
Expand WebTestApp.
Expand WEB-INF.
23
Go to the bin directory of Tomcat.
24
Start Tomcat by typing ”startup” on the command line and then click the Enter key.
Output:
The WebTestApp application is deployed in 104 ms.
Note:
▪ http: is the protocol used to communicate between the browser and the Web
Server, Tomcat.
localhost: is the address of the machine that hosts the Web Server. In this in-
stance the Web Server is running on the local machine.
▪ 8080: is the port where the Web Server is running.
▪ WebTestApp: is the name of the web application deployed on the server that
we want to talk to.
25
Output:
Enter name.
26
Click on the link.
27
Click on the link.
28
Click on the link.
29
Click on the link.
30
Click on the link.
31
Click on the link.
7. Stop Tomcat
Stop Tomcat by typing ”shutdown” on the command line and then click the Enter
key.
32
Try to run the web application whilst the server is down. An error takes place.
Task #1
Tumelo wants a toss-guessing game that can be played by a human and a
computer. When the game starts, the computer tosses the coin and ask the user to
guess the toss. If the user guesses correctly, his/her score is incremented by one
and takes over the toss. Otherwise, if the guess is incorrect, the score of the
computer is incremented and it continues with the toss.
The application must keep track of the number of tosses. After each toss,
appropriate messages must be displayed confirming the winner and loser. The user
must be asked if she/he wants to proceed with the game. If so, the winner of the
toss must do the tossing, otherwise the following game summary must be displayed:
• The number of tosses made.
• The number of tosses won by the computer.
• The number of tosses won by the user.
Tumelo requests that you create such a web application for him.
33
Task #2
Ms Mujinga is a teacher at institution ABC. She needs a web application that will
allow her to set a TRUE/FALSE test of 10 questions. This type of test requires that
when she sets it, she provides both the question and the answer. She wants her
students to able to take a test.
The test questions must be randomly given to the students so that not two students
sitting next to each other will get the same question. A student must be given one
question at a time. After that the next question must be provided until all the
questions have been answered. At the end of the test, a summary report must be
displayed. The report must provide the following infomation:
• The question asked, the correct answer , the user’s answer, and the mark
obtained (1 or 0).
• The percentage mark obtained.
Task #3
Mamazala is running a thriving business in Soshanguve, selling kotas/sphatlhos to
customers. The table below shows the pricelist for the kotas.
She needs a web application that will help her run the business. The application
must be capable of doing the following:
• Serve a customer by doing the following:
✓ Display the kota menu shown in the above table.
✓ Allow her to enter the kota code and quantity. The application must also
allow for the user to add into the order other kotas.
✓ Determine and display the amount due for the order.
✓ Accept money tendered by the client and give appropriate change.
✓ Update the total daily amount made.
34
• Serve the next customer.
• Display the following information when the shop gets closed:
✓ The total number of kotas bought.
✓ The number of kotas bought per code.
✓ The total daily amount made.
5.5 Conclusion
35