exercise that uses hidden forms for session tracking

R

ros

Hello all,

I am working on an exercise ( yes, it is an exercise) that has the
following requirements:

-Create a new servlet called RemoveItemsFromCart.java.

-Get it working with ReviewShoppingCart.java and
AddToShoppingCart.java.

-You will need to edit ReviewShoppingCart.java to add another button
that calls RemoveItemsFromCart.java

I have created the new servlet and the three are pasted below.

But my problem is that when I click the Remove button nothing happens.
I uncheck the checkboxes but when I hit Remove, they come back
selected.

I would be really thankful if someone guides me on this exercise.
Causing me a lot of headache. Please advise if I am following an
incorrect approach and if so what I should do.

Thanks in advance.
ros

==================================================================================

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class AddToShoppingCart extends HttpServlet {

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

response.setContentType( "text/html" );
PrintWriter aPW = response.getWriter();
aPW.println( "<HTML><HEAD><TITLE>Shopping Basket using Hidden
Forms" + "</TITLE></HEAD><BODY>" );
aPW.println( "<FORM ACTION='ReviewShoppingCart'
METHOD=GET>" );
aPW.println( "Add to Basket:<BR><BR>" );
aPW.println( "<INPUT TYPE='checkbox' NAME='items'
VALUE='Socks $4.0'>Socks $4<BR>" );
aPW.println( "<INPUT TYPE='checkbox' NAME='items'
VALUE='Shoes $30.0'>Shoes $30<BR>" );
String items[] = request.getParameterValues( "items" );
if ( items != null ) {
for ( int i=0; i < items.length; i++ ) {
aPW.println( "<INPUT TYPE=hidden NAME=items VALUE='" +
items + "'>" );
}
}
aPW.println( "<BR><INPUT TYPE=submit VALUE='View Basket'>" );
}
}

==================================================================================

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class RemoveItemsFromCart extends HttpServlet {

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

response.setContentType( "text/html" );
PrintWriter aPW = response.getWriter();
aPW.println( "<HTML><HEAD><TITLE>Shopping Basket using Hidden
Forms" + "</TITLE></HEAD><BODY>" );
String newItems[] = request.getParameterValues( "items" );
aPW.println( "Basket's contents:<BR><BR>" );
if ( newItems != null ) {
float count = 0;
aPW.println( "<UL>" );
for ( int i=0; i < newItems.length; i++ ) {
int positionOfPound = newItems.indexOf( "$" ) + 1;
String numberStr =
newItems.substring( positionOfPound );
System.out.println( "positionOfPound = " +
positionOfPound );
System.out.println( "numberStr = " + numberStr );
float price = Float.parseFloat( numberStr );
count = count + price;
aPW.println( "<LI>" + newItems + "<input
type='checkbox' checked='checked' name='items' value='" + newItems
+ "'" + " />");
}
aPW.println( "<BR><BR>Total: $" + count );
aPW.println( "</UL>" );
}

aPW.println( "<FORM ACTION='AddToShoppingCart' METHOD=GET>" );
if ( newItems != null ) {
for ( int i=0; i < newItems.length; i++ ) {
aPW.println( "<INPUT TYPE=hidden NAME=items VALUE='" +
newItems + "'>" );
}
}
aPW.println( "<BR><INPUT TYPE=submit VALUE='Add more
items'>" );
aPW.println( "</FORM>" );

aPW.println( "<FORM ACTION='ReviewShoppingCart'
METHOD=GET>" );
if ( newItems != null ) {
for ( int i=0; i < newItems.length; i++ ) {
aPW.println( "<INPUT Type=hidden NAME=items VALUE='" +
newItems + "'>" );
}
}
aPW.println( "<BR><INPUT TYPE=submit VALUE='Remove items'>" );
aPW.println( "</FORM></BODY></HTML>" );
}

}

==================================================================================

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class ReviewShoppingCart extends HttpServlet {

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

response.setContentType( "text/html" );
PrintWriter aPW = response.getWriter();
aPW.println( "<HTML><HEAD><TITLE>Shopping Basket using Hidden
Forms" + "</TITLE></HEAD><BODY>" );
String items[] = request.getParameterValues( "items" );
aPW.println( "Basket's contents:<BR><BR>" );
if ( items == null ) {
aPW.println( "No items in basket yet" );
} else {
float count = 0;
aPW.println( "<UL>" );
for ( int i=0; i < items.length; i++ ) {
int positionOfPound = items.indexOf( "$" ) + 1;
String numberStr =
items.substring( positionOfPound );
System.out.println( "positionOfPound = " +
positionOfPound );
System.out.println( "numberStr = " + numberStr );
float price = Float.parseFloat( numberStr );
count = count + price;
aPW.println( "<LI>" + items + "<input
type='checkbox' checked='checked' name='items' value='" + items +
"'" + " />");
}
aPW.println( "<BR><BR>Total: $" + count );
aPW.println( "</UL>" );
}

aPW.println( "<FORM ACTION='AddToShoppingCart' METHOD=GET>" );
if ( items != null ) {
for ( int i=0; i < items.length; i++ ) {
aPW.println( "<INPUT TYPE=hidden NAME=items VALUE='" +
items + "'>" );
}
}
aPW.println( "<BR><INPUT TYPE=submit VALUE='Add more
items'>" );
aPW.println( "</FORM>" );

aPW.println( "<FORM ACTION='RemoveItemsFromCart'
METHOD=GET>" );
if ( items != null ) {
for ( int i=0; i < items.length; i++ ) {
aPW.println( "<INPUT TYPE=hidden NAME=items VALUE='" +
items + "'>" );
}
}
aPW.println( "<BR><INPUT TYPE=submit VALUE='Remove items'>" );
aPW.println( "</FORM></BODY></HTML>" );
}
}
==================================================================================
 
T

Tim B

ros said:
But my problem is that when I click the Remove button nothing happens.
I uncheck the checkboxes but when I hit Remove, they come back
selected.

I have admittedly not looked at your code, but your problem is probably
caused by the fact that no request parameters are sent by the browser for
checkboxes that are not checked. You can get around this by using hidden
fields with values set by javascript, or if you know all the names of the
checkboxes, you can determine which parameters are missing from the request
and deal with them accordingly.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top