JAVA Help. I am stuck. Assignment: Revise the survey sample servlet Survey.java
ID: 3916186 • Letter: J
Question
JAVA Help. I am stuck.
Assignment:
Revise the survey sample servlet Survey.java to record the number of votes so far in the data file and then display that count every time a vote is submitted or a survey result is requested. Also, change the output table so that its data is a percentage of the total votes for the particular gender category.
CODE:
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Survey extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int[] votes = null;
int index;
int vote;
File survdat = new File("survdat.ser");
String gender;
String[] products = {"TV", "Digital Camera", "MP3 player", "DVD player/recorder", "Camcorder", "PDA", "Other"};
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Return message</title>");
out.println("</head>");
out.println("<body>");
synchronized (this) {
try {
if (survdat.exists()) {
ObjectInputStream indat = new
ObjectInputStream(new FileInputStream(survdat));
votes = (int[]) indat.readObject();
indat.close();
}
else {
votes = new int[14];
}
} catch (Exception e) {
e.printStackTrace();
}
gender = request.getParameter("gender");
vote = Integer.parseInt(request.getParameter ("vote"));
if (gender.equals("male")) {
vote += votes. / 2;
}
votes[vote]++;
ObjectOutputStream outdat = new ObjectOutputStream(
new FileOutputStream(survdat));
outdat.writeObject(votes);
outdat.flush();
outdat.close();
}
out.println(
"<h3> Thank you for participating in the Consumer Electronics Survey </h3>");
out.println("<h4> Current Survey Results: </h4>");
out.println("<h5> For Female Respondents </h5>");
for (index = 0; index < votes.length / 2; index++) {
out.print(products[index]);
out.print(": ");
out.println(votes[index]);
out.println("<br />");
}
out.println("<h5> For Male Respondents </h5>");
for (index = votes.length / 2; index < votes.length; index++)
{
out.print(products[index - (votes.length / 2)]);
out.print(": ");
out.println(votes[index]);
out.println("<br />");
for (index = 0; index < votes.length; index++) {
out.println("<br />");
out.print(votes[index]);
out.print(": ");
out.println(votes[index]); } }
out.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
HTML:
Welcome to the Consumer Electronics Purchasing Survey
Your Gender:
Female
Male
TV
Digital Camera
MP3 player
DVD player/recorder
Camcorder
PDA
Other
Explanation / Answer
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Survey extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
int[] votes = null;
int index;
int vote;
File survdat = new File("survdat.dat");
String gender;
String[] products = {"TV", "Digital Camera", "MP3 player", "DVD
player/recorder", "Camcorder", "PDA", "Other"};
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Return message</title>");
out.println("</head>");
out.println("<body>");
try
{
if (survdat.exists())
{
ObjectInputStream indat = new ObjectInputStream(new
FileInputStream(survdat));
votes = (int[]) indat.readObject();
indat.close();
}
else
{
votes = new int[14];
}
}
catch (Exception e)
{
e.printStackTrace();
}
gender = request.getParameter("gender");
vote = Integer.parseInt(request.getParameter ("vote"));
if (gender.equals("male"))
vote += 7;
votes[vote]++;
ObjectOutputStream outdat = new ObjectOutputStream(new
FileOutputStream(survdat));
outdat.writeObject(votes);
outdat.flush();
outdat.close();
}
out.println("<h3> Thank you for participating in the Consumer
Electronics Survey </h3>");
out.println("<h4> Current Survey Results: </h4>");
out.println("<h5> For Female Respondents </h5>");
for (index = 0; index < 7; index++)
{
out.print(products[index]);
out.print(": ");
out.println(votes[index]);
out.println("<br />");
}
out.println("<h5> For Male Respondents </h5>");
for (index = 7; index < 14; index++)
{
out.print(products[index - 7);
out.print(": ");
out.println(votes[index]);
out.println("<br />");
}
//Code for counter
int i,cnt=0;
Cookie Cookies[] = request.getCookies();
if(Cookies !=null)
{
for(i=0;i<Cookies.length;i++)
if(Cookies[i].getName().equals("counter"))
{
cnt = Integer.parseInt(Cookies[i].getValue());
cnt++;
out.println(" <h7> Number of Time Visit : "+cnt);
}
}
else
{
out.println("Welcome User!!!");
cnt = 1;
}
Cookie c = new Cookie("counter",Integer.toString(cnt));
response.addCookie(c);
out.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
processRequest(request, response);
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.